Lewati ke konten utama

Akhir Pekan DAX: Temukan Akhir Pekan dan Batas Minggu di Power BI

Tingkatkan dasbor Power BI Anda dengan rumus DAX untuk akhir pekan dan batas minggu.
· 12 mnt Baca

Jelajahi bersama AI

Jika Anda pernah bekerja dengan DAX, Anda tahu bahwa tanggal bisa cepat menjadi rumit. Semuanya terasa baik-baik saja sampai seseorang berkata, “Minggu pelaporan kami dimulai pada hari Sabtu,” atau “Bisakah kita menyorot akhir pekan secara berbeda di dasbor?” Tiba-tiba Anda masuk ke jenis keluaran WEEKDAY(), logika offset, dan mencoba menjelaskan mengapa Power BI menganggap Jumat adalah akhir minggu sementara bisnis Anda berkata sebaliknya.

Kebanyakan dari kita pernah mengalami masalah ini: Anda perlu menandai akhir pekan, menghitung hari kerja, atau menentukan batas minggu kustom yang tidak cocok dengan kalender standar. Mungkin gudang Anda beroperasi Minggu hingga Kamis, atau tim keuangan ingin menghitung hari kerja dengan mengecualikan akhir pekan.

Secara bawaan, DAX tidak menangani itu dengan sempurna, tetapi menyediakan blok bangunannya untuk memperbaikinya. Dalam artikel ini, kita akan melihat cara menandai akhir pekan menggunakan WEEKDAY(), menentukan batas minggu (misalnya, Sabtu–Jumat), menghitung hari kerja dengan NETWORKDAYS() atau logika kondisional, dan menggunakan perhitungan tersebut untuk mendorong metrik yang benar-benar masuk akal di Power BI

Memahami Akhir Pekan di DAX

Mari mulai dari dasar, menentukan hari mana yang merupakan akhir pekan di dataset Anda. DAX menyediakan fungsi WEEKDAY() untuk ini, dan fungsinya cukup fleksibel setelah Anda tahu bagaimana sistem penomorannya bekerja. Secara default, WEEKDAY() mengembalikan angka 1 sampai 7 yang merepresentasikan hari dalam seminggu untuk suatu tanggal. Argumen kedua mengontrol bagaimana angka-angka tersebut dipetakan. Versi yang paling sering digunakan pengembang adalah WEEKDAY(date, 2), yang mengembalikan 1 untuk Senin hingga 7 untuk Minggu, sesuai dengan standar ISO yang digunakan sebagian besar kalender bisnis.

Berikut contoh singkatnya:

Tanggal

WEEKDAY(Date, 2)

Hari

2025-10-13

1

Senin

2025-10-14

2

Selasa

2025-10-18

6

Sabtu

2025-10-19

7

Minggu

Sekarang mari kita buat ini berguna. Anda dapat menambahkan kolom terhitung di tabel Date untuk menandai akhir pekan:

IsWeekend =
VAR DayNum = WEEKDAY('Date'[Date], 2)
RETURN IF(DayNum > 5, TRUE(), FALSE())

Berikut yang terjadi:

  • WEEKDAY('Date'[Date], 2) memberi Anda nomor hari (1 = Senin, …, 7 = Minggu).

  • DayNum > 5 mengidentifikasi Sabtu (6) dan Minggu (7).

  • Kolom mengembalikan TRUE untuk akhir pekan, FALSE untuk hari kerja.

Jika minggu Anda tidak mengikuti pola Senin–Jumat standar, misalnya bisnis Anda menganggap Jumat dan Sabtu sebagai akhir pekan, Anda dapat menyesuaikan logikanya dengan mudah:

IsWeekend_Custom =
VAR DayNum = WEEKDAY('Date'[Date], 2)
RETURN IF(DayNum IN {5, 6}, TRUE(), FALSE())

Perubahan satu baris ini membuat model Anda sesuai untuk kalender operasional kustom. Setelah membuat kolom ini, letakkan ke visual tabel sederhana di Power BI bersama bidang Date dan periksa apakah hari akhir pekan Anda sudah selaras dengan benar.

Cara Membuat Batas Minggu Kustom

