Lembar contekan fungsi power bi

Power BI adalah salah satu alat intelijen bisnis yang paling tangguh dan andal di luar sana. Salah satu fitur Power BI yang paling kuat adalah DAX (Data Analysis Expressions), yang merupakan ekspresi formula yang dirancang untuk analisis data tingkat lanjut. Rumus DAX berisi fungsi, operator, pernyataan, dan lainnya. Lembar contekan ini dirancang untuk menjadi pendamping praktis Anda saat bekerja dengan DAX di Power BI

Lembar contekan fungsi power bi

Lembar contekan fungsi power bi

Klik untuk mengunduh lembar contekan

Sumber. datacamp. com

Ini adalah kelanjutan dari artikel saya sebelumnya DAX Cheat sheet — Bagian 1. Dalam artikel ini, saya telah mendalami beberapa fungsi intelijen waktu DAX yang penting. Dokumentasi Microsoft dapat ditemukan di sini. Saya telah membahas ekspresi DAX berikut

  1. KALENDER
  2. TAHUN
  3. BULAN
  4. HARI
  5. SEPEREMPAT
  6. WEEKNUM
  7. HARI KERJA
  8. KENCAN PERTAMA
  9. TANGGAL TERAKHIR
  10. TANGGAL ANTARA
  11. DATESMTD
  12. TOTALMTD
  13. SEMUA DIPILIH
  14. DATEADD
  15. TERKAIT
  16. MULAI BULAN
  17. AKHIR BULAN
  18. MULAI TAHUN
  19. AKHIR TAHUN
  20. PERIODE PARALEL
  21. HARI BERIKUTNYA
  22. HARI SEBELUMNYA

Saya telah menggunakan campuran Power BI dan DAX Studio untuk mendemonstrasikan ukuran DAX khusus

Contoh data

Saya akan menggunakan model sampel Adventure Works DW 2020 yang dapat diunduh dari situs Microsoft. Saya telah menempatkan salinan PBIX di repo Github saya, tautannya ada di sini

Skema Basis Data

Data

Untuk merasakan seperti apa datanya, saya telah menyajikan 5 baris teratas dari masing-masing tabel dalam database ini

Pelanggan

Wilayah penjualan

Pengecer

Order penjualan

Penjualan

Tanggal

Sebagian besar pengukuran DAX kustom yang disajikan di bawah ini ditulis di sekitar kolom Penjualan[Jumlah Penjualan]. Saya juga menambahkan tabel tanggal baru MyCalendar

Tabel tanggal khusus di Power BI

Untuk memahami cara kerja fungsi DAX intelijen Tanggal dan Waktu, kita akan mulai dengan membuat tabel Tanggal kustom. Model AdventureWorks juga dilengkapi dengan tabel tanggal. Ini adalah tabel bernama Tanggal dan ditautkan ke tabel Penjualan melalui kolom DateKey

Apa itu tabel Tanggal dan mengapa kita membutuhkannya?

Tabel tanggal sama seperti tabel lainnya di Power BI tetapi dengan beberapa persyaratan wajib seperti yang ditentukan oleh Power BI di sini

  • Itu harus memiliki kolom tipe data tanggal (atau tanggal/waktu) — dikenal sebagai kolom tanggal
  • Kolom tanggal harus berisi nilai unik
  • Kolom tanggal tidak boleh berisi KOSONG
  • Kolom tanggal tidak boleh ada tanggal yang hilang
  • Kolom tanggal harus mencakup tahun penuh. Setahun belum tentu tahun kalender (Januari-Desember)
  • Tabel tanggal harus ditandai sebagai tabel tanggal

Mengapa tidak menggunakan tabel Tanggal yang sudah disertakan dengan AdventureWorks?

2 alasan. Kami ingin mengeksplorasi kesempatan belajar ini untuk membuat tabel tanggal yang cukup canggih. Dan, dengan tidak bergantung pada hubungan, kita dapat mempelajari cara menikah dengan tujuan umum Tabel tanggal untuk melaporkan data berdasarkan tanggal waktu (Jumlah Penjualan dalam contoh ini)

Bagaimana cara membuat tabel tanggal menggunakan DAX?

Ada dua fungsi Power BI yang berguna untuk membuat tabel tanggal. Ini adalah CALENDAR dan CALENDARAUTO Saya telah mengambil inspirasi dari tutorial yang luar biasa ini untuk membuat tabel tanggal khusus dan menamainya sebagai MyCalendar

