Power BI ‘ da Tablolar Arasında İlişki Kurma (Relationships)

Power BI ‘ da Tablo İlişkileri

 

Power BI’ da oluşturacağımız raporlarda birçok veriyi barındıran çok sayıda veri kümeleri olabilir. (Stok, Üretim, Müşteri verileri, Satış, Fatura, Sipariş, Sevk vb. verileri barındıran veri kümeleri)

Şirket yöneticileri tarafından istenen raporlarda bu veri kümelerinde bulunan bazı verilerin bir arada görüntülenmesi istenebilir. (Sipariş ve fatura bilgileri gibi.) Bu sebepten bu tabloları arasında bazı ilişkilendirmeler yapılması gerekir.

Power BI ’da bu tablo ilişkilendirmelerini yapabileceğimiz, ilişki özelliklerini tanımlayabileceğimiz bir Relationships ekranı bulunmaktadır.

Burada dikkat edilmesi gereken en önemli husus ister bir ERP yazılımına (Kurumsal Kaynak Planlaması)(AX, SAP, LOGO vb.) ait bir tablo olsun ister Excel’ den gelen bir tablo olsun, bu tablolar arasındaki ilişkilerin çok iyi belirlenmesi veya bilinmesi gereklidir.

Bu yazımda uygulayacağımız senaryoda MS SQL Server veri tabanından çekmiş olduğum Satış Temsilcilerinin yaptığı ciroların bulunduğu satış verileri (SQL Server’ dan Veri Çekme İşlemi başlıklı yazımı linki tıklayarak inceleyebilirsiniz.)  ile  Excel ‘ den çekmiş olduğum Satış Temsilcilerinin Aylık ve Yıllık hedeflerini barındıran veri küpünü (Excel Dosyasından Veri Alma İşlemi başlıklı yazımı linki tıklayarak inceleyebilirsiniz.) ilişkilendirip birleşik bir rapor oluşturmak. (Satış temsilcisinin yapmış olduğu yıllık cirosunun hedefi ile karşılaştırılmasını sağlamak)

 

Tüm Verilerim Matris Görseline Aktarılması

Yazımın Sonunda Elde Edeceğimiz Tablolarla İlişki Kurduktan Sonra Elde Edeceğimiz Görsel

 

 

Bunun için tablolar arası ilişki kuracağımız alanları belirleyelim.

  • Fatura Tarihi (1-ŞİRKET SATIŞLARI Veri Küpündeki Alan)      –   Ay(Satış Temsilcisi Hedef Veri Küpündeki Alan )
  • Satış Temsilcisi (1-ŞİRKET SATIŞLARI Veri Küpündeki Alan)  –    Satış Temsilcisi (Satış Temsilcisi Hedef Veri Küpündeki Alan )
power bi tablolar arası ilişkiler, realtionships, power bi join tables

Oluşturulan Senaryodaki Tablo İlişkileri

 

 

Relationships Ekranı

1)  Power BI Desktop uygulamasında aşağıda gösterilmiş olan işaretli alandan Relationships ekranından üzerinde, çalışma yaptığımız pbix dosyası içerisinde yer alan tabloları ve daha önce ilişki (relation) oluşturulmuş ise bu ilişkilerin hangi alanlarda oluşturulduğunu görebileceğimiz bölümdür.

 

Power BI Desktop (Masaüstü) Relationships Ekranı

Power BI Desktop (Masaüstü) Relationships Ekranı

 

 

2) Bazen bu bölüm o kadar karmaşık bir hal alır ki bir ürünün elektrik devre şemasını andırabilir :) Ama bu sizin gözünüzü korkutmasın bu oluşum zamanla edineceğiniz tecrübe ve powerzeka.com ‘ daki yazılarla daha anlaşılır bir hal alacaktır.

 

power bi complex table relations, power bi masaüstü karmaşık tablo ilişkileri

Power BI Desktop – Karmaşık Tablo İlişkileri

 

 

Tablo İlişkilerini Oluşturma (Join Tables)

1)  Burada amacımız bu iki tablo arasında daha önce belirlediğimiz ikisinde de ortak bulunan alanları doğru olarak eşleştirmek.