Kebanyakan model Power BI mengasumsikan kalender Senin–Minggu, tetapi pelaporan di dunia nyata jarang mengikuti itu dengan rapi. Dasbor ritel, misalnya, sering ditutup pada hari Jumat; beberapa organisasi justru melacak siklus Sabtu–Jumat. Di DAX, Anda dapat membuat batas minggu kustom yang sesuai dengan kalender bisnis Anda. Mari kita telusuri cara melakukannya dengan rapi, langkah demi langkah.

Menetapkan minggu berakhir pada Jumat

Jika minggu bisnis Anda berakhir pada Jumat, Anda dapat menetapkan setiap tanggal ke tanggal akhir minggu yang sesuai. Logikanya sederhana: ambil setiap tanggal, temukan nomor harinya, dan offset ke depan hingga mencapai Jumat.

Berikut rumus kolom terhitungnya:

WeekEnd_Friday =
VAR WeekdayIndex = WEEKDAY('Date'[Date], 2)        // Monday = 1, Sunday = 7
VAR DaysToFriday = 5 - WeekdayIndex                // 5 represents Friday
RETURN
'Date'[Date] + IF(DaysToFriday < 0, DaysToFriday + 7, DaysToFriday)

Ini yang dilakukan:

  • WEEKDAY('Date'[Date], 2) memberi Anda indeks hari (Monday = 1).

  • Anda menghitung seberapa jauh tanggal tersebut dari Jumat.

  • Jika hari sudah melewati Jumat (misalnya, Sabtu atau Minggu), maka bergulir ke Jumat berikutnya dengan menambahkan 7 hari.

Pendekatan ini mengelompokkan semua tanggal antara Sabtu dan Jumat dalam minggu yang sama, berakhir pada Jumat.

Untuk memeriksanya:

  • Tambahkan kolom ini ke tabel Date Anda.

  • Buat visual tabel di Power BI dengan Date dan WeekEnd_Friday.

  • Anda akan melihat setiap rangkaian Sabtu–Jumat dipetakan ke tanggal akhir minggu yang sama.

Menetapkan minggu dimulai pada Sabtu

Jika minggu pelaporan Anda dimulai pada Sabtu, Anda dapat memasangkan rumus sebelumnya dengan kolom awal minggu. Anda dapat melakukannya menggunakan logika yang sama namun dibalik, cari Sabtu terbaru relatif terhadap setiap tanggal.

Berikut kolom DAX pendampingnya:

WeekStart_Saturday =
VAR WeekdayIndex = WEEKDAY('Date'[Date], 2)       // Monday = 1, Sunday = 7
VAR DaysSinceSaturday = WeekdayIndex - 6          // 6 represents Saturday
RETURN
'Date'[Date] - IF(DaysSinceSaturday < 0, DaysSinceSaturday + 7, DaysSinceSaturday)

Ini bekerja hampir identik dengan ekspresi sebelumnya, tetapi menggeser mundur ke Sabtu sebelumnya.

Anda juga mungkin melihat contoh kode lama yang menggunakan fungsi EARLIER() untuk menangkap konteks baris saat ini di dalam kolom terhitung. Misalnya:

WeekStart_Saturday =
VAR CurrentDate = EARLIER('Date'[Date])
VAR WeekdayIndex = WEEKDAY(CurrentDate, 2)
VAR DaysSinceSaturday = WeekdayIndex - 6
RETURN
CurrentDate - IF(DaysSinceSaturday < 0, DaysSinceSaturday + 7, DaysSinceSaturday)

DAX modern tidak memerlukan EARLIER() dalam skenario ini, karena kolom terhitung sudah dievaluasi baris demi baris, tetapi tetap berguna untuk dipahami bagi model lama atau saat menumpuk konteks baris dalam iterator.

Setelah Anda menambahkan kedua kolom ini, coba plot WeekStart_Saturday dan WeekEnd_Friday dalam visual tabel bersama kolom Date Anda. Anda akan melihat batas minggu yang jelas mengikuti ritme bisnis Anda, bukan kalender default.

Selanjutnya, Anda dapat menggunakan tanggal awal dan akhir minggu ini sebagai kunci pengelompokan di visual atau sebagai jangkar dalam measure, sempurna untuk menghitung total per minggu bisnis, membandingkan performa antar minggu, atau menyelaraskan dengan kalender fiskal non-standar.

Memilih antara Kolom dan Measure

Setelah Anda menyiapkan batas minggu kustom, ada baiknya menentukan cara menggunakannya di model Anda, sebagai kolom terhitung atau sebagai measure. Keduanya punya peran, dan mengetahui kapan menggunakan masing-masing membuat model Power BI Anda efisien dan dapat diprediksi.

Anggap kolom terhitung sebagai atribut statis yang ingin Anda gunakan untuk mengiris atau memfilter. Misalnya, kolom IsWeekend, WeekStart_Saturday, atau WeekEnd_Friday menggambarkan setiap tanggal. Kolom tersebut tidak bergantung pada interaksi pengguna atau filter; kolom ini hanya mendefinisikan apa yang terjadi pada tiap hari. Itu membuatnya ideal untuk mengelompokkan visual, menyiapkan relasi, atau membangun hierarki.

Sebaliknya, measure adalah perhitungan dinamis yang merespons filter, slicer, dan konteks. Jika Anda meringkas atau membandingkan metrik, misalnya menghitung hari kerja dalam rentang terpilih atau menghitung rata-rata penjualan per minggu, Anda akan memerlukan measure.

Berikut perbandingan cepat yang perlu diingat:

Use Case

Tipe

Contoh

Identifikasi akhir pekan atau batas minggu

Kolom terhitung

IsWeekend = IF(WEEKDAY('Date'[Date],2)>5,TRUE(),FALSE())

Mengiris visual berdasarkan rentang minggu kustom

Kolom terhitung

WeekStart_Saturday, WeekEnd_Friday

Menghitung hari kerja dalam filter saat ini

Measure

WorkingDays = COUNTROWS(FILTER('Date', 'Date'[IsWeekend] = FALSE()))

Membandingkan total penjualan antar minggu kustom

Measure

TotalSalesByWeek = SUM(Sales[Amount]) dikelompokkan berdasarkan WeekStart_Saturday

Singkat:

  • Jika Anda perlu hasilnya disimpan pada setiap baris (dan dapat digunakan di slicer atau filter), gunakan kolom.
  • Jika Anda memerlukan perhitungan yang diperbarui sesuai interaksi pengguna, gunakan measure.

Menghitung Hari Kerja dengan NETWORKDAYS()

Setelah akhir pekan dan batas minggu Anda ditentukan, langkah logis berikutnya adalah menghitung hari kerja—jumlah hari kerja di antara dua tanggal, dengan opsi mengecualikan hari libur. Power BI dan DAX mempermudah hal ini dengan fungsi NETWORKDAYS() yang diperkenalkan di versi DAX terbaru.

Dalam bentuk paling sederhana, sintaksnya seperti ini:

NETWORKDAYS(<start_date>, <end_date>[, <weekend>[, <holidays>]])

Berikut cara kerja tiap parameter:

  • <start_date> dan <end_date> menentukan rentang Anda.

  • <weekend> bersifat opsional dan memungkinkan Anda menentukan hari mana yang dihitung sebagai akhir pekan.

  • <holidays> juga opsional — Anda dapat meneruskan kolom atau tabel tanggal libur untuk mengecualikannya dari hitungan.

Memahami Kode Akhir Pekan

Argumen <weekend> menggunakan kode numerik untuk menentukan hari mana yang dianggap akhir pekan. Berikut beberapa opsi standar yang kemungkinan Anda gunakan:

Kode

Hari Akhir Pekan

Deskripsi

1

Sabtu, Minggu

Default (pekan kerja Barat)

7

Jumat, Sabtu

Umum pada kalender Timur Tengah

11

Hanya Minggu

Untuk penutupan khusus hari Minggu

12

Hanya Senin

Untuk hari tidak bekerja khusus Senin

Misalnya, jika pekan kerja Anda berlangsung dari Minggu hingga Kamis, Anda akan menggunakan kode 7 untuk akhir pekan Jumat–Sabtu.

Berikut cara menghitung hari kerja antara dua kolom di model Anda:

WorkingDays_Default =
NETWORKDAYS('Sales'[StartDate], 'Sales'[EndDate])

Rumus tersebut mengasumsikan Sabtu dan Minggu sebagai akhir pekan. Jika bisnis Anda mengikuti akhir pekan Jumat–Sabtu, Anda dapat menyesuaikannya seperti ini:

WorkingDays_FriSat =
NETWORKDAYS('Sales'[StartDate], 'Sales'[EndDate], 7)

Mengecualikan hari libur

Anda dapat melangkah lebih jauh dengan mengecualikan hari libur resmi yang disimpan di tabel khusus Holiday. Misalkan Anda memiliki tabel dengan kolom Holiday[Date]. Berikut cara menyertakannya:

WorkingDays_WithHolidays =
NETWORKDAYS(
    'Sales'[StartDate],
    'Sales'[EndDate],
    1,
    'Holiday'[Date]
)

Pengaturan ini memastikan bahwa akhir pekan dan hari libur yang didefinisikan organisasi Anda dilewati dari hitungan. Penambahan kecil ini membuat laporan Anda jauh lebih akurat, terutama untuk perencanaan tenaga kerja, pemantauan SLA, atau dasbor operasional.

Contoh Penggunaan

Bayangkan perusahaan Anda melacak linimasa proyek di Power BI. Setiap catatan memiliki StartDate dan EndDate. Dengan menambahkan measure WorkingDays_WithHolidays, Anda dapat dengan cepat memvisualisasikan:

  • Berapa banyak hari kerja yang dibutuhkan setiap proyek?
  • Proyek mana yang melintasi akhir pekan atau hari libur nasional?
  • Rata-rata durasi kerja per departemen atau jenis proyek.

Untuk melihatnya secara langsung, letakkan measure ini ke visual tabel bersama Project Name, StartDate, dan EndDate. Anda akan langsung mendapatkan gambaran linimasa yang lebih bermakna berdasarkan hari kerja aktual, bukan sekadar selisih tanggal mentah.

Penerapan Praktis di Dasbor Bisnis

Setelah Anda memiliki hari kerja, penanda akhir pekan, dan batas minggu kustom, mari lihat bagaimana semuanya pas di dasbor Power BI dunia nyata. Kemampuan untuk mendefinisikan ulang akhir pekan atau minggu fiskal bukan sekadar trik teknis; hal ini berdampak langsung pada cara metrik dihitung, divisualisasikan, dan dipahami di berbagai departemen.

Batas waktu penggajian dan timesheet

Banyak organisasi memproses penggajian pada siklus Sabtu–Jumat atau Minggu–Sabtu tetap. Dengan mendefinisikan batas minggu di DAX, Anda dapat menyelaraskan periode gaji, perhitungan lembur, dan entri timesheet dengan tepat pada minggu kerja yang digunakan sistem HR Anda. Misalnya, Anda dapat menghitung total jam kerja atau shift yang diselesaikan per minggu kustom, memastikan laporan penggajian selaras sempurna dengan jadwal internal alih-alih kalender Senin–Minggu default.

KPI operasional dan pemantauan layanan

Tim operasional dan logistik sering mengukur KPI seperti waktu putar pengiriman atau penyelesaian insiden dengan hanya menggunakan hari kerja. Menggunakan NETWORKDAYS() memastikan metrik tersebut mencerminkan kapasitas bisnis dunia nyata, bukan akhir pekan saat tidak ada aktivitas.

Memadukan perhitungan hari kerja Anda dengan kolom WeekStart_Saturday atau WeekEnd_Friday memungkinkan Anda mengelompokkan data berdasarkan minggu operasional yang tepat yang dilacak manajemen dalam rapat dan laporan.

Ritel dan performa penjualan

Peritel jarang mengikuti minggu kalender. Banyak yang memilih Sabtu hingga Jumat untuk menangkap seluruh periode penjualan akhir pekan dalam satu blok pelaporan yang konsisten. Dengan memodelkan tabel tanggal Anda di sekitar jadwal tersebut, tren penjualan akhir pekan tetap utuh dalam minggu yang sama, membuat perbandingan antar akhir pekan lebih bermakna. Penyesuaian kecil ini dapat mencegah visual “minggu-ke-minggu” yang terdistorsi dan memberikan rata-rata berjalan yang lebih akurat.

