Kurs
Veri modelleme, etkili Power BI raporları oluşturmanın temelidir. Açık tablo ilişkileri tanımlamanıza ve verileri verimli şekilde düzenlemenize, temizlemenize ve çağırmanıza olanak tanır. Bu eğitimde Power BI’daki RELATED fonksiyonunu öğreneceksiniz.
Uygulamalı örnekler üzerinden, RELATED fonksiyonunun veri modelleme ve raporlama becerilerinizi nasıl geliştirebileceğini göreceksiniz.
Power BI’ye hâlâ yeniyseniz, Power BI Fundamentals beceri yolumuzdan yararlanarak konuya aşinalık kazanabilirsiniz.
Ayrıca DAX cheat sheet’ini indirip Power BI ve DAX hakkında daha fazla bilgi edindikçe elinizin altında bulundurabilirsiniz.
DataCamp DAX Cheat Sheet
Power BI’de RELATED Fonksiyonu Nedir?
RELATED, ilişkili bir tablodaki bir sütundan değer çekmenizi sağlayan bir Power BI DAX fonksiyonudur. Önemli bir nokta: Bu fonksiyon yalnızca geçerli tablo ile istenen sütunun bulunduğu tablo arasında bir ilişki varsa çalışır.
RELATED fonksiyonu, tabloları elle birleştirip (merge/join) durmadan, farklı tablolardan ilgili verileri modelinize katmanızı sağlayarak veri modellemeyi basitleştirir.
RELATED fonksiyonunun sözdizimi şöyle görünür:
RELATED(ColumnToFetch)
Basit bir örnek olarak, bir Satışlar tablosu ve ayrı bir Ürünler tablonuz olduğunu varsayalım:
|
InvoiceID |
ProductID |
Quantity |
Price |
|
1000 |
123 |
2 |
21 |
|
1001 |
456 |
1 |
19.99 |
|
1002 |
123 |
3 |
31.5 |
|
1003 |
789 |
1 |
24.95 |
Tablo 1. Satışlar
|
ProductID |
ProductName |
UnitPrice |
|
123 |
Widget |
10.5 |
|
456 |
Gear |
19.99 |
|
789 |
Gizmo |
24.95 |
Tablo 2. Ürünler
Satışlar tablosu, her satış için bir Ürün Kimliği (Product ID) dahil olmak üzere satış işlemlerini takip eder; ancak ürün adı veya ayrıntıları yer almaz. Ürünler tablosu ise her Ürün Kimliği ile bağlantılı bu ad ve ayrıntıları içerir.
RELATED olmadan, Satışlar tablosu içinde ürün adını kullanan hesaplanmış bir sütun oluşturmak isterseniz bu iki tabloyu birleştirmeniz gerekirdi.
RELATED ile, Ürünler tablosundan çekerek her satış için doğrudan Ürün Adını gösteren yeni bir sütunu Satışlar tablosunda oluşturabilirsiniz. Ayrıca bu bilgiyi dinamik olarak getirmek için RELATED fonksiyonunu bir ölçüde de kullanabilirsiniz.
|
InvoiceID |
ProductID |
Quantity |
Price |
Product Name |
|
1000 |
123 |
2 |
21 |
Widget |
|
1001 |
456 |
1 |
19.99 |
Gear |
|
1002 |
123 |
3 |
31.5 |
Widget |
|
1003 |
789 |
1 |
24.95 |
Gizmo |
Tablo 3. RELATED kullanımı
Power BI’de İlişkileri Anlamak
Power BI’de ilişkiler, ortak sütunlara dayalı olarak tabloları birbirine bağlamanızı sağlar. Bu ilişkiler, Power BI’nin birden çok kaynaktan veriyi entegre etmesinin temelidir ve veri modellerinizde ilişkisel veritabanı yaklaşımını mümkün kılar.
Power BI’de ilişki türleri
Power BI’de sahip olabileceğimiz ilişki türleri şunlardır:
- Bire bir (1:1): Bir tablodaki her satır, diğer bir tablodaki bir (ve yalnızca bir) satırla ilişkilidir. Bu tür ilişki daha az yaygındır.
- Birden çoğa (1:çok): Bir tablodaki tek bir satır, diğer bir tablodaki birçok satırla ilişkili olabilir. Bu, Power BI’de en yaygın ilişki türüdür.
- Çoktan çoğa (çok:çok): Bir tablodaki satırlar, diğer bir tablodaki birden çok satırla ve tersi yönde ilişkili olabilir. Olası karmaşıklık ve performans etkileri nedeniyle çoktan çoğa ilişkileri dikkatli kullanın.
RELATED Fonksiyonu için ilişkilerin önemi
RELATED fonksiyonu, bu ilişkilerden yararlanarak ilgili tablodan veriyi çekip mevcut tablonun bağlamına getirir. Doğru tanımlanmış ilişkiler olmadan RELATED fonksiyonu çalışmaz.
İlişkiler, RELATED’ın izlemesi için net bir gezinme yolu sağlar ve fonksiyonun veriyi tam olarak nereden çekeceğini bilmesini temin eder.
İyi veri modelleme uygulamaları ve iyi tanımlanmış ilişkiler, RELATED fonksiyonunun ilgili verilere verimli şekilde erişmesini sağlar. Bu, karmaşık arama işlemlerinden kaçınmanıza ve Power BI raporlarınızın performansını ve kullanılabilirliğini artırmanıza yardımcı olur.
RELATED Fonksiyonu ile Uygulamalı Örnekler
Şimdi, RELATED’ın pratikte nasıl çalıştığını anlamak için bazı örneklere bakalım.
RELATED’ın temel kullanımı
Aylık ürün satışlarını içeren, ancak ürün adları veya kategorileri yerine yalnızca ProductID barındıran bir tablomuz olduğunu varsayalım. Ayrıca ProductID, ProductName ve Category sütunları olan bir Ürünler tablomuz var. Bu iki tablo arasında ProductID kullanarak bir ilişki kuruyoruz.
Satışları ürün kategorisine göre analiz etmek istiyoruz. Bunun için Satışlar tablosunda aşağıdaki DAX formülüyle bir hesaplanmış sütun oluşturuyoruz; ardından bunu Power BI raporumuzdaki bir görsele ekleyebiliriz:
ProductCategory = RELATED(Products[ProductCategory])
RELATED bu iş için idealdir; çünkü Ürünler ile Satışlar arasında doğrudan, bire-çok bir ilişki vardır ve ProductName veya Category bilgilerini çekmek oldukça kolaydır.
Gelişmiş senaryo
RELATED, ilgili bir tablodan veriyi mevcut tablonun bağlamına çekmeniz gerektiğinde özellikle güçlüdür.
Bir ölçü içinde RELATED kullanmak, raporun geçerli filtre bağlamına göre değişen dinamik hesaplamalar yapmanıza olanak tanır. Ölçüler, toplulaştırmalar için kullanılır ve SUMX gibi satır bağlamı fonksiyonları aracılığıyla ilişkili veriyi dahil edebilir.
SUMX fonksiyonuna aşina değilseniz, bu kapsamlı SUMX eğitiminden daha fazla bilgi edinebilirsiniz.
Daha önceki örneğimizin daha karmaşık bir sürümünü inceleyelim. Birden fazla ürün, farklı fiyatlar ve ürüne göre değişen, aylık olarak güncellenen dinamik bir satış hedefi içeren tablolarınız olduğunu varsayın. Amacınız, farklı ürün kategorileri genelinde aylık satış performansını bu hedeflere göre takip etmektir.
Satışlar ve Ürünler tablolarını içeren veri modelimize, her ürün için aylık satış hedeflerini içeren, ProductID, Month ve TargetAmount sütunlarını barındıran bir SalesTargets tablosu da eklenmiştir.
RELATED fonksiyonunu doğru kullanmak için, hem Satışlar hem de SalesTargets tablolarında Ürün Kimliği ve Ay kombinasyonundan oluşan bileşik bir anahtar temelinde bir ilişki oluşturuyoruz.
Hedef, her ürün kategorisi için her ay, satış hedefi gerçekleşme yüzdesini hesaplamaktır.
Monthly Target Achievement =
VAR TotalSalesRevenue =
SUMX(
Sales,
Sales[QuantitySold] * RELATED(Products[Price])
)
VAR MonthlyTarget =
SUMX(
Sales,
RELATED(SalesTargets[TargetAmount])
)
RETURN
IF(
MonthlyTarget > 0,
TotalSalesRevenue / MonthlyTarget,
BLANK()
)
Bu ölçü, Satışlar tablosu üzerinde yineleme yaparak her ürün için birim fiyatı RELATED ile çekip çarparak TotalSalesRevenue’yu hesaplar. Ardından, ilgili ay ve ürün için SalesTargets tablosundan hedef tutarlarını toplayarak MonthlyTarget’ı hesaplar.
Son olarak, toplam satış gelirini aylık hedefe bölerek gerçekleşme yüzdesini elde eder; bir hedef tanımlanmışsa değer döndürür (sıfıra bölmeyi önlemek için).
Finansal veri analizi hakkında daha fazla bilgi edinmek için, verilerinizi Power BI’de analiz edip görselleştirmenize adım adım rehberlik eden uygulamalı örnekler içeren Power BI’de Finansal Raporlama beceri yoluna göz atabilirsiniz.
Power BI’de RELATED Fonksiyonu: En İyi Uygulamalar
RELATED’ın nasıl çalıştığını kavradığımıza göre, şimdi daha derine inip bazı en iyi uygulamaları inceleyelim.
RELATED’ı yalnızca gerektiğinde kullanın
Hesaplamalar için başka bir tablodan veriyi gerçekten mevcut tablonun bağlamına dahil etmeniz gereken durumlarda RELATED uygulayın. Bu, rapor oluşturmayı basitleştiren hesaplanmış sütunlar için özellikle kullanışlıdır.
RELATED’ın aşırı kullanımı, gereksiz yere karmaşık veri modellerine ve potansiyel olarak rapor performansının yavaşlamasına yol açabilir. Veriyi fiziksel olarak tablonuza getirmeye gerek kalmadan, görsellerdeki ilişkiler aracılığıyla analizinizi doğrudan gerçekleştirebiliyorsanız, bu genellikle daha verimlidir.
Veri modelinizi anlayın
RELATED kullanmadan önce veri modelinizi, özellikle tablolar arasındaki ilişkileri anlayın. RELATED, mevcut etkin bir ilişki gerektirir — tipik olarak fonksiyonun "çok" tarafında kullanıldığı ve veriyi "bir" tarafından çektiği bire-çok bir ilişki.
RELATED fonksiyonu çoktan çoğa ilişkilerle çalışmaz.
İlişkileri doğru tanımlamadan veya ilişkinin yönünü yanlış anlayarak RELATED kullanmanız, hatalara veya beklenmeyen sonuçlara yol açabilir.
İlişkinin yönünü anlayın
RELATED’ı birincil tablodan (bir taraf) ilişkili tabloya (çok taraf) veri çekmek için kullanın. Bu, hesaplamalarınıza veya analizlerinize diğer tablolardan başvuru (lookup) verisi dahil etmek istediğinizde özellikle yararlıdır.
RELATED’ı ters yönde (çoktan bire) uygun bir anlayış olmadan kullanmak kafa karışıklığına yol açabilir. Ters yön için, bir tablo döndürdüğünden ek toplulaştırma fonksiyonları gerektirse de RELATEDTABLE daha uygun olabilir.
RELATED’a Alternatifler
RELATED fonksiyonu Power BI’de ihtiyaçlarınıza uymadığında düşünebileceğiniz alternatif yaklaşımlar vardır. Burada ele aldığımız iki alternatif LOOKUPVALUE fonksiyonu ve Power Query ile birleştirmedir.
LOOKUPVALUE
LOOKUPVALUE son derece esnek bir fonksiyondur; ancak RELATED’dan daha yavaş çalışabilir. Bunun nedeni, eşleşme bulmak için tabloyu satır satır aramasıdır. Örneğimizde, potansiyel olarak binlerce veya milyonlarca satış işlemi, rapor performansını önemli ölçüde yavaşlatabilir.
Doğrudan bir ilişki mevcutken basit ihtiyaçlar için LOOKUPVALUE gereksiz yere karmaşık olabilir. Ancak daha karmaşık eşleştirme ölçütlerine ihtiyacınız varsa, yerleşik ilişkileriniz yoksa veya performans sizin için kritik değilse, LOOKUPVALUE daha fazla esneklik sunar.
Daha fazla bilgi edinmek isterseniz, bu kapsamlı DAX LOOKUPVALUE rehberini okuyabilirsiniz.
Power Query ile verileri birleştirme
Power Query’de tabloları birleştirmek, birleştirme anındaki verilerinizin fiilen statik bir anlık görüntüsünü oluşturur.
Ancak Ürünler tablonuz sık güncelleniyorsa (yeni ürünler ekleniyor veya kategoriler değişiyorsa), Power Query’de birleştirilmiş tablonuz, Ürünler ve Satışlar tablolarının her ikisini de yenilemeden bu güncellemeleri otomatik olarak yansıtmayacaktır.
Birleştirilmiş tablolar oldukça büyük hale gelebilir ve özellikle ilişkili tablodan yalnızca küçük bir veriye (örneğin ürün kategorisi) ilgi duyuyorsanız, rapor performansınızı yavaşlatabilir.
Sonuç
RELATED fonksiyonu, ilişkiler temelinde bağlı tablolardan veri çekerek veri modellemeyi basitleştirir ve manuel birleştirme ihtiyacını ortadan kaldırır. Bu sayede, diğer tablolardan veriyi dinamik olarak içeren hesaplanmış sütunlar ve ölçüler oluşturabilirsiniz.
En iyi kullanım için, RELATED’ı stratejik biçimde kullanın ve veriyi yalnızca gerektiğinde mevcut tablonun bağlamına dahil edin. Veri modelinin ve kurulu ilişkilerin net bir şekilde anlaşılması kritik öneme sahiptir.
Power BI hakkında öğrenmeye devam etmek isterseniz şu kaynakları deneyebilirsiniz:
SSS
RELATED fonksiyonu pasif ilişkilerle kullanılabilir mi?
Hayır, RELATED fonksiyonu Power BI’de pasif ilişkilerden doğrudan yararlanamaz. RELATED, tablolar arasındaki etkin ilişkilerle çalışacak şekilde tasarlanmıştır.
Bir Power BI modelinde iki tablo arasında birden fazla ilişki bulunabilir; ancak aynı anda yalnızca biri etkin olabilir. RELATED fonksiyonu için Power BI’nın otomatik olarak kullandığı ilişki, etkin ilişkidir.
RELATED fonksiyonu bir ölçüde ve hesaplanmış sütunda kullanılabilir mi?
RELATED genellikle hesaplanmış sütunlarda kullanılsa da özellikle SUMX gibi yinelemeli fonksiyonların içinde olmak üzere ölçülerde de kullanılabilir; bu konuyu bu eğitimde inceledik.
Bir ölçüde kullanıldığında RELATED, yinelemeli fonksiyonun oluşturduğu geçerli satır bağlamına göre ilgili tablodan veri çeker. Bu, ölçünün filtre bağlamı içinde ilişkili tablolar arasında dinamik hesaplamalar yapılmasına olanak tanır.
RELATED fonksiyonu bir ilişki zincirinde birden fazla tablo arasında kullanılabilir mi?
Evet, her bağlantı halkasında düzgün tanımlanmış bir ilişki olduğu sürece RELATED, birden çok tablo üzerinden uzanan bir ilişki zincirinde ilerleyebilir. Bu, RELATED’ın ara tablolar üzerinden veri çekebildiği karmaşık veri modellerini mümkün kılar.
Filtre bağlamı, RELATED’ın ölçülerde kullanımını nasıl etkiler?
RELATED, ölçülerde kullanıldığında yerleşik filtre bağlamı içinde çalışır; bu bağlam dilimleyiciler, görseller veya CALCULATE gibi diğer DAX fonksiyonları tarafından değiştirilebilir.
RELATED tarafından çekilen değerler geçerli filtre bağlamını yansıtır; bu da onu raporda yapılan değişikliklere dinamik ve duyarlı hale getirir. Böylece kullanıcı etkileşimlerine uyum sağlayan bağlam duyarlı hesaplamalar mümkün olur.

