Ana içeriğe geç
Kesit Power BI
Orta · Veri Hazırlama

Power Query menü haritası 2: Dönüştür ve Sütun ekle

Dönüştür ile Sütun ekle arasındaki fark; Pivot, Transpose, Satırları ters çevir, Convert to List, Column from Examples, Koşullu sütun, Invoke Custom Function ve sayı ile tarih komutları, M karşılıkları.

Uygulamada aç, 10 alıştırmayı çözÜcretsiz, hesap gerekmez, kurulum yok.

Bu sayfa dersin okuma sürümüdür. Metin bir kutuyu çalıştırmanı ya da adıma geçmeni söylüyorsa dersi uygulamada aç.

İki sekmenin tek farkı

Metin, sayı ve tarih komutlarının çoğu iki sekmede de var. Dönüştür seçili sütunu yerinde değiştirir ve Table.TransformColumns üretir. Sütun ekle asıl sütuna dokunmaz, sona yeni sütun açar ve Table.AddColumn üretir. Aslı sonra lazımsa Sütun ekle; kirli sütunu temizliyorsan Dönüştür.

Adlar hakkındaMicrosoft Learn’in Türkçe sayfalarında doğrulanan adlar Türkçe yazıldı: Giriş, Dönüştür, Sütun ekle, Görünüm, Araçlar, Sorgular, Uygulanan adımlar, Sorgu ayarları, Gelişmiş Düzenleyici, Kapat ve Uygula, Koşullu sütun, Dizin sütunu, Pivot sütunu, Satırları ters çevir. Doğrulayamadığımız komutlarda İngilizce ad ana addır, parantezdeki Türkçe yalnız açıklamadır. Masaüstünün Türkçe arayüzünde ad farklı olabilir; şerit sürümden sürüme de değişir. Bu ders Power BI Desktop açılarak değil, belgelerden hazırlandı.

Dönüştür sekmesi