Bunu yapabilmek için Power BI ‘ da ortak sanal tablolar oluşturulur ve bu tablolar ilişki kurulacak ana tablolarla birleştirilir. Bu cümlem kafanızı karıştırmış olabilir. Yazımın devamını incelerseniz ne anlatmak istediğimi görsellerle destekli daha iyi anlayacağınıza emin olabilirsiniz.

 

power bi ilişki kurulacak tablolar, power bi join tables

İlişki Kurulacak Tablolar

 

 

2)  Öncelikle bu iki tabloyu birleştirebilmek için ilişki kuracağımız ortak alanları sanal bir tabloda tanımlayıp, oluşturmamız gerekir. (1-1 (Bire-bir) ilişki olmamasından dolayı bir tablo üzerinden birleştirme işlemini gerçekleştiriyoruz.)

Örneğimizde öncelikle Satış Temsilcisi (1-ŞİRKET SATIŞLARI Veri Küpündeki Alan) – SATICI (Satış Temsilcisi Hedef Veri Küpündeki Alan ) alanlarını birleştirmek (join) için Satış Temsilcisi Sanal Tablosu ‘ nu oluşturuyoruz. Bunun için Modelling sekmesinden New Table ‘ a tıklıyoruz.

 

1-1 Bir ilişki olmadığı için sanal tablo üzerinden ilişki kuruyoruz.

İlişki Kurmak İçin Tablo Oluşturma

 

 

3) Açılan kod satırına Satış Temsilcisi Sanal Tablosu = VALUES(İlgiliTabloİsmiVeyaKolonİsmi) yazılarak tanımlanır.

Burada dikkat edilmesi gereken husus ise ilişki kurulacak tablolar arasındaki 1-1 bir ilişki olmaması durumunda ortak alanın hangi veri kümesinde daha geniş kapsamda bulunduğunun tespitidir. Sanal tabloyu bu alanla oluşturduğumuz zaman ilişki kurma aşamasında bir hata oluşmayacaktır.

Şöyle ki ; bizim senaryomuzda Satış temsilcisinin yapmış olduğu yıllık cirosunun, satış hedefi ile karşılaştırılmasını sağlamak olduğu için satış temsilci verisinin daha geniş kapsamlı olduğu yer olan MS SQL Server veri tabanından çekmiş olduğum Satış Temsilcilerinin yaptığı ciroların bulunduğu veri küpündeki (1-ŞİRKET SATIŞLARI) Satış Temsilcisi alanını kullanacağım. Sizler de raporlarınızda  uygun olan alanı seçerek bu sanal tabloyu oluşturmalısınız.

 

Power BI ' da DAX Kodu İle Tablo Oluşturma

Power BI ‘ da DAX Kodu İle Tablo Oluşturma

 

 

4) Görüldüğü gibi oluşturduğumuz sanal tablo Fields bölümünde görüntülenir duruma gelmiş oldu. Tekrar Relationships ekranına dönerek tablolar arasında ilişkiyi nasıl kuracağımıza bakacak olursak;

 

Power BI Desktop Fields Menüsü - Relationships Ekranına Geçiş

Power BI Desktop Fields Menüsü – Relationships Ekranına Geçiş

 

 

5) Kırmızı ile işaretlenmiş ana tabloları, yeşil ile işaretlenmiş sanal tabloyu kullanarak join işlemini yapacağız. Burada ilişki kuracağımız alanı sürükle-bırak metodu ile sanal tabloya bağlama işlemini gerçekleştireceğiz.

 

Power BI Desktop Relationships Ekranı -Tablolar

Power BI Desktop Relationships Ekranı -Tablolar

 

6) İlgili alanları sanal tabloya sürükleyip-bıraktık sonra aşağıdaki ekran görüntüsündeki gibi class diyagramlarına benzer bir simgeleme şekli ile bağlantılar görüntülenir.

Relationships Ekranında Sürükle-Bırak Metodu İle İlişkilerin Oluşturulması

Relationships Ekranında Sürükle-Bırak Metodu İle İlişkilerin Oluşturulması

 