MyCalendar = VAR myExtendedCalendar = ADDCOLUMNS(
CALENDAR(DATE(2017,7,1),DATE(2021,6,30)),
"Year", YEAR([Date]),
"MonthNumber", MONTH([Date]),
"DayNumber", DAY([Date]),
"Month", FORMAT([Date],"mmmm"),
"DayOfWeek", FORMAT([Date],"ddd"),
"DayOfWeekNumber", WEEKDAY([Date]),
"QuarterNumber", QUARTER([Date]),
"Quarter", FORMAT([Date],"\QQ"),
"WeekNumber",WEEKNUM([Date])
)
//Add the Financial year columns
VAR myExtendedCalendarWithFinancialColuns = ADDCOLUMNS(
myExtendedCalendar,
"FinancialYear",IF( [MonthNumber]>=7, [Year]+1, [Year] ),
"FinancialQuarterNumber",IF( [MonthNumber]>=7, [QuarterNumber]-2, [QuarterNumber]+2 )
)
//Add the Financial Quarter columns
VAR myExtendedCalenderWithQuarterDisplayColumn = ADDCOLUMNS(
myExtendedCalendarWithFinancialColuns,
"FinancialQuarter",CONCATENATE("Q",[FinancialQuarterNumber])
)
return myExtendedCalenderWithQuarterDisplayColumn

Struktur tabel MyCalendar

Mengatur properti pengurutan untuk kolom Teks

Kami hampir sampai. Tapi, ada satu langkah penting yang harus dilakukan. Kolom teks seperti Bulan, Hari Minggu, dan Kuartal perlu mengetahui urutan pengurutan. Perhatikan kolom Bulan. Saat kolom ini dipilih sebagai Kolom dalam visual Matriks, urutan pengurutan secara default akan berdasarkan abjad, yaitu. e. Desember datang sebelum Januari. Ini tidak benar. Kami ingin order Jan, Feb, March, April ,. Desember. Untuk mencapai ini, kita perlu menentukan MonthNumber sebagai kolom pengurutan untuk kolom Bulan

Kami telah menyelesaikan pekerjaan dasar kami. Kami sekarang siap untuk memulai eksplorasi kami untuk memahami perilaku yang mendasari ekspresi DAX

Hitung jumlah hari Minggu dalam periode waktu apa pun (FIRSTTDATE, LASTDATE, DATESBETWEEN)

Objektif

Ini adalah skenario mainan. Diberikan potongan waktu apa pun, bagaimana kita menemukan jumlah hari Minggu dalam periode itu?

visual matriks

ukuran DAX

NumberOfSundays = 
VAR first = FIRSTDATE(MyCalendar[Date])
VAR last = LASTDATE(MyCalendar[Date])
VAR daysInBetween = DATESBETWEEN(MyCalendar[Date] , first, last)
VAR datesWithSundays=FILTER(daysInBetween, WEEKDAY(MyCalendar[Date])==1)
VAR countOfSundays = COUNTROWS(datesWithSundays)
return countOfSundays
_

Untuk kedua contoh yang disajikan di atas, kami menggunakan ukuran tunggal

