Menggunakan fungsi iterator agregasi
Setiap fungsi ringkasan kolom tunggal memiliki fungsi iterator yang setara. Bagian berikut mempertimbangkan dua skenario agregasi ketika fungsi iterator berguna: ringkasan kompleks dan ringkasan grain yang lebih tinggi.
Ringkasan kompleks
Di bagian ini, Anda akan membuat ukuran pertama Anda yang menggunakan fungsi iterator. Pertama, unduh dan buka file Adventure Works DW 2020 M05.pbix . Selanjutnya, tambahkan definisi pengukuran berikut:
Revenue =
SUMX(
Sales,
Sales[Order Quantity] * Sales[Unit Price] * (1 - Sales[Unit Price Discount Pct])
)
Format pengukuran Pendapatan sebagai mata uang dengan dua tempat desimal, lalu tambahkan ke visual tabel yang ditemukan di Halaman 1 laporan.
Dengan menggunakan fungsi iterator, rumus Pengukuran pendapatan mengagregasi lebih dari nilai kolom tunggal. Untuk setiap baris, ia menggunakan nilai konteks baris dari tiga kolom untuk menghasilkan jumlah pendapatan.
Sekarang, tambahkan ukuran lain:
Discount =
SUMX(
Sales,
Sales[Order Quantity]
* (
RELATED('Product'[List Price]) - Sales[Unit Price]
)
)
Format pengukuran Diskon sebagai mata uang dengan dua tempat desimal, lalu tambahkan ke visual tabel.
Perhatikan bahwa rumus menggunakan RELATED
fungsi . Ingat, konteks baris tidak melampaui tabel. Jika rumus Anda perlu mereferensikan kolom dalam tabel lain, dan hubungan model ada di antara tabel, gunakan RELATED
fungsi untuk hubungan satu sisi atau RELATEDTABLE
fungsi untuk hubungan banyak sisi.
Ringkasan butir yang lebih tinggi
Contoh berikut mempertimbangkan persyaratan untuk melaporkan pendapatan rata-rata. Tambahkan ukuran berikut:
Revenue Avg =
AVERAGEX(
Sales,
Sales[Order Quantity] * Sales[Unit Price] * (1 - Sales[Unit Price Discount Pct])
)
Format pengukuran Rata-Rata Pendapatan sebagai mata uang dengan dua tempat desimal, lalu tambahkan ke visual tabel.
Pertimbangkan bahwa rata-rata berarti jumlah nilai dibagi dengan hitungan nilai. Namun, teori itu menimbulkan pertanyaan: Apa yang diwakili oleh hitungan nilai? Dalam hal ini, jumlah nilai adalah jumlah ekspresi yang tidak dievaluasi ke BLANK. Selain itu, karena fungsi iterator menghitung baris tabel Penjualan , rata-rata akan berarti pendapatan per baris. Mengambil logika ini selangkah lebih jauh, karena setiap baris dalam tabel Penjualan merekam baris pesanan penjualan, itu bisa lebih tepat digambarkan sebagai pendapatan per baris pesanan.
Dengan demikian, Anda harus mengganti nama pengukuran Rata-rata Pendapatan sebagai Baris Pesanan Rata-rata Pendapatan sehingga jelas untuk melaporkan pengguna tentang apa yang digunakan sebagai basis rata-rata.
Contoh berikut menggunakan fungsi iterator untuk membuat ukuran baru yang meningkatkan granularitas ke tingkat pesanan penjualan (pesanan penjualan terdiri dari satu atau beberapa baris pesanan). Tambahkan ukuran berikut:
Revenue Avg Order =
AVERAGEX(
VALUES('Sales Order'[Sales Order]),
[Revenue]
)
Format pengukuran Pesanan Rata-rata Pendapatan sebagai mata uang dengan dua tempat desimal, lalu tambahkan ke visual tabel.
Seperti yang diharapkan, pendapatan rata-rata untuk pesanan selalu lebih tinggi dari pendapatan rata-rata untuk satu baris pesanan.
Perhatikan bahwa rumus menggunakan VALUES
fungsi DAX. Fungsi ini memungkinkan rumus Anda menentukan nilai apa yang ada dalam konteks filter. Dalam hal ini, fungsi berulang AVERAGEX
atas setiap pesanan penjualan dalam konteks filter. Dengan kata lain, iterasi atas setiap pesanan penjualan untuk bulan tersebut. Konteks filter dan VALUES
fungsi diperkenalkan dalam modul konteks filter.