Üç komut, üç farklı dönüş
| Komut | Ne yapar | Önce | Sonra |
|---|---|---|---|
| Unpivot | Sütunları satıra çevirir: genişten uzuna | Kategori | Oca | Şub | Kategori | Ay | Hedef |
| Pivot sütunu | Bir sütunun değerlerini başlık yapar: uzundan genişe | Bölge | Ay | Tutar | Bölge | Oca | Şub | Mar |
| Transpose | Tabloyu çevirir: her satır sütun, her sütun satır olur | Satır başlıkları solda | Column1, Column2, ... |
Yıldız şemada olgu tablosu uzun olur: ay bir sütundur, ölçü bir sütundur. Unpivot bu yüzden Pivot’tan çok daha sık kullanılır. Pivot’u sunum için ya da satır başına bir nesne gerektiğinde (örneğin her müşteri için tek satır, anahtar ve değer çiftlerinden gelen veri) kullan.
Unpivot: Diğer mi, Seçili mi?
Şeritte üç komut var. Learn’e göre Unpivot columns ve Unpivot other columns yenilemede yeni sütunu da satıra çevirir; Unpivot only selected columns çevirmez. Kod düzeyinde fark şu iki işlevdedir:
Table.UnpivotOtherColumns(Hedefler, {"Kategori"}, "Ay", "Hedef")
Table.Unpivot(Hedefler, {"Oca", "Şub"}, "Ay", "Hedef")
İlki yalnız sabit kalacak sütunu yazar; yeni ay gelince o da satıra döner. İkincisi dönecek sütunları yazar; yeni ay sütun olarak kalır. Aylık büyüyen dosyada Other Columns doğrudur. Unpivot Only Selected ise yeni sütun dönmesin istediğin dosyalarda doğrudur. Hangi kodun üretildiğini formül çubuğundan oku. null hücreler satır üretmez: Giyim’in Mart’ı yok, sonuçta o satır da yoktur.
Pivot: değer listesi ve toplama
Pivot sütunu kutusu değer sütununu ve toplama işlevini sorar. Learn’deki iki durum:
Table.Pivot(
Table.FromRecords({
[key = "x", attribute = "a", value = 1],
[key = "x", attribute = "c", value = 3],
[key = "x", attribute = "c", value = 5],
[key = "y", attribute = "a", value = 2]
}),
{"a", "b", "c"}, "attribute", "value", List.Max
)
Toplama işlevini silersen, “x ve c” kesişimine iki değer düştüğü için o hücre hata olur. Kesişimi olmayan hücreler null gelir. Şerit değer listesini List.Distinct(t[Ay]) diye yazar; yenilemede yeni ay yeni sütun demektir. Bu modelin sütun yapısını değiştirir, bu yüzden model tablosunda pivot riskli, son sunum adımında daha güvenlidir.
Transpose: başlık kaybolur
Transpose sütun adlarını siler. Korumak için önce Use headers as first row (Başlıkları ilk satıra indir), sonra Transpose, sonra Use first row as headers:
let
Indir = Table.DemoteHeaders(Hedefler),
Cevir = Table.Transpose(Indir),
Basliklar = Table.PromoteHeaders(Cevir)
in
Basliklar
Sonuçta her kategori bir sütun, her ay bir satır olur. Transpose genellikle Excel’deki yan yatık özet tablolarını düzeltmek içindir. Çift başlıklı tablo gibi işlerde Unpivot ile birlikte kullanılır.