KomutNe işe yararNe zamanÜrettiği MSık tuzak
Group By (Grupla)Satırları anahtara göre özetler.Olgu tablosunu özetlemek.Table.Group(t, {"Şehir"}, {{"Toplam", each List.Sum([Tutar]), type number}})Modelin ayrıntı düzeyini düşürür: sonradan detaya inemezsin. Çoğu toplam ölçü olarak daha iyidir.
Use First Row as Headersİlk satırı başlık yapar; aşağı açılırda tersi de var.CSV ya da Excel başlığı satırda kaldıysa.Table.PromoteHeaders(t, [PromoteAllScalars = true])Sonraki Changed Type adımı eski sütun adına bakarsa hata verir.
TransposeSatırları sütun, sütunları satır yapar.Excel’de yanlış yönde duran özet tablolar.Table.Transpose(t)Sütun adları kaybolur, Column1 olur. Korumak için önce başlıkları ilk satıra indir.
Satırları ters çevir (Reverse Rows)Sırayı tersine çevirir.Sondan ilk kayıt, yukarıdan doldurma.Table.ReverseRows(t)Değere göre sıralamaz.
Count RowsTabloyu tek sayıya indirir.Kontrol sorgusu.Table.RowCount(t)Sonuç tablo değil sayıdır, sonraki tablo adımları çalışmaz.
Detect Data Type (Veri türünü algıla)Tüm sütunlarda türü ilk 200 satırdan tahmin eder. Herhangi bir sütun grubunda.Yeni dosyada hızlı başlangıç.Table.TransformColumnTypes(t, {{"Tutar", type number}})Tahmindir. Posta kodu sayıya dönüşür, baştaki sıfır gider. Türü bilinçli ver.
RenameSütun adını değiştirir.Teknik adları iş diline çevirmek.Table.RenameColumns(t, {{"Tutar_TL", "Tutar"}})Sonra kaynak sütun adı değişirse bu adım hata verir.
Replace Values / Replace ErrorsDeğer ya da hata hücresini değiştirir.“-” işaretini null yapmak.Table.ReplaceValue(t, "-", null, Replacer.ReplaceValue, {"Tutar"})Hatayı 0 yapmak sorunu gizler: 0 ile bilinmiyor aynı görünür.
Fill Down / Fill UpBoşları komşu değerle doldurur.Birleştirilmiş Excel hücreleri.Table.FillDown(t, {"Kategori"})Yalnız null doldurur, boş metin ("") dolmaz: önce null’a çevir.
Pivot sütunu (Pivot Column)Bir sütunun değerlerini başlığa çevirir: uzundan genişe. Herhangi bir sütun grubunda.Sunum tablosu, satır başına bir nesne.Table.Pivot(t, List.Distinct(t[Ay]), "Ay", "Tutar", List.Sum)Toplama seçmezsen aynı kesişimde iki değer hücrede hata üretir. Yeni ay yeni sütun demektir; model için uzun tablo daha iyidir.
Unpivot Columns / Other ColumnsSütunları satıra çevirir: genişten uzuna.Ay sütunlu bütçe dosyaları.Table.UnpivotOtherColumns(t, {"Kategori"}, "Ay", "Tutar")Learn’e göre Unpivot Columns ve Other Columns yenilemede yeni sütunu da satıra çevirir. Unpivot Only Selected yeni sütunu dışarıda bırakır. null hücreler satır üretmez.
MoveSütun sırasını değiştirir.Okunurluk.Table.ReorderColumns(t, {"b", "a"})Sıra modele anlam katmaz, bağımlılık ekler.
Convert to List (Listeye dönüştür)Sütunu M listesine çevirir, tablo gider.Başka bir sorguya değer listesi vermek.t[Şehir]Sonuç liste olduğu için tablo komutları kaybolur; adımı silmek dışında yol yok.
Split ColumnSınırlayıcı ya da uzunlukla böler.Ad Soyad, kod ve ad.Table.SplitColumn(t, "Ad", Splitter.SplitTextByDelimiter(" ", QuoteStyle.Csv))Otomatik gelen sütun listesi kalıcıdır: Her sınırlayıcıda bölmede yeni parça yeni sütun açmaz.
FormatKüçük, büyük harf, kırpma, temizleme, önek.Eşleşme öncesi temizlik.Table.TransformColumns(t, {{"Şehir", Text.Trim, type text}})Her Sözcüğün İlk Harfi Büyük komutu kültür verilmezse Türkçe i ve ı’yı bozabilir.
Merge ColumnsBurada seçili sütunları tek sütunda toplar, aslı gider.Adres parçaları.Table.CombineColumns(t, {"a", "b"}, Combiner.CombineTextByDelimiter(" ", QuoteStyle.None), "c")Sütun ekle’deki aynı adlı komut aslı korur ve Text.Combine üretir.
Extract / ParseMetinden parça alır; JSON ve XML ayrıştırır.Kod ayıklama, API yanıtı.Table.TransformColumns(t, {{"Kod", each Text.Start(_, 3), type text}})JSON ayrıştırınca sütun kayıt olur; genişletmeden yüklenemez.
Standard, Scientific, RoundingSayı işlemleri sütunun üstüne yazar.Birim çevirmek.Table.TransformColumns(t, {{"Tutar", each _ * 1.2, type number}})Asıl değer gider; KDV gibi durumlarda çoğu kez Sütun ekle gerekir. Yuvarlama varsayılanı bankacı yuvarlamasıdır.
Date, Time, DurationTarih sütununu yıl, ay gibi parçaya çevirir.Eksik takvim alanı.Table.TransformColumns(t, {{"Tarih", Date.Year, Int64.Type}})Metin tarihte Error verir; önce türü düzelt. Rapor için Tarih tablosu daha doğrudur.
Expand / Aggregateİç içe tablo ya da kaydı açar.Birleştirmeden sonra.Table.ExpandTableColumn(t, "b", {"Bölge"})Listeyi elle seç: “tüm sütunlar” kalıcı bir ad listesi yazar, yeni sütun gelmez.
Run R / Python ScriptBetikle dönüşüm yapar.İstatistik ya da özel işlem.Python.Execute("...")Ağ geçidi ve kişisel mod gerekir; hizmette kısıtları vardır.

