Power BI kullanıcıları için, başlıklar oluşturup yanlarına verileri getirmek, Excel’deki alışkanlıkların ötesinde biraz daha sofistike görünebilir. Ancak endişelenmeyin; Power BI’da bu işlemleri gerçekleştirmek, aslında sandığınızdan çok daha kolay. Bugün, DATATABLE() DAX fonksiyonu ile sıfırdan bir tablo oluşturacağız, satırlarına isimler verip yanlarına ölçüler ekleyeceğiz ve ardından bu tabloyu Power BI veri modeline entegre ederek dinamik bir hale getireceğiz. Bu sayede Power BI’daki veri modeliniz, Excel’deki esneklik ve gücü de barındıracak şekilde gelişmiş olacak. Hadi başlayalım!
İlk olarak, veri tablomuzu oluşturarak işe başlayalım. Ancak, bu tablo yalnızca satış tutarlarıyla sınırlı kalmasın. Power BI’da, işletmenizin tüm sisteminden veri çekebilme yeteneğiniz var. Bu da demek oluyor ki, farklı kaynaklardan gelen verileri birleştirip analiz edebilir ve daha geniş bir perspektiften iş sonuçlarına ulaşabilirsiniz. Örneğin, satış verilerinizin yanında müşteri geri bildirimleri, tedarik zinciri verileri veya pazarlama kampanyalarının performansını da bu tabloda toplamak mümkün. Bu çok yönlü veri toplama ve analiz yeteneği, raporlarınızı daha zengin hale getirir ve iş kararlarınızı daha veriye dayalı bir şekilde yönlendirebilmenize olanak tanır.
VAR Tablo1 =
DATATABLE(
"Ölçü Adı", STRING,
{
{"Kar"},
{"Proses(1) Verimlilik"},
{"Materyal(1) Sapma%"}
}
)
RETURN Tablo1
Veri tablomuzda 3 satır var. Bu satırların yanlarına istediğimiz ölçüleri getirmek istiyoruz. Yeni bir sütun ekleyelim ve her satır için hangi ölçünün çalışacağını tanımlayalım.
Datatable =
VAR Tablo1 =
DATATABLE(
"Ölçü Adı", STRING,
{
{"Kar"},
{"Proses(1) Verimlilik"},
{"Materyal(1) Sapma%"}
}
)
VAR _sutunekle =
ADDCOLUMNS(
Tablo1,
"Ölçü Değeri",
SWITCH(
TRUE(),
//tablo 1'deki "Ölçü Adı" sütununu filtreleyelim
[Ölçü Adı] = "Kar", [Kar hesaplama ölçüsü],
[Ölçü Adı] = "Proses(1) Verimlilik",[Verimlilik hesaplama ölçüsü],
[Ölçü Adı] = "Materyal(1) Sapma%", [Sapma hesaplama ölçüsü]
)
)
RETURN _sutunekle
Tablomuz statik olarak hazır ve statik tablo güvenli sonuçlar üretir. Ancak Power BI raporlarında genellikle, tabloyu dinamik hale getirip filtrelerle etkileşimli olarak çalışmasını isteriz. Bu aşamadan sonra dinamik tablo oluşturma yaklaşımından bahsedebiliriz. Dinamik tablo oluşturmak mümkünse de bu yöntemi uygulamak riskli. Veri modelinde olan ya da gelecekte oluşabilecek sorunlar döngüsel bağımlılık hatasına neden olarak raporun çalışmasını engelleyebilir. Tabloları Power Query’de oluşturmak hata oluşma olasılığını ortadan kaldırmak için daha güvenli bir yaklaşım olur. Hatırlatmamızı yaptıktan sonra örneğimize dönebiliriz.
Diyelim ki bu tabloyu bir rapora koyduk ve tarih filtreleriyle çalışmasını istiyoruz. İkinci tablo olarak bir tarih tablosu oluşturalım, her iki tabloyu birleştirelim ve ölçülerimizi ekleyelim.
Datatable =
VAR Tablo1 =
DATATABLE(
"Ölçü Adı", STRING,
{
{"Kar"},
{"Proses(1) Verimlilik"},
{"Materyal(1) Sapma%"}
}
)
// Tarih tablosu oluşturalım
VAR Tablo2 = CALENDAR("2023/1/1","2024/12/31")
// İki tabloyu çapraz birleştirelim
VAR TabloBirlestir = CROSSJOIN(Tablo1, Tablo2)
// Oluşan tabloya sütun ekleyelim ve ölçüleri getirelim
VAR _sutunekle =
ADDCOLUMNS(
TabloBirlestir,
"Ölçü Değeri",
SWITCH(
TRUE(),
[Ölçü Adı] = "Kar", [Kar hesaplama ölçüsü],
[Ölçü Adı] = "Proses(1) Verimlilik",[Verimlilik hesaplama ölçüsü],
[Ölçü Adı] = "Materyal(1) Sapma%", [Sapma hesaplama ölçüsü]
)
)
RETURN _sutunekle
Artık tarih filtreleriyle de çalışabilen dinamik bir tablomuz var! Power BI model sekmesine giderek, DATATABLE ve Tarih tabloları arasında ilişki oluşturduktan sonra tablomuz kullanıma hazır hale gelecek.
Burada önemli bir noktayı vurgulamakta fayda var: Oluşturulan her yeni tablo, veri modelini genişletir. Birkaç bin satırlık bir tablo performans açısından pek hissedilmese de, büyük veri setleri içeren tablolar oluşturulurken performans değerlendirmesi yapmak önemlidir.
Diyelim ki tarih tablosu değil de ürün kategorisine göre ilişki oluşturmak istiyoruz:
Datatable =
VAR Tablo1 =
DATATABLE(
"Ölçü Adı", STRING,
{
{"Kar"},
{"Proses(1) Verimlilik"},
{"Materyal(1) Sapma%"}
}
)
//benzersiz ürün kategorilerini alalım
VAR Tablo2 = DISTINCT(ProductCategory[ProductCategory])
// iki tabloyu çapraz birleştirelim
VAR TabloBirlestir = CROSSJOIN(Tablo1, Tablo2)
// Oluşan tabloya sütun ekleyelim ve ölçüleri getirelim
VAR _sutunekle =
ADDCOLUMNS(
TabloBirlestir,
"Ölçü Değeri",
SWITCH(
TRUE(),
[Ölçü Adı] = "Kar", [Kar hesaplama ölçüsü],
[Ölçü Adı] = "Proses(1) Verimlilik",[Verimlilik hesaplama ölçüsü],
[Ölçü Adı] = "Materyal(1) Sapma%", [Sapma hesaplama ölçüsü]
)
)
RETURN _sutunekle
Tablo2 tanımlanırken benzersiz ürün kategorisi bilgisini almak için VALUES() fonksiyonunu kullandığınızda, ilişki oluşturma sırasında döngüsel başvuru (circular dependency) hatası almanız olasıdır. Bu hata, genellikle iki veya daha fazla sütunun birbirine döngüsel olarak bağlı olması nedeniyle ortaya çıkar. VALUES() fonksiyonu boş satırlara başvurduğunda, bu döngüsel başvuru sorununu tetikleyebilir. Bu durumda, formülünüzde VALUES() yerine DISTINCT() kullanarak döngüsel başvuru hatasını önleyebilir ve gerekli ilişkiyi kurabilirsiniz.
Güvenli yöntem olarak Tablo1 ve Tablo2’yi Power Query’de oluşturarak ve birleştirerek, sonrasında sutunekle adıyla tanımladığımız formülün SWITCH() adımını hesaplanmış sütun olarak ekleyebilirsiniz.
Bugün DATATABLE() fonksiyonu ile bir tablo oluşturup, yanlarına ölçüler ekledik. Power BI’da DATATABLE() fonksiyonu sayesinde tablolarınızı istediğiniz şekilde organize ederek, raporlarınıza yeni bir boyut kazandırabilirsiniz. Verilerinizi özetleyip doğru bir yapı kurmak, Power BI raporlarınızda yalnızca yer kazancı sağlamakla kalmaz, aynı zamanda anlatımınızı da daha net ve kolay anlaşılır hale getirir. Bilgilerin etkili bir şekilde sunulması, raporlarınızın başarısını doğrudan etkileyen önemli bir faktördür.