İ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.
Dönüştür sekmesi
| Komut | Ne işe yarar | Ne zaman | Ürettiği M | Sı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. |
| Transpose | Satı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 Rows | Tabloyu 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. |
| Rename | Sü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 Errors | Değ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 Up | Boş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 Columns | Sü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. |
| Move | Sü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 Column | Sı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. |
| Format | Küçü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 Columns | Burada 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 / Parse | Metinden 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, Rounding | Sayı 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, Duration | Tarih 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 Script | Betikle 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
| Komut | Ne işe yarar | Ne zaman | Ürettiği M | Sı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 Column | Sü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 Text | Biçim, ayıklama, ayrıştırma. | Aslı korunacaksa. | Table.AddColumn(t, "Uzunluk", each Text.Length([Ad]), Int64.Type) | Metin olmayan hücrede Error. |
| From Number | Standart (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 & Time | Yı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.