NumberOfFriday13th = 
VAR first = FIRSTDATE(MyCalendar[Date])
VAR last = LASTDATE(MyCalendar[Date])
VAR between = DATESBETWEEN(MyCalendar[Date],first, last)
VAR days = COUNTROWS
(
FILTER(
between,
WEEKDAY(MyCalendar[Date])==6 && DAY(MyCalendar[Date])==13
)
)
return days
2. Ukurannya agnostik dari panjang periode waktu. Filter ROW di setiap visual memiliki semua informasi tentang baris dari tabel
NumberOfFriday13th = 
VAR first = FIRSTDATE(MyCalendar[Date])
VAR last = LASTDATE(MyCalendar[Date])
VAR between = DATESBETWEEN(MyCalendar[Date],first, last)
VAR days = COUNTROWS
(
FILTER(
between,
WEEKDAY(MyCalendar[Date])==6 && DAY(MyCalendar[Date])==13
)
)
return days
3. Kami menggunakan ekspresi
NumberOfFriday13th = 
VAR first = FIRSTDATE(MyCalendar[Date])
VAR last = LASTDATE(MyCalendar[Date])
VAR between = DATESBETWEEN(MyCalendar[Date],first, last)
VAR days = COUNTROWS
(
FILTER(
between,
WEEKDAY(MyCalendar[Date])==6 && DAY(MyCalendar[Date])==13
)
)
return days
4 dan
NumberOfFriday13th = 
VAR first = FIRSTDATE(MyCalendar[Date])
VAR last = LASTDATE(MyCalendar[Date])
VAR between = DATESBETWEEN(MyCalendar[Date],first, last)
VAR days = COUNTROWS
(
FILTER(
between,
WEEKDAY(MyCalendar[Date])==6 && DAY(MyCalendar[Date])==13
)
)
return days
5 untuk menemukan batas periode waktu di setiap sel. Ekspresi
NumberOfFriday13th = 
VAR first = FIRSTDATE(MyCalendar[Date])
VAR last = LASTDATE(MyCalendar[Date])
VAR between = DATESBETWEEN(MyCalendar[Date],first, last)
VAR days = COUNTROWS
(
FILTER(
between,
WEEKDAY(MyCalendar[Date])==6 && DAY(MyCalendar[Date])==13
)
)
return days
_6 memberi kita tabel dari semua
NumberOfFriday13th = 
VAR first = FIRSTDATE(MyCalendar[Date])
VAR last = LASTDATE(MyCalendar[Date])
VAR between = DATESBETWEEN(MyCalendar[Date],first, last)
VAR days = COUNTROWS
(
FILTER(
between,
WEEKDAY(MyCalendar[Date])==6 && DAY(MyCalendar[Date])==13
)
)
return days
7 dalam batas-batas ini. Hitungan hari Minggu diekstrak dengan menggunakan ekspresi
NumberOfFriday13th = 
VAR first = FIRSTDATE(MyCalendar[Date])
VAR last = LASTDATE(MyCalendar[Date])
VAR between = DATESBETWEEN(MyCalendar[Date],first, last)
VAR days = COUNTROWS
(
FILTER(
between,
WEEKDAY(MyCalendar[Date])==6 && DAY(MyCalendar[Date])==13
)
)
return days
8

Hitung jumlah kejadian hari Jumat tanggal 13 dalam periode waktu apa pun (FIRSTTDATE, LASTDATE, DATESBETWEEN)

Objektif

Ini adalah skenario mainan. Dalam contoh ini, kami menghitung kemunculan semua hari yang merupakan hari Jumat dan merupakan hari ke-13 setiap bulan. Ukuran DAX secara semantik identik dengan yang kami tulis untuk menghitung hari Minggu dalam periode waktu mana pun

visual matriks

ukuran DAX

NumberOfFriday13th = 
VAR first = FIRSTDATE(MyCalendar[Date])
VAR last = LASTDATE(MyCalendar[Date])
VAR between = DATESBETWEEN(MyCalendar[Date],first, last)
VAR days = COUNTROWS
(
FILTER(
between,
WEEKDAY(MyCalendar[Date])==6 && DAY(MyCalendar[Date])==13
)
)
return days

Menggunakan Pemotong untuk memilih jangka waktu

Ukuran DAX yang sama sekarang dapat digunakan untuk menampilkan hitungan "Friday the 13th" untuk jangka waktu yang dipilih secara acak

Total penjualan dalam periode apa pun (FIRSTTDATE, LASTDATE,RELATED, FILTER)

Objektif

Mengingat waktu apa pun — hitung total penjualan dalam periode ini. Kami akan mencapai ini menggunakan 3 pendekatan berbeda

  • Opsi 1 — Seret dan lepas di luar kotak (tanpa ukuran)
  • Opsi 2 — Mengukur kueri mana yang menggunakan tabel Tanggal Pekerjaan Petualangan di luar kotak
  • Opsi 3 — Mengukur kueri yang menggunakan tabel MyCalendar khusus

Opsi-1 Seret dan lepas di luar kotak (tanpa ukuran)

Ini menjadi perhitungan yang cukup sederhana, kita dapat menarik dan melepaskan kolom Jumlah Penjualan dari Total Penjualan

dan kemudian memilih opsi Sum dari menu konteks

Opsi-2 Mengukur kueri mana yang menggunakan tabel Tanggal Pekerjaan Petualangan

Ekspresi FIRSTDATE dan LASTDATE pada tabel Tanggal di luar kotak memberi kita batasan periode waktu dalam konteks saat ini. DATESBETWEEN memberi kita semua tanggal dari tabel tanggal dan kita menggunakan ini untuk menyediakan filter dalam ekspresi CALCULATE

TotalSalesInPeriodUsingAdWorksDate = 

var first = FIRSTDATE('Date'[Date])
var last = LASTDATE('Date'[Date])
VAR between = DATESBETWEEN('Date'[Date], first , last)
VAR filteredDates = FILTER('Date', 'Date'[Date] in between)
VAR totalSales = CALCULATE
(
SUMX(Sales, Sales[Sales Amount]),
filteredDates
)
return totalSales

