CROSSFILTER
Berlaku untuk: Kolom terhitung Tabel terhitung Ukur perhitungan Visual
Menentukan arah pemfilteran silang yang akan digunakan dalam perhitungan untuk hubungan yang ada di antara dua kolom.
Sintaks
CROSSFILTER(<columnName1>, <columnName2>, <direction>)
Parameter
Term | Definisi |
---|---|
columnName1 | Nama kolom yang ada, menggunakan sintaks DAX standar dan sepenuhnya memenuhi syarat, yang biasanya mewakili banyak sisi hubungan yang akan digunakan; jika argumen diberikan dalam urutan terbalik, fungsi akan menukarnya sebelum menggunakannya. Argumen ini tidak boleh berupa ekspresi. |
columnName2 | Nama kolom yang ada, menggunakan sintaks DAX standar dan sepenuhnya memenuhi syarat, yang biasanya mewakili satu sisi atau sisi pencarian hubungan yang akan digunakan; jika argumen diberikan dalam urutan terbalik, fungsi akan menukarnya sebelum menggunakannya. Argumen ini tidak boleh berupa ekspresi. |
Arah | Arah filter silang yang akan digunakan. Harus salah satu hal berikut: Tidak ada - Tidak ada pemfilteran silang yang terjadi di sepanjang hubungan ini. Keduanya - Filter di kedua sisi memfilter sisi lain. OneWay - Filter di satu sisi atau sisi pencarian dari filter hubungan di sisi lain. Opsi ini tidak dapat digunakan dengan hubungan satu-ke-satu . Jangan gunakan opsi ini pada hubungan banyak ke banyak karena tidak jelas sisi mana yang merupakan sisi pencarian; gunakan OneWay_LeftFiltersRight atau OneWay_RightFiltersLeft sebagai gantinya. OneWay_LeftFiltersRight - Filter di sisi <columnName1> memfilter sisi <columnName2>. Opsi ini tidak dapat digunakan dengan hubungan satu-ke-satu atau banyak-ke-satu. OneWay_RightFiltersLeft - Filter di sisi <columnName2> memfilter sisi <columnName1>. Opsi ini tidak dapat digunakan dengan hubungan satu-ke-satu atau banyak-ke-satu. |
Nilai hasil
Fungsi tidak mengembalikan nilai; fungsi hanya mengatur arah pemfilteran silang untuk hubungan yang ditunjukkan, selama durasi kueri.
Keterangan
Dalam kasus hubungan 1:1, tidak ada perbedaan antara satu dan kedua arah.
CROSSFILTER hanya dapat digunakan dalam fungsi yang mengambil filter sebagai argumen, misalnya: FUNGSI CALCULATE, CALCULATETABLE, CLOSINGBALANCEMONTH, CLOSINGBALANCEQUARTER, CLOSINGBALANCEYEAR, OPENINGBALANCEMONTH, OPENINGBALANCEQUARTER, OPENINGBALANCEYEAR, TOTALMTD, TOTALQTD, dan TOTALYTD.
CROSSFILTER menggunakan hubungan yang ada dalam model, mengidentifikasi hubungan dengan kolom titik akhirnya.
Di CROSSFILTER, pengaturan pemfilteran silang hubungan tidak penting; artinya, apakah hubungan diatur untuk memfilter satu, atau kedua arah dalam model tidak memengaruhi penggunaan fungsi. CROSSFILTER akan mengambil alih pengaturan pemfilteran silang yang ada.
Kesalahan dikembalikan jika salah satu kolom bernama sebagai argumen bukan bagian dari hubungan atau argumen milik hubungan yang berbeda.
Jika ekspresi CALCULATE ditumpuk, dan lebih dari satu ekspresi CALCULATE berisi fungsi CROSSFILTER, maka CROSSFILTER terdahulu adalah ekspresi yang berlaku jika terjadi konflik atau ambiguitas.
Fungsi ini tidak didukung untuk digunakan dalam mode DirectQuery saat digunakan dalam kolom terhitung atau aturan keamanan tingkat baris (RLS).
Contoh
Dalam diagram model berikut, Baik DimProduct maupun DimDate memiliki hubungan satu arah dengan FactInternetSales.
Secara default, kami tidak bisa mendapatkan Jumlah Produk yang dijual menurut tahun:
Ada dua cara untuk mendapatkan jumlah produk menurut tahun:
Aktifkan pemfilteran silang dua arah pada hubungan. Ini akan mengubah cara kerja filter untuk semua data di antara kedua tabel ini.
Gunakan fungsi CROSSFILTER untuk mengubah cara kerja hubungan hanya untuk ukuran ini.
Saat menggunakan DAX, kita dapat menggunakan fungsi CROSSFILTER untuk mengubah perilaku arah filter silang antara dua kolom yang ditentukan oleh hubungan. Dalam hal ini, ekspresi DAX terlihat seperti ini:
BiDi:= CALCULATE([Distinct Count of ProductKey], CROSSFILTER(FactInternetSales[ProductKey], DimProduct[ProductKey] , Both))
Dengan menggunakan fungsi CROSSFILTER dalam ekspresi pengukuran kami, kami mendapatkan hasil yang diharapkan: