Filtre değiştirici işlevlerini kullanma
işlevini kullanırken CALCULATE
, filtre değiştirme işlevlerini geçirerek tek başına filtre eklemekten daha fazlasını başarmanızı sağlayabilirsiniz.
Filtreleri kaldırma
Filtre bağlamından REMOVEFILTERS
filtreleri kaldırmak için filtre ifadesi olarak CALCULATE
DAX işlevini kullanın. Bu işlev, bir tablodaki bir veya daha fazla sütundan veya sütunların tamamından filtreleri kaldırabilir.
Not
REMOVEFILTERS
İşlev nispeten yenidir. DAX'ın önceki sürümlerinde, DAX işlevini veya ve ALLNOBLANKROW
DAX işlevleri dahil olmak üzere ALLEXCEPT
varyantları kullanarak ALL
filtreleri kaldırmıştınız. Bu işlevler hem filtre değiştirici hem de ayrı değerler içeren tablo nesnelerini döndüren işlevler olarak kullanılır. Bir belgede veya formülde filtrelerin bu işlevlerle kaldırıldığını görme ihtimaliniz yüksek olduğundan işlevlere bu noktada yer verilmiştir.
Aşağıdaki örnekte, Sales tablosuna Revenue ölçüsünü değerlendiren ancak Sales Territory tablosundaki filtreleri kaldırarak bunu yapacak yeni bir ölçü ekleyebilirsiniz. Ölçüyü iki ondalık basamaklı para birimi olarak biçimlendirin.
Revenue Total Region = CALCULATE([Revenue], REMOVEFILTERS('Sales Territory'))
Şimdi Revenue Total Region ölçüsünü raporun Sayfa 2 bölümünde yer alan matris görseline ekleyin. Matris görseli, Sales Territory tablosundaki üç sütunu kullanarak satırları gruplar: Group, Country ve Region.
Revenue Total Region değerlerinin aynı olduğuna dikkat edin. Bu, toplam gelir değeridir.
Bu sonuç kendi başına yararlı olmayabilir ancak bir oranda payda olarak kullanıldığında genel toplam yüzdesini hesaplar. Bu nedenle aşağıdaki tanımı Revenue Total Region ölçü tanımının üzerine yazacaksınız. (Bu yeni tanım ölçü adını değiştirir ve iki değişken bildirir. Ölçüyü iki ondalık basamaklı yüzde olarak biçimlendirmeyi unutmayın.)
Revenue % Total Region =
VAR CurrentRegionRevenue = [Revenue]
VAR TotalRegionRevenue =
CALCULATE(
[Revenue],
REMOVEFILTERS('Sales Territory')
)
RETURN
DIVIDE(
CurrentRegionRevenue,
TotalRegionRevenue
)
Matris görselinde şimdi Revenue % Total Region değerlerinin gösterildiğini doğrulayın.
Şimdi başka bir ölçü oluşturacaksınız ancak bu kez belirli bir bölgenin gelirinin ülke gelirine olan oranını hesaplayacaksınız.
Bu görevi tamamlamadan önce Southwest bölgesinin Revenue % Total Region değerinin yüzde 22,95 olduğuna dikkat edin. Bu hücrenin filtre bağlamını inceleyin. Veri görünümüne geçin ve alanlar bölmesinde Sales Territory tablosunu seçin.
Aşağıdaki sütun filtrelerini uygulayın:
- Group - North America
- Country - United States
- Region - Southwest
Filtrelerin tabloyu yalnızca bir satır kısalttığına dikkat edin. Bölgenin gelirinin ülkenin gelirine olan oranını hesaplamak olan yeni göreviniz üzerinde düşünürken Region sütunundaki filtreyi temizleyin.
Şimdi her biri United States ülkesine ait olan beş satır olduğuna dikkat edin. Dolayısıyla Region sütun filtrelerini temizleyip Country ve Group sütunlarındaki filtreleri koruduğunuzda bölgedeki ülkeyi gösteren yeni bir filtre bağlamına sahip olursunuz.
Aşağıdaki ölçü tanımında bir sütundaki filtreleri temizleme veya kaldırma seçeneklerine dikkat edin. DAX mantığının Revenue % Total Region ölçü formülünde yapılan küçük ve küçük bir değişikliktir: İşlev REMOVEFILTERS
artık Sales Territory tablosunun tüm sütunları yerine Region sütunundaki filtreleri kaldırır.
Revenue % Total Country =
VAR CurrentRegionRevenue = [Revenue]
VAR TotalCountryRevenue =
CALCULATE(
[Revenue],
REMOVEFILTERS('Sales Territory'[Region])
)
RETURN
DIVIDE(
CurrentRegionRevenue,
TotalCountryRevenue
)
Sales tablosuna Revenue % Total Country ölçüsünü ekleyin ve iki ondalık basamaklı yüzde olarak biçimlendirin. Yeni ölçüyü matris görseline ekleyin.
United States bölgeleri dışındaki tüm değerlerin yüzde 100 olduğuna dikkat edin. Bunun nedeni Adventure Works şirketinde United States altında bölgeler varken diğer ülkelerde olmamasıdır.
Not
Tablosal modeller farklı derinliklere sahip hiyerarşiler olan düzensiz hiyerarşileri desteklemez. Bu nedenle hiyerarşinin alt düzeylerinde üst (veya diğer üst öğe) değerlerini yinelemek sık kullanılan bir tasarım yaklaşımıdır. Örneğin, Avustralya'nın bir bölgesi olmadığından ülke/bölge değeri bölge adı olarak yinelenir. BLANK yerine anlamlı bir değer depolamak her zaman daha iyidir.
Bir sonraki örnek, oluşturacağınız son ölçü olacak. Revenue % Total Group ölçüsünü ekleyip iki ondalık basamaklı yüzde değeri olarak biçimlendirin. Ardından yeni ölçüyü matris görseline ekleyin.
Revenue % Total Group =
VAR CurrentRegionRevenue = [Revenue]
VAR TotalGroupRevenue =
CALCULATE(
[Revenue],
REMOVEFILTERS(
'Sales Territory'[Region],
'Sales Territory'[Country]
)
)
RETURN
DIVIDE(
CurrentRegionRevenue,
TotalGroupRevenue
)
Sales Territorytablosundaki Bölge ve Ülke sütunlarından filtreleri kaldırdığınızda ölçü, bölge gelirini grubunun gelirinin oranı olarak hesaplar.
Filtreleri koruma
Filtreleri korumak için işlevde CALCULATE
filtre ifadesi olarak DAX işlevini kullanabilirsinizKEEPFILTERS
.
Bu görevi nasıl gerçekleştireceğinizi görmek için raporun Sayfa 1 bölümüne geçin. Ardından Revenue Red ölçü tanımını işlevini kullanacak şekilde KEEPFILTERS
değiştirin.
Revenue Red =
CALCULATE(
[Revenue],
KEEPFILTERS('Product'[Color] = "Red")
)
Tablo görselinde yalnızca Revenue Red değeri bulunduğuna dikkat edin. Bunun nedeni, Boole filtre ifadesinin Product tablosundaki Color sütunundaki mevcut filtreleri korumasıdır. Kırmızı dışındaki renklerin BLANK olmasının nedeni, bu iki filtrenin filtre bağlamlarının ve filtre ifadelerinin birleştirilmiş olmasıdır. Siyah ve kırmızı renk kesişir ve her ikisi de aynı anda olamadığı TRUE
için ifade hiçbir ürün satırına göre filtrelenmez. Yalnızca iki kırmızı filtrenin de aynı anda olması TRUE
mümkündür ve bu da neden bir Revenue Red değerinin gösterildiğini açıklar.
Etkin olmayan ilişkileri kullanma
Etkin olmayan model ilişkisi yalnızca DAX işlevi işleve filtre ifadesi CALCULATE
olarak geçirildiğinde USERELATIONSHIP
filtreleri yayabilir. Bu işlevi etkin olmayan bir ilişkiyi etkilemek için kullandığınızda etkin ilişki otomatik olarak etkin olmayan ilişki haline döner.
Gönderim tarihlerine göre Revenue ölçüsünü hesaplamak için etkin olmayan ilişki kullanan ölçü tanımı örneğini inceleyin:
Revenue Shipped =
CALCULATE (
[Revenue],
USERELATIONSHIP('Date'[DateKey], Sales[ShipDateKey])
)
İlişki davranışını değiştirme
DAX işlevini işleve filtre CALCULATE
ifadesi olarak geçirerek CROSSFILTER
bir ifade değerlendirildiğinde model ilişkisi davranışını değiştirebilirsiniz. Bu gelişmiş bir özelliktir.
İşlev filtre CROSSFILTER
yönlerini değiştirebilir (her ikisinden tekine veya tekten her ikisine) ve hatta bir ilişkiyi devre dışı bırakabilir.