Opsi-3 Mengukur kueri mana yang menggunakan tabel kustom MyCalendar

Visual Matrix menggunakan tabel tanggal MyCalendar untuk merender hierarki. Oleh karena itu, dalam ukuran ini kami menggunakan FIRSTDATE dan LASTDATE untuk mendapatkan batas-batasnya. Ekspresi CALCULATE mengubah konteksnya dengan memfilter tabel tanggal Adventure Works

TotalSalesInPeriodUsingMyCalendar = 

var first = FIRSTDATE(MyCalendar[Date])
var last = LASTDATE(MyCalendar[Date])
/*
In this measure, we are assuming that there is no direct relationship between MyCalendar and Sales
Hence the need for explicit filtering
*/
VAR totalSales = CALCULATE
(
SUMX(Sales, Sales[Sales Amount]),
FILTER(
Sales,
RELATED('Date'[Date]) >= first && RELATED('Date'[Date]) <= last
)
)
return totalSales

Penjualan dalam periode apa pun sebagai persentase dari Total Penjualan pada Tahun keuangan tersebut (FIRST DATE, LAST DATE,RELATED, FILTER)

Objektif

Tampilkan penjualan dalam periode waktu apa pun sebagai persentase dari total penjualan tahunan pada tahun finansial tersebut. Tahun keuangan akan dipilih menggunakan Pemotong pada kolom Kalender[Tahun Keuangan].

ukuran DAX

% OfAnnualSalesInPeriod =     //Step 1 - Calculate total sales in selected financial year
VAR finYear = SELECTEDVALUE(MyCalendar[FinancialYear])
VAR allDatesInFinancialYear = FILTER(ALL(MyCalendar), MyCalendar[FinancialYear] == finYear)
VAR firstDayOfCurrentFinancialYear = CALCULATE( FIRSTDATE(MyCalendar[Date]),allDatesInFinancialYear)
VAR lastDayOfCurrentFinancialYear = CALCULATE( LASTDATE(MyCalendar[Date]),allDatesInFinancialYear)
VAR totalSalesInYear = CALCULATE
(
SUMX(Sales, Sales[Sales Amount]),
FILTER(
Sales,
RELATED('Date'[Date]) >= firstDayOfCurrentFinancialYear && RELATED('Date'[Date]) <= lastDayOfCurrentFinancialYear
)
)
//Step 2 - Calculate total sales in the current financial period
VAR totalSalesInCurrentPeriod = AdventureWorksMeasures[TotalSalesInPeriodUsingMyCalendar]
VAR roundedValue=ROUND(totalSalesInCurrentPeriod/totalSalesInYear*100.0,2)
return FORMAT(roundedValue, "General Number") //This is needed to remove the currency symbol because "Sales Amount" has a Currency format

Hasil

Penjualan kumulatif dalam sebulan (DATESMTD, HITUNG, FILTER, SUMX)

Objektif

Kami ingin menganalisis pertumbuhan penjualan yang progresif dari hari pertama bulan yang ditentukan hingga hari terakhir di bulan itu. Contoh. Penjualan kumulatif untuk tanggal 3 Juni akan menjadi jumlah penjualan pada tanggal 1 Juni dan 2 Juni. Ada beberapa cara untuk mencapai hal ini Ekspresi DAX DATESMTD akan menghasilkan tabel baru dengan semua tanggal dari awal bulan hingga hari konteks saat ini. Bagaimana ini berguna? . Kami akan melanjutkan dengan hati-hati di sini. Sebelum kita langsung menghitung penjualan, kita akan mencoba mendapatkan tanggal kumulatif untuk hari tertentu dalam sebulan. Setelah ini diperoleh, cukup mudah untuk melakukan langkah selanjutnya, i. e. menghitung penjualan kumulatif

Langkah 1-DAX ekspresi untuk menghasilkan hitungan hari dalam bulan ini hingga saat ini

Dengan menggunakan ukuran DAX berikut, kami menampilkan total hari berjalan dari awal hingga tanggal saat ini. e. g. Pada tanggal 4 Februari hitungan kumulatif menjadi 4 (1 Februari, 2, 3, 4). Demikian juga untuk tanggal 5 Februari, totalnya menjadi 5. Mengapa kita membutuhkan total hari berjalan?

DatesMtdDemo1 = 
VAR datesInThisMonth = DATESMTD(MyCalendar[Date])
return COUNTROWS(datesInThisMonth)

