Baca dalam bahasa Inggris

Bagikan melalui


CALCULATE

Berlaku untuk: kolom terhitungTabel terhitungMeasurePerhitungan visual

Mengevaluasi ekspresi dalam konteks filter yang dimodifikasi.

Catatan

Ada juga fungsi CALCULATETABLE. Ini melakukan fungsionalitas yang sama persis, except memodifikasi konteks filter diterapkan ke ekspresi yang mengembalikan objek tabel .

Sintaksis

DAX
CALCULATE(<expression>[, <filter1> [, <filter2> [, …]]])

Parameter

Istilah Definisi
expression Ekspresi yang akan dievaluasi.
filter1, filter2,… (Opsional) Ekspresi Boolean or ekspresi tabel yang menentukan fungsi pengubah filters, orfilter.

Ekspresi yang digunakan sebagai parameter first pada dasarnya sama dengan measure.

Filters dapat berupa:

  • Ekspresi filter Boolean
  • Ekspresi filter tabel
  • fungsi modifikasi Filter

Ketika ada beberapa filters, mereka dapat dievaluasi dengan menggunakan operator logis AND (&&) , yang berarti kondisi all harus TRUE, or oleh operator logis OR (||), yang berarti salah satu kondisi dapat true.

Ekspresi filter Boolean

Ekspresi Boolean filter adalah ekspresi yang mengevaluasi ke TRUEorFALSE. Ada beberapa aturan yang harus mereka patuhi:

  • Kolom tersebut dapat mereferensikan kolom dari satu tabel.
  • Mereka tidak dapat mereferensikan langkah-langkah.
  • Mereka tidak dapat menggunakan fungsi CALCULATE berlapis.

Dimulai dengan rilis September 2021 Power BI Desktop, berikut ini juga berlaku:

  • Mereka tidak dapat menggunakan fungsi yang memindai or mengembalikan tabel kecuali diteruskan sebagai argumen ke fungsi agregasi.
  • Mereka dapat berisi fungsi agregasi yang mengembalikan skalar value. Misalnya
    DAX
    Total sales on the last selected date =
    CALCULATE (
        SUM ( Sales[Sales Amount] ),
        'Sales'[OrderDateKey] = MAX ( 'Sales'[OrderDateKey] )
    )
    

Ekspresi filter tabel

Ekspresi tabel filter menerapkan objek tabel sebagai filter. Ini bisa menjadi referensi ke tabel model, tetapi kemungkinan besar itu adalah fungsi yang mengembalikan objek tabel. Anda dapat menggunakan fungsi FILTER untuk menerapkan kondisi filter kompleks, termasuk yang tidak dapat ditentukan oleh ekspresi filter Boolean.

fungsi pengubah Filter

Filter fungsi pengubah memungkinkan Anda untuk melakukan lebih dari sekadar menambahkan filters. Mereka memberi Anda kontrol tambahan saat memodifikasi konteks filter.

Fungsi Maksud
REMOVEFILTERS Hapus allfilters, orfilters dari satu or lebih banyak kolom tabel, or dari kolom all dari satu tabel.
ALL 1, ALLEXCEPT, ALLNOBLANKROW Hapus filters dari satu or lebih banyak kolom, or dari kolom all dari satu tabel.
KEEPFILTERS Tambahkan filter tanpa menghapus filters yang ada pada kolom yang sama.
USERELATIONSHIP Libatkan hubungan yang tidak aktif antara kolom related, dalam hal ini hubungan aktif akan secara otomatis menjadi tidak aktif.
CROSSFILTER Ubah arah filter (dari keduanya menjadi tunggal, or dari satu ke keduanya) or menonaktifkan hubungan.

1 Fungsi ALLand variannya bereaksi sebagai pengubah filterand sebagai fungsi yang mengembalikan objek tabel. If fungsi REMOVEFILTERS didukung oleh alat Anda, lebih baik menggunakannya untuk menghapus filters.

Mengembalikan value

value yang merupakan hasil ekspresi.

