Melakukan transisi konteks

Selesai

Apa yang terjadi ketika ekspresi pengukuran atau pengukuran dievaluasi dalam konteks baris? Skenario ini dapat terjadi dalam rumus kolom terhitung atau saat ekspresi dalam fungsi iterator dievaluasi.

Dalam contoh berikut, Anda akan menambahkan kolom terhitung ke tabel Pelanggan untuk mengklasifikasikan pelanggan ke dalam kelas loyalitas. Skenarionya sederhana: Ketika pendapatan yang dihasilkan oleh pelanggan kurang dari $ 2500, pelanggan diklasifikasikan sebagai Rendah; jika tidak, mereka diklasifikasikan sebagai Tinggi.

Customer Segment =
VAR CustomerRevenue = SUM(Sales[Sales Amount])
RETURN
    IF(CustomerRevenue < 2500, "Low", "High")

Pada Halaman 4 laporan, tambahkan kolom Segmen Pelanggan sebagai legenda bagan pai.

Gambar memperlihatkan visual bagan pai berjudul Pendapatan menurut Segmen Pelanggan. Hanya ada satu segmen: Tinggi, yang mewakili 100% data.

Perhatikan bahwa hanya ada satu nilai Segmen Pelanggan . Alasannya adalah karena rumus kolom terhitung menghasilkan hasil yang salah: Setiap pelanggan diberi nilai Tinggi karena ekspresi SUM(Sales[Sales Amount]) tidak dievaluasi dalam konteks filter. Akibatnya, setiap pelanggan dinilai pada jumlah setiap nilai kolom Jumlah Penjualan dalam tabel Penjualan.

Untuk memaksa evaluasi SUM(Sales[Sales Amount]) ekspresi untuk setiap pelanggan, transisi konteks harus dilakukan yang menerapkan nilai kolom konteks baris untuk memfilter konteks. Anda dapat menyelesaikan transisi ini dengan menggunakan CALCULATE fungsi tanpa meneruskan ekspresi filter.

Ubah definisi kolom terhitung sehingga menghasilkan hasil yang benar.

Customer Segment =
VAR CustomerRevenue = CALCULATE(SUM(Sales[Sales Amount]))
RETURN
    IF(CustomerRevenue < 2500, "Low", "High")

Di visual bagan pai tambahkan kolom terhitung baru ke sumur Legenda, verifikasi bahwa dua segmen pai sekarang ditampilkan.

Gambar memperlihatkan visual bagan pai berjudul Pendapatan menurut Segmen Pelanggan. Ada dua segmen: Tinggi dan Rendah. Tinggi mewakili 76% dari data dan Rendah mewakili 24%.

Dalam hal ini, CALCULATE fungsi menerapkan nilai konteks baris sebagai filter, yang dikenal sebagai transisi konteks. Agar akurat, prosesnya tidak cukup berfungsi seperti itu ketika kolom unik ada di tabel. Saat kolom unik ada di tabel, Anda hanya perlu menerapkan filter pada kolom tersebut untuk membuat transisi terjadi. Dalam hal ini, Power BI menerapkan filter pada kolom CustomerKey untuk nilai dalam konteks baris.

Jika Anda mereferensikan pengukuran dalam ekspresi yang dievaluasi dalam konteks baris, transisi konteks bersifat otomatis. Dengan demikian, Anda tidak perlu meneruskan referensi pengukuran ke CALCULATE fungsi.

Ubah definisi kolom terhitung, yang mereferensikan pengukuran Pendapatan , dan perhatikan bahwa kolom terus menghasilkan hasil yang benar.

Customer Segment = 
VAR CustomerRevenue = [Revenue]
RETURN
    IF(CustomerRevenue < 2500, "Low", "High")

Sekarang, Anda dapat menyelesaikan rumus pengukuran Komisi Penjualan . Untuk menghasilkan total, Anda perlu menggunakan fungsi iterator untuk melakukan iterasi di semua wilayah dalam konteks filter. Ekspresi fungsi iterator harus menggunakan CALCULATE fungsi untuk mentransisikan konteks baris ke konteks filter. Perhatikan bahwa tidak perlu lagi menguji apakah satu nilai kolom Negara dalam tabel Wilayah Penjualan berada dalam konteks filter karena diketahui memfilter oleh satu negara (karena iterasi atas wilayah dalam konteks filter dan wilayah hanya milik satu negara).

Beralih ke Halaman 3 laporan, lalu ubah definisi pengukuran Komisi Penjualan untuk menggunakan fungsi iterator SUMX :

Sales Commission =
SUMX(
    VALUES('Sales Territory'[Region]),
    CALCULATE(
        [Revenue]
        * IF(
            VALUES('Sales Territory'[Country]) = "United States",
            0.15,
            0.1
        )
    )
)

Visual tabel sekarang menampilkan total komisi penjualan untuk semua wilayah.

Gambar memperlihatkan visual tabel dengan tiga kolom: Wilayah, Pendapatan, dan Komisi Penjualan. Sepuluh baris wilayah dan total ditampilkan. Total Komisi Penjualan sekarang memiliki total.