Langkah 2-Penjualan kumulatif dalam sebulan — dengan cara yang sulit

Pada langkah sebelumnya kami memperoleh hitungan kumulatif hari dalam sebulan. Kami akan menggunakan informasi ini untuk MEMFILTER Penjualan. Dalam pengukuran DAX berikut, kami menggunakan DATESMTD untuk mendapatkan semua nilai tanggal dari awal bulan hingga hari ini dalam sebulan. Kolom Tanggal[Tanggal] difilter menggunakan daftar hari kumulatif. Nilai kumulatif Penjualan[Jumlah Penjualan] kemudian dihitung dengan menggunakan daftar hari

DatesMtdDemo2 = 
VAR datesInThisMonth = DATESMTD(MyCalendar[Date])
VAR filteredDates = FILTER('Date', 'Date'[Date] in datesInThisMonth)
VAR totalSales = CALCULATE
(
SUMX(Sales, Sales[Sales Amount]),
filteredDates
)
return totalSales

Dalam ilustrasi berikut kami melakukan perbandingan berdampingan penjualan kumulatif pada hari terakhir bulan di sisi kiri dan total penjualan di bulan itu di sebelah kanan. Perhatikan bahwa total kumulatif pada 28 Feb (sisi kiri) sama dengan total keseluruhan bulanan pada Feb (sisi kanan)

Penjualan kumulatif dalam sebulan — cara yang lebih mudah (TOTALMTD)

Objektif

Tujuan kami tetap sama seperti yang dinyatakan di bagian sebelumnya. Tapi, ada cara yang lebih sederhana untuk mencapai tujuan ini

ukuran DAX

Ukuran DAX berikut mengharapkan hari ini bulan ini dalam konteks saat ini

TotalMonthToDate = TOTALMTD(SUMX(Sales, [Sales Amount]),'Date'[Date])

Bagaimana kita bisa yakin bahwa TOTALMTD menghasilkan nilai yang sama dengan yang diperoleh pelanggan mengukur DatesMtdDemo2 yang kita tulis di bagian sebelumnya?

Penjualan harian kumulatif dalam setiap bagian waktu (FIRSTTDATE,LATDATE,ALLSELECTED,RELATED)

Objektif

  1. Kami ingin menganalisis pertumbuhan kumulatif Penjualan dalam interval waktu mana pun di tabel MyCalendar
  2. Visual Pemotong untuk memilih interval waktu. Ini memberi kita tanggal awal dan akhir periode waktu yang sedang dianalisis
  3. Pengukuran kustom CumulativeSalesInAnyPeriod yang menghitung penjualan kumulatif untuk setiap hari dalam periode waktu yang ditentukan
  4. Bagan kolom bertumpuk dengan sumbu X memperlihatkan kolom Tanggal dari tabel MyCalendar dan Nilai diatur ke KumulatifSalesInAnyPeriod

Pengukuran DAX kustom

CumulativeSalesInAnyPeriod = 
VAR currentDate = SELECTEDVALUE(MyCalendar[Date])
VAR first = FIRSTDATE(ALLSELECTED(MyCalendar[Date]))
VAR last = LASTDATE(ALLSELECTED(MyCalendar[Date]))
VAR totalSales = CALCULATE
(
SUMX(Sales, Sales[Sales Amount]),
FILTER(
Sales,
RELATED('Date'[Date]) >= first && RELATED('Date'[Date]) <= currentDate
)
)
return totalSales

Perbandingan penjualan periode sekarang dengan periode yang sama tahun sebelumnya (DATEADD,FIRSTDATE,LASTDATE) secara berdampingan

Pertimbangkan skenario di mana kami ingin membandingkan penjualan pada periode di tahun 2020 dan periode yang sama di tahun 2019. Fungsi DATEADD memungkinkan hal ini

Pengukuran DAX untuk menghitung penjualan pada periode yang sama tahun lalu

NumberOfSundays = 
VAR first = FIRSTDATE(MyCalendar[Date])
VAR last = LASTDATE(MyCalendar[Date])
VAR daysInBetween = DATESBETWEEN(MyCalendar[Date] , first, last)
VAR datesWithSundays=FILTER(daysInBetween, WEEKDAY(MyCalendar[Date])==1)
VAR countOfSundays = COUNTROWS(datesWithSundays)
return countOfSundays
_0

visual matriks

Visual bagan kolom tergugus

Lonjakan penjualan bulanan (BULAN SEBELUMNYA)

Objektif

