CROSSFILTER
Şunlar için geçerlidir: Hesaplanmış sütun Hesaplanan tablo Ölçü Görseli hesaplaması
İki sütun arasında var olan bir ilişki için hesaplamada kullanılacak çapraz filtreleme yönünü belirtir.
Sözdizimi
CROSSFILTER(<columnName1>, <columnName2>, <direction>)
Parametreler
Süre | Tanım |
---|---|
columnName1 | Standart DAX söz dizimi ve tam niteleme kullanan, genellikle kullanılacak ilişkinin birçok tarafını temsil eden mevcut bir sütunun adı; bağımsız değişkenler ters sırada verilirse, işlev bunları kullanmadan önce değiştirir. Bu bağımsız değişken bir ifade olamaz. |
columnName2 | Standart DAX söz dizimi ve tam niteleme kullanan, genellikle kullanılacak ilişkinin tek tarafını veya arama tarafını temsil eden mevcut bir sütunun adı; bağımsız değişkenler ters sırada verilirse, işlev bunları kullanmadan önce değiştirir. Bu bağımsız değişken bir ifade olamaz. |
Yön | Kullanılacak çapraz filtre yönü. Aşağıdakilerden biri olmalıdır: Yok - Bu ilişki boyunca çapraz filtreleme gerçekleşmez. Her ikisi - Her iki taraftaki filtreler diğer tarafı filtreler. OneWay - bir ilişkinin bir tarafındaki veya arama tarafındaki filtreler, diğer tarafı filtreler. Bu seçenek bire bir ilişki ile kullanılamaz. Hangi tarafın arama tarafı olduğu belirsiz olduğundan, bu seçeneği çoka çok ilişkisinde kullanmayın; yerine OneWay_LeftFiltersRight veya OneWay_RightFiltersLeft kullanın. OneWay_LeftFiltersRight - columnName1> yan tarafındaki <filtreler columnName2'nin <>tarafını filtreler. Bu seçenek bire bir veya çoka bir ilişkisiyle kullanılamaz. OneWay_RightFiltersLeft - columnName2> tarafındaki <filtreler columnName1'in <>tarafını filtreler. Bu seçenek bire bir veya çoka bir ilişkisiyle kullanılamaz. |
Dönüş değeri
İşlev değer döndürmez; işlevi yalnızca sorgu süresi boyunca belirtilen ilişkinin çapraz filtreleme yönünü ayarlar.
Açıklamalar
1:1 ilişkisi söz konusu olduğunda, bir ile her iki yön arasında bir fark yoktur.
CROSSFILTER yalnızca bağımsız değişken olarak filtre alan işlevlerde kullanılabilir, örneğin: CALCULATE, CALCULATETABLE, CLOSINGBALANCEMONTH, CLOSINGBALANCEQUARTER, CLOSINGBALANCEYEAR, OPENINGBALANCEMONTH, OPENINGBALANCEQUARTER, OPENINGBALANCEYEAR, TOTALMTD, TOTALQTD ve TOTALYTD işlevleri.
CROSSFILTER modelde var olan ilişkileri kullanır ve ilişkileri bitiş noktası sütunlarına göre tanımlar.
CROSSFILTER'da, bir ilişkinin çapraz filtreleme ayarı önemli değildir; diğer bir ifadeyle, ilişkinin modeldeki bir yönü veya her iki yönü de filtreleyecek şekilde ayarlanıp ayarlanmadığı işlevin kullanımını etkilemez. CROSSFILTER, var olan tüm çapraz filtreleme ayarlarını geçersiz kılar.
Bağımsız değişken olarak adlandırılan sütunlardan herhangi biri bir ilişkinin parçası değilse veya bağımsız değişkenler farklı ilişkilere aitse hata döndürülür.
CALCULATE ifadeleri iç içe yerleştirilmişse ve birden fazla CALCULATE ifadesi CROSSFILTER işlevi içeriyorsa, çakışma veya belirsizlik durumunda en içteki CROSSFILTER geçerli olur.
Bu işlev, hesaplanan sütunlarda veya satır düzeyi güvenlik (RLS) kurallarında kullanıldığında DirectQuery modunda kullanılmak üzere desteklenmez.
Örnek
Aşağıdaki model diyagramında hem DimProduct hem de DimDate,FactInternetSales ile tek yön ilişkisine sahiptir.
Varsayılan olarak, yıla göre satılan Ürün Sayısını alamayacağız:
Yıla göre ürün sayısını almanın iki yolu vardır:
İlişkide çift yönlü çapraz filtrelemeyi açın. Bu, filtrelerin bu iki tablo arasındaki tüm veriler için çalışma şeklini değiştirir.
İlişkilerin yalnızca bu ölçü için çalışma şeklini değiştirmek için CROSSFILTER işlevini kullanın.
DAX kullanırken, çapraz filtre yönünün bir ilişki tarafından tanımlanan iki sütun arasında nasıl davranacağını değiştirmek için CROSSFILTER işlevini kullanabiliriz. Bu durumda DAX ifadesi şöyle görünür:
BiDi:= CALCULATE([Distinct Count of ProductKey], CROSSFILTER(FactInternetSales[ProductKey], DimProduct[ProductKey] , Both))
Ölçü ifademizde CROSSFILTER işlevini kullanarak beklenen sonuçları elde ederiz: