Power BI’da Veri Modelleme ve Tablo İlişkileri

Herkese merhaba. Bu ayki konumuz Power BI’da veri modelleme ve tablo ilişkileri üzerine olacak.

Bugüne kadarki örneklerimizde hep tek tablo üzerinden çalıştık, fakat gerçek dünyada tüm veriler tek bir tabloda değil maalesef. Birçok tabloda birçok veri tutuluyor ve ihtiyacımıza uygun olarak tüm tablolardan faydalanmak istiyoruz. Power BI’da örneğin aynı görselde birden fazla tabloya ait verilerin hesaplandığı metrikler göstermek istiyoruz fakat bunu nasıl yapacağız? İşte bu sorunun cevabı tablo ilişkileri ve veri modellemede saklı.

Power BI içine aktarılan tüm tablolar arasında dolaşıp bu tablolardaki verileri bir arada görüntülemek için tablolar arasında ilişki kurulması gerekir. İlişkiler iki tablo arasında ve tek ortak sütun üzerinden kurulur. Bu sütunların ismi aynı olmak zorunda değildir, fakat veri tipleri aynı olmak zorundadır. Tablolar arasında birden fazla ilişki kurulabilir, fakat aynı anda sadece bir tanesi aktiftir, diğerleri pasiftir ve Power BI bu ilişkiyi kesikli çizgilerle belirtir. Aksi belirtilmedikçe Power BI hesaplamalarda aktif olanı kullanır.

Örneğimize geçmeden önce ilişki türleri ve ilişki yönleri hakkında bilgi verelim. Kabaca ilişki türleri üç tanedir. Bunlar 1-n, n-n ve 1-1’dir.

  • 1-n (Bire çok) İlişki: Bu ilişki türü Power BI’da varsayılan ilişki türüdür. Bunun anlamı, ilişki kurulan sütun değerlerinin bir tabloda eşsiz, diğer tabloda ise birden fazla olmasıdır. Yani, ilişkinin “1” tarafı tamamen tekil değerler içerir, buna karşılık diğer tabloda bu tekil değere karşılık birden fazla kayıt vardır.
  • 1-1 (Bire bir) İlişki: Bu ilişkiye sahip tablolar, tekil değerler içeren ortak sütun üzerinden birbirine bağlıdır.
  • n-n (Çoka çok) İlişki: Bu ilişki türü Power BI’a Temmuz 2018 güncellemesi ile beraber gelmiştir. Bundan önce tablolardan biri mutlaka tekil değerlere sahip olmalıydı. Bu güncellemeden sonra iki tabloda da çoklu değerler olduğu zaman ilişki kurulmasına olanak tanındı. Güncellemeden önce bu sorunu çözmek için tekil değerlere sahip ara tablo oluşturuluyordu ve iki tabloyla da bağlanıyordu.

Power BI’da ilişki kurulduğu zaman bu ilişkinin bir yönü olur. Bu yönün anlamı, raporda bir filtre uyguladığımız zaman bu filtrenin hangi tablodan hangi tabloya uygulanacağı ile ilgilidir. Bire çok ilişki kurulduğunda filtrenin akış yönü her zaman “1” tarafından “n” tarafınadır. Yani, tekil değerlerin olduğu tablodan bir değeri filtrelediğimizde, çoklu değerlerin olduğu tabloya gider ve filtrelediğimiz değere sahip kayıtları bize getirir.

Şimdi bir örnek yapalım. Önceki örneklerimizde olduğu gibi AdventureWorks2016 veritabanındaki tabloları kullanacağız. Bunun için “Production.Location”, “Purchasing.ShipMethod”, “Production.Product”, “Production.ProductInventory”, “Sales.SalesOrderDetail” ve “Sales.SalesOrderHeader” tablolarını aktarıyoruz. İlk yazımızda belirttiğimiz gibi ilişkilerin kurulacağı görünüme geliyoruz.

Şekil 1: Power BI’da İlişki Görünümü

Power BI varsayılan olarak, tablolar eklenince bu ilişkileri kendi tanımlamaya çalışır ve oluşturur. Eğer eşleştirecek sütunlar gördüyse ve eşleştirmeye uygunsa otomatik olarak ilişki tanımlar. Bu ilişkileri giriş menüsünde “İlişkileri Yönet” kısmından yönetebiliriz. Buradan ilişkilerin yönünü, ilişki sütunlarını değiştirebilir ve var olan ilişkileri silip yenilerini tanımlayabiliriz.

Tablolar arasında ilişki kurmanın temel olarak iki yolu vardır. Birincisi, ilişkilerin yönetildiği ekrandan tanımlamaktır. Örnek olarak “SalesOrderDetail” ile “SalesOrderHeader” arasında “SalesOrderId” üzerinden ilişki kuralım ve bunu menü üzerinden yapalım. “İlişkileri Yönet” butonuna tıklıyoruz ve açılan menüden ilişki kurulacak tabloları ve sütunları seçiyoruz.

Şekil 2: Menüden İlişki Tanımlama

Bir diğer yöntem, ilişkiler görünümünde iken tablolar arasında sürükle bırak yöntemiyle ilişki kurulmasıdır. Bunun için ilişki kurulacak sütundan diğer sütuna mouse basılı tutularak sürüklenir ve ilişki kurulmuş olur. Bu şekilde tablolar arasında tüm ilişkileri tanımladığımızda aşağıdaki görünümü elde ederiz.

Şekil 3: Tablolar Arasındaki İlişkilerin Görüntülenmesi

İlişkileri kurduktan sonra görünüme bir göz atalım. Ürün tablosundaki “ProductId” ile satış detayları tablosundaki “ProductId” sütunları arasında bir ilişki kurduk. Bu ilişkinin yönü satış detayları tablosuna olacak şekildedir. Bunu şöyle yorumlayabiliriz. Ürün tablosundan bir ürünü filtrelediğimiz zaman, raporda bu ürüne ait satış detaylarını görebiliriz; çünkü biz filtrelemeyi yaptıktan sonra ilgili filtre ilişki akış yönünde ilerler ve satış detayları tablosunu filtreler. Bu yorum, diğer ilişkiler için de geçerlidir.

Burada şu soru akla gelebilir. Tablolar arasında hangi sütunlar arasında ilişki kurmam gerektiğini nereden bileceğim? Burada önemli olan nokta, Power BI içinde kullanacağımız tabloları, sütunları ve veri tiplerini iyi tanıyıp tanımadığımızdır. “Dimension” (boyut tabloları) ve “Fact” (olay tabloları) tabloların iyi bir şekilde belirlenerek anahtar sütunların önceden tespit edilmesi modellemede işimizi kolaylaştıracaktır. Boyut tabloları, verilere bakış açımızı ifade eder. Örneğin satış adetlerini zaman, lokasyon, ürün kırılımı açısından incelemek isteyebiliriz. Burada zaman, lokasyon ve ürün boyuttur. Olay tabloları ise içinde formüle dayalı metriklerin bulunduğu tablolardır. Örneğin satış adetlerini içeren tablo veya envanter adetlerini içeren tablo gibi.

Power BI’da veri modelleme yapılırken ve ilişkiler kurulurken temel olarak iki yaklaşım takip edilir. Bunlar yıldız şeması ve kar tanesi şeması yaklaşımlarıdır. Yıldız şemasında ortada bir tane olay tablosu ve etrafında boyut tabloları bulunmaktadır. Kar tanesi şemasında ise, yine ortada olay tablosu ve boyut tablolarına bağlı başka boyut tabloları bulunmaktadır.

İlişkilerde dikkat ettiyseniz tarih tablosu ile kurulan ilişkilerden biri kesikli çizgilerle belirtilmiş. Bunun nedeni şudur. Biz ilk önce ilişkiyi sipariş tarihi üstünden kurduk, fakat ihtiyacımıza göre satışları “ShipDate” sütununa göre de görmek isteyebiliriz. Bu nedenle bu sütun üstünden de ilişki kurduğumuzda ilk önce pasif oluyor. Eğer bu ilişkiyi hesaplamalarımızda kullanmak istersek burada DAX yardımımıza koşar. “UseRelationship” komutu ile bu pasif ilişkiyi geçici olarak aktif hale getirebiliriz. Aradaki farkı görmek için iki tane metrik tanımlıyoruz. Biri “OrderDate” sütununa göre, diğeri de “ShipDate” sütununa göre hesaplama yapacak.

Şekil 4: Pasif İlişkiyi Aktif Hale Getirmek

Üstteki şekilde gördüğünüz üzere yükleme tarihlerine göre hesaplama yapacağımız zaman “Calculate” komutunun içinde “UseRelationship” kullanarak pasif olan ilişkiye göre hesaplama yapmasını söylüyoruz, bu şekilde ilişki pasif olsa bile bu ilişkiyi baz alıyor.

Son olarak tüm bu kurduğumuz ilişkileri kullanabileceğimiz bir tablo görseli oluşturalım ve her tablodan veri almaya çalışalım. Aşağıdaki şekilde göreceğiniz üzere ürün adı, rengi, gönderim biçimi, ürünün bulunduğu depo, raf, envanter ve satış adediyle bir tabloda görebiliyoruz.

Şekil 5: İlişkiler Sayesinde Tüm Tablolardaki Verilerin Kullanılması

Bu ayki yazımızda veri modelleme ve tablo ilişkilerini ele aldık. İlişkiler ile ilgili kuralları toparlamamız gerekirse:

  • Tablolar arasındaki ilişkiler veri modellemenin temelidir ve tüm tablolardan veri almamızı sağlar.
  • İlişki kurulan ortak sütun aynı veri tipinde olmalıdır, sütun adları aynı isimde olmayabilir.
  • İlişki tek bir sütun üzerinden kurulur. Birden fazla ilişki kurulursa ilki aktif, diğerleri pasif olur. Aynı anda iki aktif ilişki olamaz.
  • Pasif ilişki DAX komutu ile hesaplamalarda aktif hale getirilebilir.
  • İlişki yönü tek veya her iki yönde de olabilir. Tek yönde ise geçici olarak DAX komutu ile çift yapılabilir.

Bir sonraki yazımızda Power BI’ın önemli konularından biri olan akıllı zaman fonksiyonlarına giriş yapacağız ve bunların DAX diliyle yazılışlarını göstereceğiz.

Herkese keyifli okumalar!

Kaynakça

http://• https://powerbi.istanbul/veri-modeline-giris-tablo-iliskileri/

http://• https://powerzeka.com/power-bi/power-bi-modelleme-modelling/power-bi-tablolar-arasi-iliski-kurma/

http://• https://docs.microsoft.com/tr-tr/power-bi/transform-model/desktop-many-to-many-relationships

http://• https://docs.microsoft.com/tr-tr/power-bi/transform-model/desktop-create-and-manage-relationships

Hüseyin Can Çırak

Yazar Hakkında
Toplam 6 yazı
Hüseyin Can Çırak
Hüseyin Can Çırak
Yıldız Teknik Üniversitesi Endüstri Mühendisliği mezunuyum. 2018 Haziran'dan beri İş Zekası alanında çalışmaktayım. İş zekasında şu an ikinci şirketimde danışman olarak hizmet vermekteyim, ağırlıklı olarak SSRS, SSIS, SSAS, OLAP küpleri ve Power BI konularında çalışmaktayım.
Yorumlar (2 yorum)
Semih Peldek
Semih Peldek Cevapla
- 23:27

Gerçekten harika bir bilgi paylasimi olmuş emeginize sağlık.
Bu bilgi akıcı bir sekilde elealmis olmanizdan dolayi cok teşekkür ederim

    Hüseyin Can Çırak
    Hüseyin Can Çırak Cevapla
    - 08:26

    Merhaba, ben teşekkür ederim yorumunuz için. Umarım faydalı olur.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

×

Bir Şeyler Ara