Kami ingin membandingkan pertumbuhan/penurunan penjualan dari bulan ke bulan. Mengingat tahun yang dipilih, kami ingin memplot histogram di mana setiap bulan kami ingin melihat perbedaan Penjualan di bulan itu w. r. t bulan sebelumnya

ukuran DAX

NumberOfSundays = 
VAR first = FIRSTDATE(MyCalendar[Date])
VAR last = LASTDATE(MyCalendar[Date])
VAR daysInBetween = DATESBETWEEN(MyCalendar[Date] , first, last)
VAR datesWithSundays=FILTER(daysInBetween, WEEKDAY(MyCalendar[Date])==1)
VAR countOfSundays = COUNTROWS(datesWithSundays)
return countOfSundays
_1

Bagan kolom tergugus

STARTOFMONTH,ENDOFMONTH

Dokumentasi Microsoft untuk STARTOFMONTH dan ENDOFMONTH dapat ditemukan di sini dan di sini. Untuk memahami cara kerja fungsi ini, mari kita menulis kueri DAX di tabel MyCalendar dan menampilkan hasilnya setiap bulan

kueri DAX Studio

NumberOfSundays = 
VAR first = FIRSTDATE(MyCalendar[Date])
VAR last = LASTDATE(MyCalendar[Date])
VAR daysInBetween = DATESBETWEEN(MyCalendar[Date] , first, last)
VAR datesWithSundays=FILTER(daysInBetween, WEEKDAY(MyCalendar[Date])==1)
VAR countOfSundays = COUNTROWS(datesWithSundays)
return countOfSundays
_2

Hasil DAX Studio

Penjualan harian sebagai persentase dari total penjualan bulanan (STARTOFMONTH, ENDOFMONTH)

Objektif

Kami ingin memplot penjualan harian sebagai persentase dari total penjualan di bulan itu untuk setiap bagian waktu tertentu

ukuran DAX

NumberOfSundays = 
VAR first = FIRSTDATE(MyCalendar[Date])
VAR last = LASTDATE(MyCalendar[Date])
VAR daysInBetween = DATESBETWEEN(MyCalendar[Date] , first, last)
VAR datesWithSundays=FILTER(daysInBetween, WEEKDAY(MyCalendar[Date])==1)
VAR countOfSundays = COUNTROWS(datesWithSundays)
return countOfSundays
_3

Visual

Koreksi — Ukurannya harus '% dari Penjualan Bulanan'

HARI BERIKUTNYA, SEBELUM USDDAY

Dokumentasi Microsoft untuk NEXTDAY dan PREVIOUSDAY dapat ditemukan di sini dan di sini. Ini paling baik dipahami melalui kueri berikut yang ditulis di DAX Studio. Dalam kueri ini kami meringkas pertama berdasarkan Tahun, diikuti oleh Bulan dan kemudian menampilkan hasil HARI SEBELUMNYA/ HARI BERIKUTNYA

kueri DAX Studio

NumberOfSundays = 
VAR first = FIRSTDATE(MyCalendar[Date])
VAR last = LASTDATE(MyCalendar[Date])
VAR daysInBetween = DATESBETWEEN(MyCalendar[Date] , first, last)
VAR datesWithSundays=FILTER(daysInBetween, WEEKDAY(MyCalendar[Date])==1)
VAR countOfSundays = COUNTROWS(datesWithSundays)
return countOfSundays
_4

Penyimpangan dari dokumentasi Microsoft

Saya mengamati sedikit perbedaan dalam perilaku fungsi NEXTDAY sesuai dokumentasi Microsof. Saat menulis artikel ini, kata dokumentasi MS
Mengembalikan tabel yang berisi kolom semua tanggal dari hari berikutnya, berdasarkan tanggal pertama yang ditentukan di kolom tanggal dalam konteks saat ini. Menurut pendapat saya, seharusnya begitu
…berdasarkan tanggal terakhir yang ditentukan di kolom tanggal dalam konteks saat ini

Lonjakan Penjualan Harian (HARI SEBELUMNYA)

Objektif

Diberikan setiap potongan waktu (mis. g a Month) plot perubahan harian dalam Penjualan. Contoh. Jika ini diplot pada bagan kolom, maka bilah untuk tanggal 5 Juni harus menunjukkan perbedaan antara penjualan pada tanggal 5 Juni dan 4 Juni.

Ukuran kustom