Minggu fiskal kustom dan peramalan

Beberapa tim keuangan bekerja dengan minggu fiskal yang dimulai di tengah minggu atau mengikuti pola akuntansi 4-4-5. Batas minggu kustom Anda dapat dengan mudah dipasang ke dalamnya.Setelah tabel tanggal Anda menyertakan kolom WeekStart dan WeekEnd, measure seperti pengakuan pendapatan, pelacakan biaya, atau peramalan dapat diagregasikan secara konsisten, apa pun seunik apa pun kalender fiskal Anda.

Rata-rata bergerak berbasis hari kerja

Saat menghitung rata-rata bergerak, terutama untuk KPI seperti penjualan harian atau tingkat produksi, lebih baik mendasarkan perhitungan pada hari kerja daripada hari kalender.

Misalnya, jika akhir pekan dikecualikan menggunakan penanda IsWeekend Anda, rata-rata berjalan 7 hari benar-benar mencerminkan satu minggu bisnis aktivitas, tanpa lonjakan atau penurunan menyesatkan pada hari tidak bekerja.

Singkatnya, definisi minggu kustom dan logika hari kerja membawa dasbor Power BI Anda lebih dekat dengan cara bisnis Anda sebenarnya beroperasi. Baik Anda melacak batas penggajian, waktu tunggu pengiriman, atau puncak penjualan akhir pekan, pola DAX ini membuat insight Anda lebih bersih, adil, dan jauh lebih dapat ditindaklanjuti.

Hal-Hal Penting untuk Diingat

Sebelum menutup, mari merangkum poin utama agar Anda dapat menerapkan teknik DAX ini secara efektif di proyek Power BI Anda.

  • Gunakan kolom terhitung untuk klasifikasi per baris: Saat Anda perlu memberi label tiap tanggal, seperti menandai akhir pekan, menetapkan batas minggu, atau mengategorikan hari bisnis, kolom terhitung adalah pilihan terbaik. Kolom ini menyediakan atribut statis yang bekerja mulus di slicer, filter, dan relasi di seluruh model Anda.

  • Gunakan WEEKDAY() dengan cermat menggunakan tipe keluaran yang tepat: Ingat bahwa WEEKDAY(date, 2) memulai hitungan pada Senin (1) dan berakhir pada Minggu (7). Menyesuaikan parameter ini membantu Anda menyelaraskan perhitungan dengan standar pekan kerja regional atau organisasi. Selalu periksa ulang tipe keluaran Anda. Ini adalah salah satu sumber kesalahan off-by-one paling umum dalam logika waktu DAX.

  • NETWORKDAYS() adalah andalan untuk mengecualikan akhir pekan dan hari libur: Fungsi ini menyederhanakan perhitungan hari kerja, menyelamatkan Anda dari filter tanggal yang rumit atau loop manual. Gabungkan dengan kode akhir pekan perusahaan Anda dan tabel hari libur untuk mendapatkan hitungan akurat yang mencerminkan hari bisnis nyata, bukan sekadar jeda kalender.

Dengan menguasai dasar-dasar ini—struktur minggu kustom, logika hari kerja yang cermat, dan hitungan hari kerja yang presisi—Anda akan menghadirkan lebih banyak akurasi dan fleksibilitas ke setiap dasbor Power BI yang Anda bangun. Lain kali Anda menyiapkan model tanggal atau menyelaraskan laporan dengan kalender bisnis, pola DAX ini harus berada di urutan teratas perlengkapan Anda 

Kesalahan Umum yang Harus Dihindari

Bahkan pengembang Power BI berpengalaman bisa terjebak pada jebakan halus saat bekerja dengan logika tanggal dan minggu di DAX. Berikut beberapa masalah yang perlu diwaspadai:

Tertukar kutip saat membandingkan teks