Relationships Ekranında İlişki Kurulan Tabloların Gösterimi

Relationships Ekranında İlişki Kurulan Tabloların Gösterimi

 

 

Tablo İlişkilerini Kurgularken Bağlantı Ayarlarının Yapılması (Edit Relationship)

7) Bu bağlantıların neler olduğu daha karmaşık raporlarda ve zaman geçtikçe unutulabilir. Bunun için tabloların bağlantı bölümlerine tıklayarak açılan Edit relationship ekranından yapılan birleştirme işleminin hangi alanlardan yapıldığı (Her iki tabloda da ilişki kurulan alanlar koyu renk ile gösterilir.) görülebilir.

 Cardinality bölümünden 1-N(Many to one), 1-1(One to one), M-1(Many to one) ayarları yapılabilir.

Edit Relationship M-M (Many to Many) desteklemez!

Ayrıca Cross Filter Direction bölümünden Single ve Both seçenekleri yapılan join işlemine göre seçilebilir.

 

Tablo Arasındaki İlişkiden Edit Relationship Ekranına Geçiş

Tablo Arasındaki İlişkiden Edit Relationship Ekranına Geçiş

 

8) Tablolar arasındaki ilişkiyi kurduğumuza göre artık bu iki tablonun birleşimini bir raporda görüntüleme bölümüne geçebiliriz. Bunun için sol bölümde bulunan Report simgesini seçerek rapor ekranına geçiş yapıyoruz.

Power BI Desktop Report Ekranı

Power BI Desktop Report Ekranı

 

 

Aralarında İlişki Kurulan Tablo Verilerinin Power BI Görsellerine Aktarılması (Visualizations)

9) Görsellerden (Visualizations) bir tablo (table) seçerek Values bölümüne sırasıyla sanal tabloda oluşturduğumuz Satış Temsilcisi, Excel dosyasından çekmiş olduğumuz Satış Temsilcisi Hedef veri küpünden HEDEF CİRO ve MS SQL Veri Tabanından çekmiş olduğumuz 1-ŞİRKET SATIŞLARI veri küpünden Satış Temsilcilerinin Ciro alanlarını ekliyoruz.

 

power-bi-desktop-iliski-kurulan-tablolarin-görsellere-aktarilmasi

İlişki Kurulan Tabloların Görsellere Aktarılması.

 

10) Eğer tablolar arasında ilişki kurmada bir problem yaşandıysa aşağıdaki tablolarda olduğu gibi rakamlarda sapmalar meydana gelecektir.

Burada yaptığımızı basit bir join işlemi gibi düşünebilirsiniz fakat zaman geçtikçe Power BI ‘ da oluşturacağınız birçok veri kümesinden oluşan karmaşık raporlarda bu durum sıkça başınıza gelebilir.

Böyle durumlarda tablo ilişkilerini dikkatlice tekrar gözden geçirmek gerekir.

power-bi-wrong-relations

Tablo İlişkisinin Yanlış Kurulması Durumunda Oluşabilecek Hata Örneği

 

11)  Aşağıdaki ekran görüntüsünde ise tablolar arasında ilişki kurmadan önceki ve join işleminden sonraki tabloların birleşmiş bir halde nasıl görüntülendiğini inceleyelim.

power-bi-tablolar-arasinda-iliski-kurma

İlişki Kurulan Tabloların Ayrı Ayrı ve Bir Tabloda Birleşmiş Hali

 

12) Ayrıca bu tabloların artık birbirleriyle ilişkili olmasından dolayı görseller arası filtreleme yapılabilir durumdadır. Birleşik tabloda ya da diğer tablolarda herhangi bir satır seçildiğinde diğer tablolarda da o değerin filtrelendiğini görebilirsiniz.

power-bi-tablolar-arasi-filtreleme

Tablolar Arası Filtreleme İşlemi

 

 

Enter Data Özelliği İle Tablo Oluşturulması

13) Bu adımdan sonra ilişki kurma işlemini bir adım daha ilerletelim istiyorum. Şöyle ki; Excel dosyasından çekmiş olduğumuz Satış Temsilcisi Hedef veri küpünde bulunan ay bazında hedef ciroları daha değerlendirilebilir verilere dönüştürmek istiyorum.