NumberOfSundays = 
VAR first = FIRSTDATE(MyCalendar[Date])
VAR last = LASTDATE(MyCalendar[Date])
VAR daysInBetween = DATESBETWEEN(MyCalendar[Date] , first, last)
VAR datesWithSundays=FILTER(daysInBetween, WEEKDAY(MyCalendar[Date])==1)
VAR countOfSundays = COUNTROWS(datesWithSundays)
return countOfSundays
_5

Visual

MULAI TAHUN, ENDOF TAHUN

Dokumentasi Microsoft untuk STARTOFYEAR dan ENDOFYEAR dapat ditemukan di sini dan di sini. Ini paling baik dipahami melalui kueri berikut yang ditulis di DAX Studio. STARTOFYEAR dan ENDOFYEAR memiliki parameter kedua yang defaultnya adalah 31 Desember. Ini adalah akhir tahun keuangan

Kueri studio DAX dengan akhir tahun default

Kami memeriksa perilaku saat kami tidak menentukan akhir tahun default apa pun (mis. e. 31 Desember)

NumberOfSundays = 
VAR first = FIRSTDATE(MyCalendar[Date])
VAR last = LASTDATE(MyCalendar[Date])
VAR daysInBetween = DATESBETWEEN(MyCalendar[Date] , first, last)
VAR datesWithSundays=FILTER(daysInBetween, WEEKDAY(MyCalendar[Date])==1)
VAR countOfSundays = COUNTROWS(datesWithSundays)
return countOfSundays
_6

Hasil dengan akhir tahun default

Ekspresi DAX saat menggunakan akhir tahun kustom

NumberOfSundays = 
VAR first = FIRSTDATE(MyCalendar[Date])
VAR last = LASTDATE(MyCalendar[Date])
VAR daysInBetween = DATESBETWEEN(MyCalendar[Date] , first, last)
VAR datesWithSundays=FILTER(daysInBetween, WEEKDAY(MyCalendar[Date])==1)
VAR countOfSundays = COUNTROWS(datesWithSundays)
return countOfSundays
_7

Hasil dengan akhir tahun khusus

Kami sekarang menentukan akhir tahun khusus (15 Maret). 'Akhir tahun' mendefinisikan akhir tahun fiskal. Bagaimana perilaku berubah?

Peringatan

Ekspresi DAX yang disajikan di atas menunjukkan kerentanan rumus STARTOFYEAR dan ENDOFYEAR terhadap parameter 'akhir tahun'. Jika ada kebutuhan akhir tahun khusus untuk memenuhi standar akuntansi keuangan, maka setiap perhitungan yang melibatkan STARTOFYEAR dan ENDOFYEAR harus memiliki parameter 'akhir tahun'. Hal ini membuat saya merasa lebih aman untuk menentukan periode keuangan melalui tabel tanggal khusus, seperti pada contoh MyCalendar[FinancialYear] dan juga pada tabel Date[Fiscal Year] Adventure Works

DATESYTD

Fungsi DATESYTD bekerja dengan cara yang mirip dengan DATESMTD. Fungsi menghasilkan tabel tanggal dengan tanggal mulai dari hari pertama tahun hingga tanggal saat ini dalam konteksnya. Perilaku fungsi ini sensitif terhadap parameter “year_end_date”. Secara default ini diatur ke 31 Desember. Kapan DATESYTD berguna? . (Lihat bagian DATESMTD). Mari kita tulis kueri DAX berikut untuk lebih memahami perilaku fungsi ini

kueri DAX Studio

NumberOfSundays = 
VAR first = FIRSTDATE(MyCalendar[Date])
VAR last = LASTDATE(MyCalendar[Date])
VAR daysInBetween = DATESBETWEEN(MyCalendar[Date] , first, last)
VAR datesWithSundays=FILTER(daysInBetween, WEEKDAY(MyCalendar[Date])==1)
VAR countOfSundays = COUNTROWS(datesWithSundays)
return countOfSundays
_8

Perbedaan antara PARALLELPERIOD dan DATEADD

Fungsi PARALLELPERIOD dan DATEADD tampak serupa. Namun, ada perbedaan penting. Dokumentasi Microsoft untuk PARALLELPERIOD dan DATEADD masing-masing dapat ditemukan di sini dan di sini. Perhatikan cetakan kecil dalam dokumentasi PARALLELPERIOD