Sütun ekle sekmesi

KomutNe işe yararNe zamanÜrettiği MSık tuzak
Column from Examples (Örneklerden sütun)Örnek değer yazarsın, dönüşümü kendisi bulur. From All Columns ya da From Selection.Formülü bilmediğinde ya da hızlıca.Table.AddColumn(t, "Kısa", each Text.BeforeDelimiter([Ad], " "), type text)Birkaç satıra uyan yanlış kuralı bulabilir. Üretilen M’yi oku; Tamam’dan önce kesinleşmez.
Custom Column (Özel sütun)M formülü yazarsın.Şerit yetmediğinde.Table.AddColumn(t, "KDVli", each [Tutar] * 1.2)Tür seçmezsen sütun Herhangi kalır. DAX yazılmaz: M büyük küçük harfe duyarlıdır.
Invoke Custom Function (Özel işlev çağır)Her satır için bir M fonksiyonu çağırır. Genel grubunda.Dosya okuma, ortak temizlik.Table.AddColumn(t, "Sonuç", each fnTemizle([Ad]))Fonksiyona sonradan parametre ekleyince çağıran adım hata verir: adımı yeniden aç, değeri gir.
Koşullu sütun (Conditional Column)Görsel if, else if. Genel grubunda.Basit sınıflama.Table.AddColumn(t, "Boy", each if [Tutar] > 1000 then "Büyük" else "Küçük")Learn: yeni koşullu sütunun türü tanımsızdır, Herhangi gelir, ayrıca tür ver. Maddeler yukarıdan aşağı denenir. null karşılaştırması hata üretir.
Dizin sütunu (Index Column)0, 1 ya da özel başlangıçla sıra numarası.Satır sırasını korumak, gruplamak.Table.AddIndexColumn(t, "Dizin", 0, 1, Int64.Type)Kalıcı anahtar değildir: kaynak sırası değişirse numara değişir. Filtreden önce ve sonra farklı sonuç verir.
Duplicate ColumnSütunun kopyasını sona ekler.Aslı koruyup kopyayı dönüştürmek.Table.DuplicateColumn(t, "Şehir", "Şehir - Kopya")Aynı veriyi iki kez yükleme: işin bitince kopyayı ya da aslı kaldır.
Merge Columns (Sütun ekle)Sütunları birleştirip yeni sütun açar, aslı kalır.Etiket, bileşik anahtar.Table.AddColumn(t, "Etiket", each Text.Combine({[a], [b]}, " "), type text)null parçalar atlanır. Bileşik anahtarda ayırıcı kullan: 1 ve 23 ile 12 ve 3 aynı metne dönüşmesin.
From TextBiçim, ayıklama, ayrıştırma.Aslı korunacaksa.Table.AddColumn(t, "Uzunluk", each Text.Length([Ad]), Int64.Type)Metin olmayan hücrede Error.
From NumberStandart (Modulo, Bölme (Tamsayı) dahil), bilimsel, yuvarlama, bilgi.Oran, KDV.Table.AddColumn(t, "Mod", each Number.Mod([Dizin], 3), type number)Tek sütun seçiliyken sabit değer sorar. İki sütun seçiliyken ikisini işler.
From Date & TimeYıl, ay, çeyrek, ayın başı, yaş.Tarih parçası gerekiyor.Table.AddColumn(t, "Yıl", each Date.Year([Tarih]), Int64.Type)Yaş gibi bugüne bağlı değerler yenilemede değişir.

Lab’de dene

Bu derste adı geçen komutların çoğu Power Query Lab şeridinde çalışıyor. Her adımın M’si, Lab’in içindeki yorumlayıcıda çalıştırılarak üretilir; yani gördüğün kod sonucu gerçekten üreten koddur. Lab’deki sayı ve tarih komutları tek bir Sayı işlemi ve Tarih işlemi kutusunda toplanmıştır.

Alıştırmalara geç (10)