Menggunakan fungsi kecerdasan waktu DAX
DAX menyertakan beberapa fungsi inteligensi waktu untuk menyederhanakan tugas memodifikasi konteks filter tanggal. Anda dapat menulis banyak rumus kecerdasan ini dengan menggunakan CALCULATE
fungsi yang memodifikasi filter tanggal, tetapi itu akan membuat lebih banyak pekerjaan.
Catatan
Banyak fungsi inteligensi waktu DAX berkaitan dengan periode tanggal standar, khususnya tahun, kuartal, dan bulan. Jika Anda memiliki periode waktu yang tidak teratur (misalnya, bulan keuangan yang dimulai pertengahan bulan kalender), atau Anda perlu bekerja dengan minggu atau periode waktu (jam, menit, dan sebagainya), fungsi inteligensi waktu DAX tidak akan membantu. Sebagai gantinya CALCULATE
, Anda harus menggunakan fungsi dan meneruskan filter tanggal atau waktu buatan tangan.
Persyaratan tabel tanggal
Untuk bekerja dengan fungsi DAX inteligensi waktu, Anda perlu memenuhi persyaratan model prasyarat untuk memiliki setidaknya satu tabel tanggal dalam model Anda. Tabel tanggal adalah tabel yang memenuhi persyaratan berikut:
- Ini harus memiliki kolom jenis data Tanggal (atau tanggal/waktu), yang dikenal sebagai kolom tanggal.
- Kolom tanggal harus berisi nilai unik.
- Kolom tanggal tidak boleh KOSONG.
- Kolom tanggal tidak boleh memiliki tanggal yang hilang.
- Kolom tanggal harus mencakup tahun penuh. Setahun belum tentu merupakan tahun kalender (Januari-Desember).
- Tabel tanggal harus ditunjukkan sebagai tabel tanggal.
Untuk informasi selengkapnya, lihat Create tabel tanggal di Power BI Desktop.
Ringkasan dari waktu ke waktu
Satu grup fungsi inteligensi waktu DAX berkaitan dengan ringkasan dari waktu ke waktu:
DATESYTD
- Mengembalikan tabel kolom tunggal yang berisi tanggal untuk tahun ke tanggal (YTD) dalam konteks filter saat ini. Grup ini juga mencakupDATESMTD
fungsi DAX danDATESQTD
untuk bulanan hingga saat ini (MTD) dan kuartal hingga saat ini (QTD). Anda dapat meneruskan fungsi-fungsi ini sebagai filter keCALCULATE
dalam fungsi DAX.TOTALYTD
- Mengevaluasi ekspresi untuk YTD dalam konteks filter saat ini. Fungsi QTD dan MTD DAX yang setara danTOTALQTD
TOTALMTD
juga disertakan.DATESBETWEEN
- Mengembalikan tabel yang berisi kolom tanggal yang dimulai dengan tanggal mulai tertentu dan berlanjut hingga tanggal selesai tertentu.DATESINPERIOD
- Mengembalikan tabel yang berisi kolom tanggal yang dimulai dengan tanggal mulai tertentu dan berlanjut untuk jumlah interval yang ditentukan.
Catatan
TOTALYTD
Meskipun fungsi ini mudah digunakan, Anda terbatas pada meneruskan satu ekspresi filter. Jika Anda perlu menerapkan beberapa ekspresi filter, gunakan CALCULATE
fungsi lalu teruskan DATESYTD
fungsi sebagai salah satu ekspresi filter.
Dalam contoh berikut, Anda akan membuat perhitungan inteligensi pertama kali yang akan menggunakan fungsi TOTALYTD. Sintaksnya adalah sebagai berikut:
TOTALYTD(<expression>, <dates>, [, <filter>][, <year_end_date>])
Fungsi ini memerlukan ekspresi dan, seperti yang umum untuk semua fungsi inteligensi waktu, referensi ke kolom tanggal tabel tanggal yang ditandai. Secara opsional, ekspresi filter tunggal atau tanggal akhir tahun dapat diteruskan (hanya diperlukan saat tahun tidak selesai pada 31 Desember).
Unduh dan buka file Adventure Works DW 2020 M07.pbix . Kemudian, tambahkan definisi pengukuran berikut ke tabel Penjualan yang menghitung pendapatan YTD. Format pengukuran sebagai mata uang dengan dua tempat desimal.
Revenue YTD =
TOTALYTD([Revenue], 'Date'[Date], "6-30")
Nilai "6-30"
tanggal akhir tahun mewakili 30 Juni.
Pada Halaman 1 laporan, tambahkan pengukuran Pendapatan YTD ke visual matriks. Perhatikan bahwa ia menghasilkan ringkasan jumlah pendapatan dari awal tahun hingga bulan yang difilter.
Perbandingan dari waktu ke waktu
Kelompok lain dari fungsi inteligensi waktu DAX berkaitan dengan pergeseran periode waktu:
DATEADD
- Mengembalikan tabel yang berisi kolom tanggal, digeser maju atau mundur dalam waktu dengan jumlah interval yang ditentukan dari tanggal dalam konteks filter saat ini.PARALLELPERIOD
- Mengembalikan tabel yang berisi kolom tanggal yang mewakili periode yang paralel dengan tanggal di kolom tanggal yang ditentukan, dalam konteks filter saat ini, dengan tanggal menggeser sejumlah interval baik ke depan dalam waktu atau waktu ke belakang.SAMEPERIODLASTYEAR
- Mengembalikan tabel yang berisi kolom tanggal yang digeser satu tahun ke belakang dari tanggal di kolom tanggal yang ditentukan, dalam konteks filter saat ini.- Banyak fungsi DAX pembantu untuk menavigasi mundur atau maju untuk periode waktu tertentu, yang semuanya mengembalikan tabel tanggal. Fungsi pembantu ini mencakup
NEXTDAY
, ,NEXTMONTH
,NEXTYEAR
NEXTQUARTER
, danPREVIOUSDAY
,PREVIOUSMONTH
,PREVIOUSQUARTER
, danPREVIOUSYEAR
.
Sekarang, Anda akan menambahkan ukuran ke tabel Penjualan yang menghitung pendapatan untuk tahun sebelumnya dengan menggunakan SAMEPERIODLASTYEAR
fungsi . Format pengukuran sebagai mata uang dengan dua tempat desimal.
Revenue PY =
VAR RevenuePriorYear = CALCULATE([Revenue], SAMEPERIODLASTYEAR('Date'[Date]))
RETURN
RevenuePriorYear
Tambahkan pengukuran PY Pendapatan ke visual matriks. Perhatikan bahwa itu menghasilkan hasil yang mirip dengan jumlah pendapatan tahun sebelumnya.
Selanjutnya, Anda akan memodifikasi ukuran dengan mengganti nama menjadi Pendapatan YoY % dan kemudian memperbarui RETURN
klausul untuk menghitung rasio perubahan. Pastikan untuk mengubah format menjadi persentase dengan dua tempat desimal.
Revenue YoY % =
VAR RevenuePriorYear = CALCULATE([Revenue], SAMEPERIODLASTYEAR('Date'[Date]))
RETURN
DIVIDE(
[Revenue] - RevenuePriorYear,
RevenuePriorYear
)
Perhatikan bahwa ukuran Pendapatan YoY % menghasilkan rasio faktor perubahan dibandingkan pendapatan bulanan tahun sebelumnya. Misalnya, Juli 2018 menunjukkan peningkatan 106,53 persen atas pendapatan bulanan tahun sebelumnya, dan November 2018 menunjukkan penurunan 24,22 persen dibandingkan pendapatan bulanan tahun sebelumnya.
Catatan
Pengukuran Pendapatan YoY % menunjukkan penggunaan variabel DAX yang baik. Ukuran meningkatkan keterbacaan rumus dan memungkinkan Anda untuk menyatukan bagian pengujian dari logika pengukuran (dengan mengembalikan nilai variabel RevenuePriorYear ). Selain itu, ukurannya adalah rumus yang optimal karena tidak perlu mengambil nilai pendapatan tahun sebelumnya dua kali. Setelah menyimpannya sekali dalam variabel, RETURN
klausul menggunakan nilai variabel dua kali.