Kurs
LOOKUPVALUE, diğer tablolardaki değerleri bulup getirmek için kullanışlı bir DAX fonksiyonudur.
Power BI raporlarınızdaki iyi veri modelleme uygulamalarının yerini tutmasa da, LOOKUPVALUE özellikle birden fazla koşullu karmaşık ifadeler yazarken ve LOOKUPVALUE’ı diğer DAX fonksiyonlarıyla birleştirmek istediğinizde oldukça esneklik sağlar.
Bu eğitimde, LOOKUPVALUE fonksiyonunun temellerini, nasıl çalıştığını, nasıl kullanıldığını (özellikle diğer DAX fonksiyonlarıyla birlikte), ayrıca Power BI raporlarınızda LOOKUPVALUE kullanırken dikkat etmeniz gereken performans konuları ve en iyi uygulamaları ele alacağız.
Power BI’daki LOOKUPVALUE, Microsoft Excel’deki VLOOKUP’a oldukça benzer. Ancak LOOKUPVALUE’a geçmeden önce DAX ve Power BI ile aşinalık kazanmanız iyi olur. Power BI temelleri beceri yolumuz sizi hızla hazırlayabilir; ayrıca DAX cheat sheet’imiz, DAX fonksiyonlarıyla çalışırken elinizin altında bulundurabileceğiniz harika bir başvuru kaynağıdır.