Fungsi PARALLELPERIOD mirip dengan fungsi DATEADD kecuali bahwa PARALLELPERIOD selalu mengembalikan periode penuh pada tingkat perincian yang diberikan, bukan periode parsial yang dikembalikan DATEADD. Misalnya, jika Anda memiliki pilihan tanggal yang dimulai pada 10 Juni dan berakhir pada 21 Juni di tahun yang sama, dan Anda ingin menggeser pilihan tersebut maju satu bulan, maka fungsi PARALLELPERIOD akan mengembalikan semua tanggal dari bulan berikutnya (Juli

Mari kita menulis beberapa kueri DAX khusus untuk memahami perbedaannya. Di DAX berikut, kami membuat tabel KALENDER hanya dengan bulan Jan dan Feb (hingga 25) di tahun 2017. Kami merangkum hasilnya berdasarkan WEEKNUM dan menampilkan hasil FIRSTDATE/LASTDATE pada PARALLELPERIOD dan DATEADD. Kami meningkatkan PARALLELPERIOD/DATEADD dengan interval 1 bulan

Studio DAX

NumberOfSundays = 
VAR first = FIRSTDATE(MyCalendar[Date])
VAR last = LASTDATE(MyCalendar[Date])
VAR daysInBetween = DATESBETWEEN(MyCalendar[Date] , first, last)
VAR datesWithSundays=FILTER(daysInBetween, WEEKDAY(MyCalendar[Date])==1)
VAR countOfSundays = COUNTROWS(datesWithSundays)
return countOfSundays
_9

Hasil

Rentang pergerakan 10 hari (min-max) dari penjualan harian (FIRSTTDATE, DATEADD,RELATED,FILTER, SUMMARIZE, MAXX, MINX)

Objektif

Kami ingin melakukan analisis jendela bergerak dalam jangka waktu tertentu. Untuk setiap hari dalam periode ini, lihat kembali N hari dan hitung beberapa statistik selama jangka waktu N hari ini. Statistik tersebut dapat berupa penjualan harian rata-rata — umumnya dikenal sebagai “rata-rata bergerak” atau “rata-rata bergulir”. Demikian juga, kita juga bisa menghitung "moving range", yaitu. e. perbedaan antara penjualan harian tertinggi dan terendah selama jangka waktu N hari

Pengukuran DAX kustom

NumberOfFriday13th = 
VAR first = FIRSTDATE(MyCalendar[Date])
VAR last = LASTDATE(MyCalendar[Date])
VAR between = DATESBETWEEN(MyCalendar[Date],first, last)
VAR days = COUNTROWS
(
FILTER(
between,
WEEKDAY(MyCalendar[Date])==6 && DAY(MyCalendar[Date])==13
)
)
return days
0

Hasil

Rata-rata pergerakan 10 hari dari penjualan harian (FIRSTDATE, DATEADD,RELATED,FILTER, SUMX)

Objektif

Mengambil inspirasi dari 'rentang pergerakan 10 hari', kami akan mencoba melakukan 'rata-rata pergerakan 10 hari'. Prinsipnya identik

Apa fungsi dalam power bi?

Fungsi adalah rumus yang telah ditentukan sebelumnya yang melakukan penghitungan dengan menggunakan nilai tertentu, yang disebut argumen, dalam urutan atau struktur tertentu . Argumen dapat berupa fungsi lain, rumus lain, ekspresi, referensi kolom, angka, teks, nilai logika seperti BENAR atau SALAH, atau konstanta.

Bagaimana Anda menggunakan fungsi di power bi?

Mengaktifkan fungsi kustom sebagai kolom baru . Di dalam jendela Aktifkan Fungsi Kustom, masukkan Tabel Output sebagai nama kolom Baru. Pilih nama fungsi Anda, Transform file, dari dropdown kueri Fungsi. Inside the Add Column tab in the ribbon, select Invoke Custom Function from the General group. Inside the Invoke Custom Function window, enter Output Table as the New column name. Select the name of your function, Transform file, from the Function query dropdown.

Apa fungsi DAX yang paling umum digunakan di power bi?

Tipe fungsi DAX .
Fungsi Tanggal dan Waktu. Fungsi waktu tanggal melakukan perhitungan pada nilai tanggal dan waktu. .
Fungsi Kecerdasan Waktu. .
Fungsi Informasi. .
Fungsi Logika. .
Fungsi Matematika dan Trigonometri. .
Fungsi Statistik. .
Fungsi Teks. .
Fungsi Orangtua-Anak

Apa itu rumus DAX?

Data Analysis Expressions (DAX) adalah bahasa ekspresi formula yang digunakan di Analysis Services, Power BI, dan Power Pivot di Excel . Rumus DAX menyertakan fungsi, operator, dan nilai untuk melakukan penghitungan lanjutan dan kueri pada data dalam tabel dan kolom terkait dalam model data tabular.