Gunakan SELECTEDVALUE alih-alih VALUES
Sebagai pemodel data, terkadang Anda mungkin perlu menulis ekspresi DAX yang menguji apakah kolom difilter oleh nilai tertentu.
Dalam versi DAXsebelumnya , persyaratan ini dicapai dengan aman dengan menggunakan pola yang melibatkan tiga fungsi DAX; IF, HASONEVALUE, dan VALUES. Definisi pengukuran berikut menyajikan contoh. Ini menghitung jumlah pajak penjualan, tetapi hanya untuk penjualan yang dilakukan kepada pelanggan Australia.
Australian Sales Tax =
IF(
HASONEVALUE(Customer[Country-Region]),
IF(
VALUES(Customer[Country-Region]) = "Australia",
[Sales] * 0.10
)
)
Dalam contoh, fungsi HASONEVALUE mengembalikan TRUE hanya ketika satu nilai dari kolom Wilayah Negara terlihat dalam konteks filter saat ini. Ketika TRUE, fungsi VALUES dibandingkan dengan teks harfiah "Australia". Ketika fungsi VALUES mengembalikan TRUE, ukuran Sales dikalikan dengan 0,10 (mewakili 10%). Jika fungsi HASONEVALUE mengembalikan FALSE—karena lebih dari satu nilai memfilter kolom—fungsi IF pertama mengembalikan BLANK.
Penggunaan HASONEVALUE adalah teknik defensif. Diperlukan karena ada kemungkinan beberapa nilai memfilter kolom Wilayah Negara. Dalam hal ini, fungsi VALUES mengembalikan tabel beberapa baris. Membandingkan tabel beberapa baris dengan nilai skalar menghasilkan kesalahan.
Rekomendasi
Disarankan agar Anda menggunakan fungsi SELECTEDVALUE. Ini mencapai hasil yang sama dengan pola yang dijelaskan dalam artikel ini, namun lebih efisien dan elegan.
Menggunakan fungsi SELECTEDVALUE, contoh definisi pengukuran sekarang ditulis ulang.
Australian Sales Tax =
IF(
SELECTEDVALUE(Customer[Country-Region]) = "Australia",
[Sales] * 0.10
)
Saran
Dimungkinkan untuk meneruskan nilai hasil alternatif
Konten terkait
- Jalur pembelajaran: Menggunakan DAX di Power BI Desktop
- Pertanyaan? Coba tanyakan Komunitas Power BI
- Saran? Berkontribusi ide untuk meningkatkan Power BI