Bir satış temsilcisinin aylık hedefinin yüzde kaçını gerçekleştirdiğini raporuma yansıtmak istiyorum.

Yukarıda yaptığımız işlemlerin yanı sıra bir de Excel dosyasından çekmiş olduğumuz Satış Temsilcisi Hedef veri küpünde bulunan tarihsel alanları (ay), MS SQL Veri Tabanından çekmiş olduğumuz 1-ŞİRKET SATIŞLARI veri küpündeki Fatura Tarihi-Ay ile ilişkilendirmemiz gerekiyor.

Bunun için tıpkı Satış Temsilcileri için oluşturduğumuz sanal tablo gibi Tarihler arasında bir ilişki kurmak için de bir tabloya ihtiyacımız olacak.

Bu bölümde, daha önce kullandığımız metottan daha farklı olarak Power BI ‘ ın Enter Data özelliğini kullanarak bir tablo (sanal tablo değil) oluşturacağız.

 

14) Power BI Desktop – Report ekranının üst menüsünde Home sekmesi altında bulunan Enter Data ‘a tıklıyoruz. (Aynı ekrana Edit Queries’ den de ulaşabilirsiniz.)

 

Power BI Desktop - Enter Data İle Tablo Oluşturma

Power BI Desktop – Enter Data İle Tablo Oluşturma

 

 

15) Name bölümünden ismini Date Table olarak değiştiriyoruz ve Load butonuna tıklıyoruz.

Fields bölümünde Date Table adında bir tablonun oluştuğunu görüyoruz. Bu tabloya veri girişi yapabilmek için Edit Queries ekranına geçiyoruz ve Date Table ‘ ın Source bölümüne çift tıklıyoruz.

 

Power BI Tablo Oluşturma (Create Table) Ekranı

Tablo Oluşturma (Create Table) Ekranı

 

Edit Queries - Tablo Kaynağına (Source of Table) Ulaşma

Edit Queries – Tablo Kaynağına (Source of Table) Ulaşma

 

 

16) Aşağıdaki alanları kapsayacak şekilde veri girişlerini yapıyoruz. (Buradaki örnekte ben sadece 2017 yılına ait bir raporlama yapacağım için sadece 2017 yılını ekledim siz de raporunuza uygun tarihleri aynı bu formatta ekleyebilirisiniz.)

Tablo Oluşturma Ekranına Manuel Olarak Veri Girişinin Yapılması

Tablo Oluşturma Ekranına Manuel Olarak Veri Girişinin Yapılması

 

 

17) Oluşturduğumuz kolonlar default olarak Text formatında oluşturulur.

Ama ilişki kuracağımız AY ID ve YIL alanlarının sayısal değerler olması gerekir. Bunun için değişiklik yapacağımız kolonu seçip Transform sekmesinden Data Type ‘ ını Whole Number olarak değiştiriyoruz.

Daha sonra Dosya sekmesinden Close & Apply ‘ ı tıklayarak Power BI Desktop Report ekranına tekrar dönüyoruz.

 

Change the data type

Power BI – Edit Queries Ekranında Data Tipinin Değiştirilmesi.

 

 

Enter Data Özelliği İle Oluşturulan Tablonun Diğer Tablolarla İlişkilendirilmesi (Relationships)

18) Relationships ekranına geçiş yaptığımızda artık Date Table adında bir tablonun daha oluştuğunu görüyoruz.

Şimdi sıra, MS SQL Veri Tabanından çekmiş olduğumuz Satış Temsilcilerinin yaptığı ciroların bulunduğu veri küpü (1-ŞİRKET SATIŞLARI) ile Excel dosyasından çekmiş olduğumuz Satış Temsilcilerinin Aylık ve Yıllık hedeflerini barındıran veri küpünü (Satış Temsilcisi Hedef) tarihsel olarak Date Table ‘ı kullanarak join işlemini gerçekleştirmek yani tarihsel olarak bir ilişki kurgulamakta.

Burada dikkat edilmesi gereken en önemli hususlardan biri 1-ŞİRKET SATIŞLARI veri küpündeki Fatura Tarihi alanındaki verilerin AY ID ve YIL alanlarına parçalanması gerektiğidir. Bunu yapmamanız durumunda bu örnekteki gibi bir ilişki yapmanızın imkânı yoktur. (Örneğin 06.09.2017 tarihli bir faturanın AY ID =9 ve YIL =2017 olacak şekilde kolonlara ayrılması gereklidir.)

 

Power BI Relationships Ekranı - Tüm Tablo İlişkilerinin Görüntülenmesi

Power BI Relationships Ekranı – Tüm Tablo İlişkilerinin Görüntülenmesi.

 

 

19) Tabloları AY ID alanları ile Date Table ‘ ı kullanarak ilişkiyi oluşturuyoruz. Burada Excel ‘ den çekmiş olduğumuz Satış Temsilcilerinin Aylık ve Yıllık hedeflerini barındıran veri küpününde (Satış Temsilcisi Hedef) sadece 2017 yılına ait verilerin olmasından dolayı AY ID ile yapmış olduğumuz ilişki yeterli olacaktır.

Eğer birden fazla yılı kapsayan veriler olsaydı YIL ilişkisini de kurmamız gerekecekti.

Oluşturduğumuz Date Table İle Diğer Tablolar Arasında İlişki Kurma.

Oluşturduğumuz Date Table İle Diğer Tablolar Arasında İlişki Kurma.

 

 

20) Tablolar arasında Satış Temsilcisi ve tarihsel olarak ilişkilendirmeyi tamamladık. Şimdi bu verileri Power BI Görsellerine aktaralım.

power-bi-tablo-iliskilerinin-tamamlanmasi

Tablo İlişkileri

 

 

21) Raporumuzda artık Satış Temsilcilerinin 2017 hedef cirolarına ve 2017 cirolarına ait verileri ay bazında Matris görselini kullanarak yansıtmış olduk.

Yeşil ile çevrelenmiş tablolar ilişki kurmak için oluşturduğumuz tabloları göstermektedir. Kırmızı ile çevrelenmiş diğer tablolar ise ana tablolarımızdır. (SQL Server’ dan ve Excel Dosyasından çekmiş olduğumuz verilerin oluşturduğu tablolar)

Bu görüntüleme de yapacağımız sadece ufak bir dokunuşumuz kaldı. Yazılarımı takip edenler bilir bu ufak sorunun çözümüne daha önce Excel dosyasından veri alma işlemi başlıklı yazımda bahsetmiştim.

Dikkat ederseniz aşağıdaki matris görselinde ayların dizilimi alfabetik sıralama ile oluşturulmuş, biz bunu yıldaki sıralarına çevirmemiz gerekiyor.

 

power-bi-desktop-matris-gorselinin-kullanimi

Tabloların Matris Görseline Aktarılması – Hatalı Ay Sıralaması

 

 

22) Fields bölümünden AY’ ları görsele taşıdığımız veri kümesindeki AY alanını seçip üst sekmede bulunan Modelling seçilir, daha sonra Sort by Column seçilerek oradan açılır pencereden AY ID seçilerek işlem tamamlanır.

 

Power BI Desktop - Sort By Column Özelliğini Kullanma

Power BI Desktop – Sort By Column Özelliğini Kullanma

 

Tüm Verilerim Matris Görseline Aktarılması

Tüm Verilerim Matris Görseline Aktarılması

 

 

Oldukça uzun bir yazı oldu fakat daha anlaşılır bir şekilde başka türlü anlatamazdım. Umarım sizin için faydalı bir yazı olmuştur. Konu ile ilgili bir öneriniz varsa iletmenizi çok isterim. Bir hatamız olduysa affola…

Görüşlerinizi, önerilerinizi ve sorularınızı yorum bölümüne yazabilirsiniz. Vakit buldukça cevaplamaya çalışacağım.

Görüşmek dileğiyle herkese iyi çalışmalar…

Bir Yorum Yap

This site uses Akismet to reduce spam. Learn how your comment data is processed.