Power BI ile ilgili sık gelen sorulardan biri, çoklu şube-çoklu firma modelinde ilişkilerin nasıl oluşturulacağı yönünde.
Örneğin aşağıdaki gibi bir data yapısı olsun: Master ürünler tablosunda ürün kodları birden fazla firmada aynı olabilir!
Power BI’da iki tablo arasında ilişki kurabilmenin genel kuralları şöyle:
- İki tablo arasında ilişki tek sütun üzerinden kurulabilir.
- İlgili sütunların tipi her iki tabloda da aynı olmalıdır. Sütunların isimleri farklı olabilir.
- İlişkinin “one” tarafındaki (master tablo) sütun sadece tekil değerler içerebilir, duplike kayıtlar olamaz.
- İki tablo arasında birden fazla ilişki kurulabilir, ilişkilerden aynı anda sadece bir tanesi aktif olabilir, diğer ilişkiler inaktif durumdadır. İnaktif ilişkiyi kullanarak hesaplama yapmak istediğinizde CALCULATE ve USERELATIONSHIP kombinasyonunu kullanmak gerekir.
Yukarıdaki örnek datada ürün kodları tekil değil, satırı tekilleştiren şey Firma Kodu ve Ürün Kodu sütunlarının kombinasyonu. Tablolar arasında ilişki tek sütun üzerinden kurulur kuralı bir kısıtmış gibi gelebilir ama aslında değil. İki sütunu birleştirerek yeni bir kompozit sütun elde edebiliriz. Aynı şeyi fact tablolarında da (transaction) yaparak iki tabloyu birleştirebiliriz. Lazım olan tek şey gerekli tüm tablolarda bu sütunları bir hesaplanmış sütun olarak birleştirmek.
Ürün Anahtar = 'Ürünler'[Firma Kodu] & "-" & 'Ürünler'[Ürün Kodu]
Anahtar = 'Satışlar'[Firma Kodu] & "-" & 'Satışlar'[Ürün Kodu]
Standart “string” birleştirme yukarıdaki gibi, alternatif olarak COMBINEVALUES fonksiyonunu kullanarak da yeni bir sütun oluşturabiliriz. Direct Query modundaki modellerde çoklu sütunları bu fonksiyonla birleştirmekte fayda var, zira bu fonksiyon tam da bu amaçla eklenmiş DAX’a.
Anahtar = COMBINEVALUES( "-" ; 'Ürünler'[Firma Kodu] ; 'Ürünler'[Ürün Kodu] )
Aynı birleştirme işlemini Power Query tarafında da yapabiliriz.
Anahtar = Text.Combine({[Firma Kodu] , "-", Text.From([Ürün Kodu])})
Çoğu ERP’de çoklu firma yapısı hali hazırda mevcut. Yukarıdaki yöntem doğrudan uygulanabilir. Fakat bazı uygulamaların veri tabanı yapısı tek firmaya göre tasarlanmış ve her firma için ayrı ayrı veritabanları var.
Bu durumu her firma için aynı tablolara bağlanıp, tablolara firma kodu içeren bir sütun ekledikten sonra bu tabloları Power Query tarafında “append” ederek, yani tabloları ucuca ekleyerek çözebiliriz.
Birleştirilen tabloları gereksiz bir kalabalık yaratmamak adına Power BI tarafına aktarmamakta fayda var. Bize lazım olan sadece append edilmiş olan tablo, diğerlerini “load” etmeye ihtiyacımız yok. İlgili tabloların “enable load” tikini kaldırmak gerekiyor. Konuyla ilgili yazıya buradan ulaşabilirsiniz.
SQL tarafında tabloları birleştiren ortak bir veritabanını da kullanabilirsiniz. Kişisel fikrim PQ ile yapmanın daha kolay olduğu yönünde.
Son bir not da her yıl yeni veritabanı açarak çalışan ERP’ler için, aynı yöntem, yani lazım olan tabloları append yoluyla birleştirme işlemi bu durumlar için de kullanılabilir, sadece devir hareketlerini almamak gerekiyor.