DAX membedakan tanda kutip tunggal (') dan ganda ("), dan menggunakan yang salah dapat merusak logika Anda, terutama saat membandingkan nilai teks seperti nama hari atau penanda. Misalnya:

IsWeekend = IF(WEEKDAY('Date'[Date], 2) > 5, "Weekend", "Weekday")

Selalu gunakan tanda kutip ganda untuk string teks di dalam fungsi 

Tanda kutip tunggal dicadangkan untuk referensi tabel dan kolom, seperti 'Date'[Date].

Melupakan konteks baris 

Ini adalah salah satu kesalahan konseptual paling umum. Kolom terhitung dievaluasi tiap baris secara independen, sedangkan measure bergantung pada konteks filter dan evaluasi. Jika Anda mereferensikan kolom tanpa agregasi dalam measure, perilakunya tidak akan sesuai harapan karena tidak ada konteks baris. Misalnya, IF(WEEKDAY('Date'[Date], 2) > 5, TRUE(), FALSE()) bekerja sebagai kolom terhitung, tetapi jika Anda membutuhkannya merespons filter secara dinamis, Anda perlu membungkusnya dengan iterator seperti SUMX() atau menggunakannya dalam measure yang menghitung atau memfilter baris.

Mengabaikan zona waktu atau penyelarasan kalender 

Saat menggunakan data terimpor dengan cap waktu, fungsi tanggal DAX beroperasi pada porsi tanggal dari kolom Anda. Jika data Anda melintasi zona waktu atau menggunakan penyesuaian UTC, penanda akhir pekan tersebut bisa bergeser tak terduga. Selalu bersihkan dan normalkan field datetime Anda di Power Query sebelum menerapkan logika DAX.

Mengehardcode logika akhir pekan 

Hindari menanamkan logika tetap seperti “Sabtu dan Minggu” langsung di banyak rumus. Sebagai gantinya, definisikan variabel yang dapat digunakan ulang atau tabel terputus yang mencantumkan hari akhir pekan organisasi Anda. Ini memudahkan pemeliharaan saat kalender bisnis berubah.

Menangkap masalah kecil ini lebih awal dapat menghemat berjam-jam debugging di kemudian hari. Jika ragu, gunakan Tampilan Data di Power BI untuk memeriksa hasil kolom terhitung baris demi baris; ini adalah salah satu cara tercepat untuk memverifikasi bahwa logika DAX Anda berperilaku sesuai maksud sebelum memasukkannya ke visual atau measure.

Kesimpulan

Bekerja dengan akhir pekan dan batas minggu kustom di DAX bukan hanya soal matematika tanggal; ini tentang membuat model Power BI Anda mencerminkan bagaimana bisnis Anda sebenarnya berjalan. Baik Anda menandai Sabtu dan Minggu sebagai hari tidak bekerja, menyelaraskan minggu fiskal dari Sabtu hingga Jumat, atau menghitung hari kerja yang mengecualikan hari libur, tujuannya sama: akurasi dan konteks dalam setiap perhitungan.

Anda telah melihat bagaimana fungsi seperti WEEKDAY() dan NETWORKDAYS() membantu mendefinisikan logika tanggal yang fleksibel dan bagaimana kolom terhitung serta measure memainkan perannya masing-masing: yang satu untuk struktur dan yang lain untuk analisis dinamis. Sepanjang jalan, kita telah meninjau kasus penggunaan nyata, dari batas penggajian hingga kalender ritel, dan mempelajari cara menghindari jebakan DAX umum, seperti salah penggunaan tanda kutip atau hilangnya konteks baris.

Lain kali Anda membuat dasbor Power BI yang berurusan dengan tanggal, berpikirlah melampaui kalender default. Kustomisasi minggu Anda, buat akhir pekan eksplisit, dan perlakukan hari kerja sebagai metrik kelas satu yang semestinya. Dengan pola DAX ini di perlengkapan Anda, laporan Anda tidak hanya menampilkan waktu, tetapi menampilkan waktu sebagaimana dialami organisasi Anda.

Oluseye Jeremiah

Penulis

Oluseye Jeremiah

Penulis teknis yang mengkhususkan diri pada AI, ML, dan ilmu data, membuat gagasan kompleks menjadi jelas dan mudah diakses.

Topik

Terkait

blogs

Spaghetti Plot dan Jalur Badai

blogs

Tutorial Korelasi di R

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026