Komentar

  • Saat ekspresi filter disediakan, fungsi CALCULATE memodifikasi konteks filter untuk evaluate ekspresi. Untuk setiap ekspresi filter, ada dua kemungkinan hasil standar saat ekspresi filternot dibungkus dalam fungsi KEEPFILTERS:

    • If kolom (tabelor) tidak berada dalam konteks filter, maka filters baru akan ditambahkan ke konteks filter untuk evaluate ekspresi.
    • If kolom (tabelor) sudah berada dalam konteks filter, filters yang ada akan ditimpa oleh filters baru untuk evaluate ekspresi CALCULATE.
  • Fungsi CALCULATE yang digunakan tanpa filters mencapai persyaratan tertentu. Ini mentransisikan konteks baris ke konteks filter. Diperlukan saat ekspresi (not model measure) yang meringkas data model perlu dievaluasi dalam konteks baris. Skenario ini dapat terjadi dalam rumus kolom terhitung or saat ekspresi dalam fungsi iterator dievaluasi. Perhatikan bahwa saat model measure digunakan dalam konteks baris, transisi konteks bersifat otomatis.

  • Fungsi ini not didukung untuk digunakan dalam mode DirectQuery saat digunakan dalam kolom terhitung or aturan keamanan tingkat baris (RLS).

Contoh

Definisi tabel Salesmeasure berikut menghasilkan hasil pendapatan, tetapi hanya untuk produk yang memiliki warna biru.

Contoh dalam artikel ini dapat digunakan dengan model sample Adventure Works DW 2020 Power BI Desktop. Untuk mendapatkan model, lihat model DAXsample.

DAX
Blue Revenue =
CALCULATE(
    SUM(Sales[Sales Amount]),
    'Product'[Color] = "Blue"
)
Golongan Jumlah Penjualan Pendapatan Biru
Aksesoris $1.272.057,89 $165.406,62
Sepeda $94.620.526,21 $8.374.313,88
Pakaian $2.117.613,45 $259.488,37
Komponen $11.799.076,66 $803.642,10
Total $109.809.274,20 $9.602.850,97

Fungsi mengevaluasi tabel Penjualan kolom Jumlah Penjualan dalam konteks yang dimodifikasi. filter baru ditambahkan ke tabel Productkolom Warna—or, filter menimpa filter apa pun yang sudah diterapkan ke kolom.

Definisi tabel Penjualan berikut menghasilkan rasio penjualan atas penjualan untuk saluran penjualan .

Channel Jumlah Penjualan Pendapatan % Total Saluran
Internet $29.358.677,22 26.74%
Reseller $80.450.596,98 73.26%
Total $109.809.274,20 100.00%
DAX
Revenue % Total Channel =
DIVIDE(
    SUM(Sales[Sales Amount]),
    CALCULATE(
        SUM(Sales[Sales Amount]),
        REMOVEFILTERS('Sales Order'[Channel])
    )
)

Fungsi membagi ekspresi yang menjumlahkan tabel Penjualan kolom Jumlah Penjualan (dalam konteks ) dengan ekspresi yang sama dalam konteks yang dimodifikasi. Ini adalah fungsi CALCULATE yang memodifikasi konteks filter dengan menggunakan fungsi REMOVEFILTERS, yang merupakan fungsi pengubah filter. Ini menghapus filters dari tabel Sales Orderkolom Saluran.

Definisi kolom terhitung tabel Pelanggan berikut mengklasifikasikan pelanggan ke dalam kelas loyalitas. Ini adalah skenario yang sangat sederhana: Ketika pendapatan yang dihasilkan oleh pelanggan kurang dari $ 2500, mereka diklasifikasikan sebagai Rendah; jika tidak, mereka High.

DAX
Customer Segment =
IF(
    CALCULATE(SUM(Sales[Sales Amount]), ALLEXCEPT(Customer, Customer[CustomerKey])) < 2500,
    "Low",
    "High"
)

Dalam contoh ini, konteks baris dikonversi ke konteks filter. Ini dikenal sebagai transisi konteks . Fungsi menghapus dari kolom tabel Pelanggan kolom CustomerKey.

konteks
konteks Baris
fungsi
fungsi