LOOKUPVALUE’ın Temelleri
LOOKUPVALUE fonksiyonunu kullanarak, bir veya daha fazla arama koşuluna bağlı olarak başka bir tablodaki bir sütundan tek bir değer getirebiliriz.
Standart söz dizimi şöyledir:
LOOKUPVALUE (
<result_columnName>,
<search_columnName>,
<search_value>
[, <search2_columnName>, <search2_value>]…
[, <alternateResult>]
)
DAX’a ve söz dizimine hâlâ yeniyseniz, DAX’a Giriş kursumuza göz atın veya hızlıca tamamen yeni başlayanlar için DAX eğitimimizi okuyun. DAX bilginizi Orta Düzey DAX kursumuzla da derinleştirebilirsiniz.
LOOKUPVALUE parametrelerini biraz daha ayrıntılı inceleyelim:
- result_column: Hedef tablodan getirmek istediğiniz sütundur.
- search_column1: Eşleştirmek istediğiniz kriterleri içeren, hedef tablodaki sütundur.
- search_value1: search_column1 içinde aranacak değerdir. Sabit bir değer (örneğin bir metin) olabilir, bir ifadenin sonucu (örneğin min veya max) olabilir ya da
LOOKUPVALUE’ın eşleştirme yapması gereken kaynak tablodaki bir sütun olabilir. - [search_column2, search_value2, ...]: Bunlar isteğe bağlı ek arama sütunu ve değer çiftleridir. Daha karmaşık arama koşulları oluşturmak için birden fazla çift belirtebilirsiniz.
- [alternateResult]: Varsayılan ya da alternatif sonuçtur.
LOOKUPVALUEuygun bir eşleşme bulamazsa bu değeri döndürür.
LOOKUPVALUE hedef tabloda her arama yaptığında yalnızca tek bir eşleşme bulmalıdır. Birden fazla olası eşleşme varsa, LOOKUPVALUE benzersiz bir eşleşme bulana kadar ek arama çiftleri tanımlamanız gerekir.
Açıklık olması için, bununla ilgili bir örneği bir sonraki bölümde ele alacağız.
Basit LOOKUPVALUE Örnekleri
Temel kullanım
Diyelim ki ProductID ve ProductName sütunlarına sahip bir ürünler tablonuz var. ID’si 101 olan ürünün adını bulmak istiyorsunuz.
Product_Name = LOOKUPVALUE(Products[ProductName], Products[ProductID], 101)
Birden çok arama koşulu
Bu durumda, ProductID, Region ve Revenue sütunlarına sahip bir Sales tablonuz olduğunu varsayalım. Belirli bir ürünün (ID 101) belirli bir bölgedeki (East) gelirini bulmak istiyorsunuz.
Product_Revenue = LOOKUPVALUE(Sales[Revenue], Sales[ProductID], 101, Sales[Region], "East")
Boş değerlerin ele alınması
Arama koşullarının herhangi bir eşleşme döndürmediği durumlarda, LOOKUPVALUE boş döndürür.
Bu boş değerleri ele almak için iki yöntem şöyledir:
LOOKUPVALUE’ın alternatif sonuç parametresini kullanmak.COALESCEfonksiyonunu kullanarakLOOKUPVALUEboş döndürürse alternatif bir sonuç belirtmek.
Yöntem 1: Alternatif sonuç
LOOKUPVALUE fonksiyonunda varsayılan bir değer veya alternatif sonuç belirtebilirsiniz. Bu, LOOKUPVALUE ifadesinin en sonunda yer alan isteğe bağlı bir parametredir.
Product_Name = LOOKUPVALUE(Products[ProductName], Products[ProductID], 101, "Not Found")
Yöntem 2: COALESCE
İkinci olarak, COALESCE fonksiyonunu kullanabilirsiniz; bu, LOOKUPVALUE içinde alternatif bir sonuç belirtmeye neredeyse aynı şekilde çalışır.
Bununla birlikte, kullanım durumunuza ve veri kümenize bağlı olarak COALESCE daha performanslı olabilir. Hız ve performans Power BI raporunuz için önemliyse, COALESCE’i incelemeye değer.
Commission Rate =
COALESCE(
LOOKUPVALUE(
'CommissionRates'[Rate],
'CommissionRates'[SalespersonID], SELECTEDVALUE('Sales'[SalespersonID])
),
0.05
)
LOOKUPVALUE ve RELATED
Tablolarınız arasında ilişkiler tanımlamak her zaman iyi bir veri modelleme uygulamasıdır. DAX fonksiyonu LOOKUPVALUE kullanmaktan daha hızlıdır ve anlamsal modelinizin hem şimdi hem de gelecekte anlaşılmasını kolaylaştırır.
Tablolarınız arasında ilişkiler oluşturduğunuzda, RELATED fonksiyonunu kullanabilirsiniz. Çoğu durumda RELATED fonksiyonu, LOOKUPVALUE’dan daha basit ve daha doğrudandır.
RELATED fonksiyonu, kaynak tablonuzla doğrudan ilişkisi olan başka bir tablodan değer getirmeniz gerektiğinde idealdir.
Örneğin, satışlar tablosuna bir müşterinin adını eklemek istiyorsanız ve satışlar tablosu ile müşteriler tablosu arasında CustomerID üzerinde doğrudan bir ilişki varsa, şunu kullanabilirsiniz:
Customer Name = RELATED(Customers[CustomerName])
Bununla birlikte, `LOOKUPVALUE` `RELATED`’dan daha esnektir ve modelinizde mevcut doğrudan bir ilişki olmaksızın arama yapmanız gerektiğinde veya karmaşık ya da birden çok kritere dayalı değerler aramanız gerektiğinde en iyi sonucu verir. Çok yönlüdür; ancak olası performans etkileri nedeniyle aşırı kullanmamaya dikkat edin.
LOOKUPVALUE’ı Diğer DAX Fonksiyonlarıyla Birleştirme
Eşleşme bulunamadığında alternatif bir sonuç sağlamak için LOOKUPVALUE ile COALESCE’i nasıl birleştirebileceğinizi zaten gördük.
LOOKUPVALUE ile iyi eşleşen diğer DAX fonksiyonları arasında CALCULATE ve SWITCH fonksiyonları bulunur.
Bu bölümde bunların örneklerini ele alacağız.
LOOKUPVALUE & CALCULATE
LOOKUPVALUE fonksiyonunu CALCULATE ile birleştirmek, basit bir ilişki veya doğrudan bir arama yoluyla erişilemeyen bir hesaplama ya da filtre bağlamına göre başka bir tablodan değer getirmeniz gereken senaryolarda kullanışlıdır.
Bu genellikle filtre uygulamak veya hesaplamaların ayrıntı düzeyini değiştirmek için kullanılır. LOOKUPVALUE ile birleştirdiğinizde, aramanızın ölçütlerini hesaplamaların sonuçlarına göre dinamik olarak ayarlayabilirsiniz.
Örneğin: Belirli bir yıl için ürünler ve satış hedeflerinin yer aldığı bir tablonuz olduğunu varsayalım. Belirli bir ürün kimliği için, içinde bulunduğumuz yılın satış hedefini çekmek istiyorsunuz.
Bu işlemi CALCULATE ve LOOKUPVALUE fonksiyonlarını birleştirerek nasıl yapabileceğinize bakalım.
Product Sales Target =
VAR SpecificProductID = 123
VAR CurrentYear = YEAR(TODAY())
RETURN
CALCULATE(
LOOKUPVALUE(
SalesTargets[SalesTarget],
SalesTargets[ProductID],
SpecificProductID,
SalesTargets[Year],
CurrentYear
),
ALL(SalesTargets)
)
LOOKUPVALUE & SWITCH
LOOKUPVALUE fonksiyonunu SWITCH ile birleştirmek, başka bir tablodan dinamik olarak değer arayıp birden fazla olası eşleşmeye göre farklı sonuçlar döndürmeniz gerektiğinde oldukça iyi çalışır.
SWITCH fonksiyonuna aşina değilseniz, sizi ayrıntılı olarak yönlendirecek bir eğitimimiz var.
Örneğin: Bir satış veri kümeniz ve ayrı bir komisyon oranları tablonuz olduğunu varsayalım. Bir çalışanın aldığı komisyon oranı, doğrudan saklanmayan ancak toplam satış tutarından hesaplanabilen satış kademesine göre belirlenir.
Satış tablosunda, her satış için satış kademesine göre komisyon oranını belirten hesaplanmış bir sütun oluşturmak istiyorsunuz.
Commission Rate =
VAR SalesAmount = Sales[TotalSalesAmount]
VAR SalesTier =
SWITCH(
TRUE(),
SalesAmount <= 500, "Low",
SalesAmount <= 2000, "Medium",
"High"
)
RETURN
LOOKUPVALUE(
CommissionRates[CommissionRate],
CommissionRates[SalesTier],
SalesTier
)
Bu DAX ifadesinde, satış kademesini tanımlamak için SWITCH fonksiyonunu kullanıyoruz ve ardından bu sonucu, ilgili kademe için eşleşen komisyon oranını getirmek üzere LOOKUPVALUE içinde kullanıyoruz.
Performans Hususları ve En İyi Uygulamalar
1. Mümkün olduğunda ilişkileri kullanın
Mümkün olduğunda tablolar arasında doğrudan ilişkiler kullanmak tercih edilir. Power BI’da ilişkiler performans için optimize edilmiştir ve RELATED gibi fonksiyonlar çoğu zaman LOOKUPVALUE’dan çok daha verimlidir.
Bu yaklaşım, rapor yükleme sürelerini en aza indirmeye çalışıyorsanız önemli olan Power BI’ın dahili iyileştirmelerinden de yararlanır.
2. Hesaplanmış sütunlarda kullanımını en aza indirin
LOOKUPVALUE hesaplanmış sütunlarda kullanılabilse de, genellikle aşırıya kaçmamak en iyisidir. Hesaplanmış sütunlar veri yenileme sırasında hesaplanır ve özellikle büyük veri setlerinde bu süreci yavaşlatabilir.
Bunun yerine, sorgu zamanında hesaplanan ve sorgu iyileştirmelerinden yararlanabilen ölçülerde LOOKUPVALUE kullanmayı düşünün.
3. Boş sonuçları dikkatle ele alın
LOOKUPVALUE, eşleşme bulunamazsa boş bir sonuç döndürür. Daha önce tartıştığımız gibi, raporlarınızda bunu ele almak için doğru yöntemi seçmek önemlidir. LOOKUPVALUE boş döndürdüğünde varsayılan değerler sağlamak için COALESCE gibi bir fonksiyonu veya LOOKUPVALUE’ın isteğe bağlı alternatif sonuç parametresini kullanmayı düşünebilirsiniz.
4. Veri türleri ve büyük/küçük harf duyarlılığı
Arama değeri ile arama yapılan sütunun veri türlerinin eşleştiğinden emin olun ve büyük/küçük harf duyarlılığının farkında olun. Veri türleri veya harf duyarlılığı uyumsuzlukları, LOOKUPVALUE fonksiyonunda beklenmeyen sonuçlara veya hatalara yol açabilir.
Sonuç
Özetle, LOOKUPVALUE diğer tablolardan değer bulma ve getirme konusunda size çok daha fazla seçenek sunar. Özellikle diğer DAX fonksiyonlarıyla birleştirildiğinde güçlüdür. Ancak iyi veri modelleme uygulamalarının yerine geçmez ve Power BI raporlarınızda önce tablolar arasında ilişkiler tanımlamayı denemeniz önerilir.
Power BI geliştiricisi olarak bir kariyere geçmeyi düşünüyorsanız, Power BI geliştiricisi olma adım adım rehberimize göz atın. Power BI öğreniminize, uygulamada Power BI kullanmaya başlamanız için gerekli her şeyi öğretecek kapsamlı Power BI’da Veri Analisti kariyer yolumuzu keşfederek devam etmenizi öneririz.

