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

Table işlevlerini elle yazmak: grupla, pivot, unpivot, birleştir

Table.Group, Table.Pivot, Table.UnpivotOtherColumns, Table.NestedJoin, Table.Transpose, Table.TransformColumns; şeridin ürettiği kodu sadeleştirmek.

Uygulamada aç, 12 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ç.

Adımlar tablo alır, tablo döndürür

Table işlevlerinin ilk bağımsız değişkeni tablodur, sonucu da tablodur. Bu yüzden adımlar zincirlenir. Şeridin yazdığı kod çoğu zaman tek bir ifadeye indirilebilir, ama okunurluk için adlı adımları koru.

Table.Group: agregasyon listesi

Üçüncü bağımsız değişken {ad, fonksiyon, tür} listelerinin listesidir. Fonksiyona o grubun alt tablosu gelir; [Tutar] bu yüzden tek değer değil listedir.

Table.Group(
    Satislar,
    {"Şehir"},
    {
        {"Toplam", each List.Sum([Tutar]), type number},
        {"Sipariş", each Table.RowCount(_), Int64.Type}
    }
)
TuzakFonksiyon each _ olursa her grubun hücresine alt tablo düşer. “Tüm satırlar” seçeneği budur; ilk satırı alma ya da grup içi sıralama gibi kalıplar buna dayanır.

Table.Pivot ve Table.UnpivotOtherColumns

Pivot’un ikinci bağımsız değişkeni, sütun olacak değerlerin listesidir. Şerit bunu List.Distinct(t[Ay]) diye yazar. Sabit liste yazarsan yeni ay sütun açmaz. Aşağıdaki kodda Ege’nin Mart’ı yoktur: o hücre null gelir.

Table.Pivot(Aylik_Satis, List.Distinct(Aylik_Satis[Ay]), "Ay", "Tutar", List.Sum)
Table.UnpivotOtherColumns(Hedefler, {"Kategori"}, "Ay", "Hedef")

Giyim’in Mart hücresi null olduğundan unpivot satırı üretmez: 12 yerine 11 satır çıkar. Bu, ürünün bilinen davranışıdır; Learn sayfası ayrıca yazmıyor. Rapor toplamını değiştirmez ama satır sayısını şaşırtabilir.

Birleştirme: NestedJoin ve genişletme

let
    Birlesik = Table.NestedJoin(Bayi_Subat, {"Şehir"}, Sehir_Bolge, {"Şehir"}, "Eslesme", JoinKind.LeftOuter),
    Acik = Table.ExpandTableColumn(Birlesik, "Eslesme", {"Bölge"})
in
    Acik

Table.NestedJoin eşleşen satırları hücrede tablo olarak tutar, Table.ExpandTableColumn açar. Şeridin “Merge” komutu da aynı kodu üretir. Table.Join doğrudan düz sonuç verir. Aynı adlı anahtar sütun sonuçta bir kez görünür (Learn örnek 1). Anahtar dışında aynı adlı sütun varsa Learn davranışı yazmıyor, örnek 2 Table.PrefixColumns ile çakışmayı önlüyor; bu alt küme hata verir.

Sütun dönüştürme ve tür

let
    Basliklar = Table.PromoteHeaders(Musteri_Ham),
    Temiz = Table.TransformColumns(Basliklar, {{"E-posta", Text.Lower, type text}, {"Ad Soyad", each Text.Proper(_, "tr-TR"), type text}}),
    Tipli = Table.TransformColumnTypes(Temiz, {{"MusteriNo", Int64.Type}}),
    Tekil = Table.Distinct(Tipli, {"MusteriNo"})
in
    Tekil

TransformColumns için alan adı {"Sütun", fonksiyon, tür} biçimindedir; fonksiyonun aldığı değer hücredir, satır değil. Bu yüzden [Alan] yazılmaz, _ yazılır.

SadeleştirmeUzun otomatik adların yerine kısa adlar kullan, gereksiz Changed Type adımlarını sil, aynı sütunu üç kez dönüştüren adımları birleştir. Kod kısalır, davranış aynı kalır.
Alıştırmalara geç (12)