DAX ile bir süre çalıştıysanız, tarihlerle işlerin nasıl hızla karmaşıklaşabildiğini biliyorsunuzdur. Her şey yolunda giderken biri çıkar ve “Raporlama haftamız Cumartesi başlıyor,” ya da “Gösterge tablosunda hafta sonlarını farklı renkle vurgulayabilir miyiz?” der. Sonra bir anda WEEKDAY() dönüş türlerine, ofset mantığına dalar ve Power BI’ın haftanın bitişinin Cuma olduğunu düşündüğünü, oysa işinizin başka bir şey söylediğini açıklamaya çalışırsınız.
Çoğumuz bu sorunla karşılaştık: hafta sonlarını işaretlemeniz, çalışma günlerini hesaplamanız ya da standart takvimle örtüşmeyen özel hafta sınırları tanımlamanız gerekir. Belki de deponuz Pazar’dan Perşembe’ye çalışıyor ya da finans ekibiniz hafta sonlarını hariç tutarak çalışma günlerini saymak istiyor.
Kutu dışı DAX bunu kusursuz yapmaz, ancak düzeltmeniz için yapı taşlarını sunar. Bu yazıda, WEEKDAY() kullanarak hafta sonlarını nasıl işaretleyeceğinize, hafta sınırlarını nasıl tanımlayacağınıza (örneğin, Cumartesi–Cuma), NETWORKDAYS() veya koşullu mantıkla çalışma günlerini nasıl hesaplayacağınıza ve bu hesaplamaları Power BI’da gerçekten anlamlı metrikler üretmek için nasıl kullanacağınıza bakacağız.
DAX’te Hafta Sonlarını Anlamak
Önce temelden başlayalım: veri kümenizde hangi günlerin hafta sonu olduğunu bulmak. DAX bunun için WEEKDAY() işlevini verir ve numaralandırma sisteminin nasıl çalıştığını öğrendiğinizde şaşırtıcı derecede esnektir. Varsayılan olarak WEEKDAY(), verilen bir tarih için haftanın gününü temsil eden 1’den 7’ye kadar bir sayı döndürür. İkinci argüman bu sayıların nasıl eşleneceğini kontrol eder. Geliştiricilerin en çok kullandığı sürüm WEEKDAY(date, 2) olup Pazartesi için 1, Pazar için 7 döndürür ve çoğu iş takviminin kullandığı ISO standardıyla eşleşir.
Hızlı bir örnek:
Tarih
WEEKDAY(Date, 2)
Gün
2025-10-13
1
Pazartesi
2025-10-14
2
Salı
2025-10-18
6
Cumartesi
2025-10-19
7
Pazar
Şimdi bunu işe yarar hale getirelim. Date tablonuza hafta sonlarını işaretlemek için bir hesaplanan sütun ekleyebilirsiniz:
WEEKDAY('Date'[Date], 2) size gün numarasını verir (1 = Pazartesi, …, 7 = Pazar).
DayNum > 5 Cumartesi’yi (6) ve Pazar’ı (7) belirler.
Sütun, hafta sonları için TRUE, hafta içi için FALSE döndürür.
Hafta düzeniniz standart Pazartesi–Cuma kalıbını izlemiyorsa, örneğin işletmeniz Cuma ve Cumartesi’yi hafta sonu olarak görüyorsa, mantığı kolayca uyarlayabilirsiniz:
IsWeekend_Custom =
VAR DayNum = WEEKDAY('Date'[Date], 2)
RETURN IF(DayNum IN {5, 6}, TRUE(), FALSE())Altyapı:
Bu tek satırlık değişiklik, modelinizi özel çalışma takvimlerine uygun hale getirir. Bu sütunu oluşturduktan sonra, Power BI’da basit bir tablo görselinde Date alanıyla birlikte kullanın ve hafta sonu günlerinizin doğru hizalanıp hizalanmadığını kontrol edin.
Özel Hafta Sınırları Nasıl Oluşturulur
Çoğu Power BI modeli Pazartesi–Pazar takvimini varsayar, ancak gerçek dünya raporlaması nadiren bu kadar düzenlidir. Örneğin perakende panoları genellikle Cuma günü kapanır; bazı kuruluşlar bunun yerine Cumartesi–Cuma döngülerini takip eder. DAX’te, işletme takviminize uyan özel hafta sınırları oluşturabilirsiniz. Bunu adım adım, temiz bir şekilde nasıl yapacağınıza bakalım.
Cuma günü biten bir hafta ayarlama
İş haftanız Cuma günü bitiyorsa, her tarihe karşılık gelen hafta sonu (hafta bitiş) tarihini atayabilirsiniz. Mantık basit: her tarihi alın, haftanın gün numarasını bulun ve Cuma’ya ulaşana kadar ileri ofsetleyin.
WEEKDAY('Date'[Date], 2) haftanın gün indeksini verir (Pazartesi = 1).
Bu tarihin Cuma’dan ne kadar uzakta olduğunu hesaplarsınız.
Gün Cuma’yı geçtiyse (ör. Cumartesi veya Pazar), 7 gün ekleyerek bir sonraki Cuma’ya taşır.
Bu yaklaşım, Cumartesi ile Cuma arasındaki tüm tarihleri aynı hafta altında, Cuma’da biten şekilde gruplar.
Kontrol etmek için:
Bu sütunu Date tablonuza ekleyin.
Power BI’da Date ve WeekEnd_Friday ile bir tablo görseli oluşturun.
Her Cumartesi–Cuma dizisinin aynı hafta bitiş tarihine eşlendiğini göreceksiniz.
Cumartesi başlayan bir hafta ayarlama
Raporlama haftanız Cumartesi başlıyorsa, önceki formülle eşleşen bir hafta başlangıcı sütunu ekleyebilirsiniz. Aynı mantığı tersine kullanarak, her tarih için en yakın önceki Cumartesi’yi bulun.
Bu, önceki ifadeyle neredeyse aynı şekilde çalışır ancak geriye, önceki Cumartesi’ye kaydırır.
Ayrıca satır bağlamını hesaplanan sütun içinde yakalamak için EARLIER() işlevini kullanan eski kod örnekleri de görebilirsiniz. Örneğin:
WeekStart_Saturday =
VAR CurrentDate = EARLIER('Date'[Date])
VAR WeekdayIndex = WEEKDAY(CurrentDate, 2)
VAR DaysSinceSaturday = WeekdayIndex - 6
RETURN
CurrentDate - IF(DaysSinceSaturday < 0, DaysSinceSaturday + 7, DaysSinceSaturday)Altyapı:
Modern DAX bu senaryoda EARLIER() gerektirmez; çünkü hesaplanan sütunlar zaten satır satır değerlendirilir. Ancak eski modelleri anlamak veya yineleyicilerde satır bağlamlarını iç içe kullanırken hâlâ faydalıdır.
Her iki sütunu da ekledikten sonra, WeekStart_Saturday ve WeekEnd_Friday sütunlarını Date sütununuzla birlikte bir tablo görselinde çizmeyi deneyin. Varsayılan takvim yerine işletmenizin ritmini takip eden net hafta sınırlarını göreceksiniz.
Sonrasında bu hafta başlangıç ve bitiş tarihlerini görsellerde gruplayıcı anahtarlar olarak veya ölçümlerde çapa olarak kullanabilirsiniz; işletme haftası başına toplamları hesaplamak, hafta bazında performansı karşılaştırmak ya da standart dışı mali takvimlerle hizalamak için idealdir.
Sütunlar ve Ölçüler Arasında Tercih Yapmak
Artık özel hafta sınırlarınızı kurduğunuza göre, modelinizde bunları nasıl kullanacağınıza karar vermeye değer: hesaplanan sütunlar mı, ölçüler mi? Her ikisinin de yeri vardır ve hangisini ne zaman kullanacağınızı bilmek Power BI modelinizi verimli ve öngörülebilir kılar.
Hesaplanan sütunları, dilimlemek veya filtrelemek istediğiniz statik öznitelikler olarak düşünün. Örneğin IsWeekend, WeekStart_Saturday veya WeekEnd_Friday sütunlarınız her tarihi tanımlar. Kullanıcı etkileşimlerine veya filtrelere bağlı değildirler; her günün ne olduğunu belirtirler. Bu da onları görselleri gruplamak, ilişkiler kurmak veya hiyerarşiler oluşturmak için ideal kılar.
Buna karşılık ölçüler, filtrelere, dilimleyicilere ve bağlama yanıt veren dinamik hesaplamalardır. Özetleme veya metrikleri karşılaştırma yapıyorsanız, örneğin seçili aralıktaki çalışma günlerini saymak ya da hafta başına ortalama satışları hesaplamak, bir ölçü kullanmak isteyeceksiniz.
Özel haftalar arasında toplam satışları karşılaştırma
Ölçü
TotalSalesByWeek = SUM(Sales[Amount])WeekStart_Saturday’a göre gruplandırılmış
Kısaca:
Sonucu her satırla birlikte saklamanız (ve dilimleyici veya filtrelerde kullanmanız) gerekiyorsa, sütunu tercih edin.
Kullanıcı etkileşimiyle güncellenen bir hesaplama gerekiyorsa, ölçüyü tercih edin.
NETWORKDAYS() ile Çalışma Günlerini Hesaplamak
Hafta sonlarını ve hafta sınırlarını tanımladıktan sonra, bir sonraki mantıklı adım çalışma günlerini—iki tarih arasındaki hafta içi gün sayısını, isteğe bağlı olarak tatilleri hariç tutarak—hesaplamaktır. Power BI ve DAX, DAX’in yakın sürümlerinde tanıtılan NETWORKDAYS() işleviyle bunu oldukça basit hale getirir.
<weekend> isteğe bağlıdır ve hangi günlerin hafta sonu sayılacağını belirtmenize olanak tanır.
<holidays> da isteğe bağlıdır — sayımdan hariç tutulacak resmi tatil tarihlerini içeren bir sütun veya tablo geçirebilirsiniz.
Hafta Sonu Kodlarını Anlamak
<weekend> bağımsız değişkeni, hafta sonu sayılan günleri tanımlamak için sayısal kodlar kullanır. Büyük olasılıkla kullanacağınız bazı standart seçenekler şunlardır:
Kod
Hafta Sonu Günleri
Açıklama
1
Cumartesi, Pazar
Varsayılan (Batı iş haftası)
7
Cuma, Cumartesi
Orta Doğu takvimlerinde yaygın
11
Yalnızca Pazar
Sadece Pazar kapanışları için
12
Yalnızca Pazartesi
Sadece Pazartesi çalışılmayan günler için
Örneğin, iş haftanız Pazar’dan Perşembe’ye sürüyorsa, Cuma–Cumartesi hafta sonları için 7 kodunu kullanırsınız.
Modelinizdeki iki sütun arasındaki çalışma günlerini şöyle hesaplayabilirsiniz:
Resmi tatilleri özel bir Holiday tablosunda tutarak bir adım daha ileri gidebilirsiniz. Diyelim ki Holiday[Date] sütununa sahip bir tablonuz var. Şöyle ekleyebilirsiniz:
Bu kurulum, hafta sonlarının ve kuruluşunuzun tanımladığı tatillerin sayıma dahil edilmemesini sağlar. Özellikle iş gücü planlama, SLA izleme veya operasyonel panolar için raporlarınızı çok daha doğru hale getiren küçük ama önemli bir adımdır.
Örnek Kullanım Senaryosu
Şirketinizin proje zaman çizelgelerini Power BI’da takip ettiğini hayal edin. Her kayıtta bir StartDate ve EndDate var. WorkingDays_WithHolidays ölçüsünü ekleyerek hızlıca şu görselleştirmeleri yapabilirsiniz:
Her proje kaç çalışma günü sürdü?
Hangi projeler hafta sonlarına veya resmi tatillere denk geldi?
Bölüm veya proje türü başına ortalama çalışma süresi.
Bunu uygulamada görmek için, bu ölçüyü Project Name, StartDate ve EndDate ile birlikte bir tablo görseline bırakın. Anında, sadece ham tarih farklarına değil, gerçek çalışma günlerine dayalı daha anlamlı zaman çizelgeleri elde edersiniz.
İş Panolarında Pratik Uygulamalar
Artık çalışma günleri, hafta sonu bayrakları ve özel hafta sınırlarını oluşturduğunuza göre, bunların gerçek dünyadaki Power BI panolarına nasıl uyduğuna bakalım. Hafta sonlarını veya mali haftaları yeniden tanımlayabilmek sadece hoş bir teknik numara değildir; metriklerin bölümler genelinde nasıl hesaplandığını, görselleştirildiğini ve anlaşıldığını doğrudan etkiler.
Bordro ve puantaj kapanışları
Birçok kuruluş, bordroyu sabit bir Cumartesi–Cuma veya Pazar–Cumartesi döngüsünde işler. DAX’te hafta sınırlarını tanımlayarak maaş dönemlerini, fazla mesai hesaplarını ve puantaj girişlerini İK sisteminizin kullandığı kesin çalışma haftasıyla hizalayabilirsiniz. Örneğin, özel hafta başına çalışılan toplam saatleri veya tamamlanan vardiyaları hesaplayabilir, böylece bordro raporları varsayılan Pazartesi–Pazar takvimi yerine iç planlarla tam uyum sağlar.
Operasyonel KPI’lar ve hizmet izleme
Operasyon ve lojistik ekipleri, teslimat dönüş süresi veya olay çözümü gibi KPI’ları çoğunlukla sadece çalışma günlerine göre ölçer. NETWORKDAYS() kullanmak, bu metriklerin hiçbir şeyin hareket etmediği hafta sonları değil, gerçek iş kapasitesini yansıtmasını sağlar.
Çalışma günü hesaplamalarınızı WeekStart_Saturday veya WeekEnd_Friday sütunlarınızla eşleştirmek, verileri yönetimin toplantılarında ve raporlarında takip ettiği tam operasyonel haftaya göre gruplamanızı sağlar.
Perakende ve satış performansı
Perakendeciler nadiren takvim haftalarını takip eder. Çoğu, tam hafta sonu satış dönemini tek bir tutarlı raporlama bloğunda yakalamak için Cumartesi’den Cuma’ya tercih eder. Tarih tablonuzu bu takvime göre modelleyerek, hafta sonu satış trendleri aynı hafta içinde kalır; hafta sonları arasındaki karşılaştırmalar anlamlı olur. Bu küçük ayar, çarpıtılmış “haftadan haftaya” görselleri önleyebilir ve daha doğru hareketli ortalamalar sağlar.
Özel mali haftalar ve tahminleme
Bazı finans ekipleri haftaya haftanın ortasında başlayan veya 4-4-5 muhasebe desenini izleyen mali haftalarla çalışır. Özel hafta sınırlarınız buna kolayca entegre edilebilir.Tarih tablonuz WeekStart ve WeekEnd sütunlarını içerdiğinde, gelir tahakkuku, gider takibi veya tahmin gibi ölçüler, mali takviminiz ne kadar sıra dışı olursa olsun tutarlı şekilde toplanabilir.
Çalışma günlerine dayalı hareketli ortalamalar
Özellikle günlük satışlar veya üretim hızları gibi KPI’lar için hareketli ortalama hesaplarken, hesaplamayı takvim günleri yerine çalışma günlerine dayandırmak daha iyidir.
Örneğin, hafta sonları IsWeekend bayrağınızla hariç tutuluyorsa, 7 günlük hareketli ortalama gerçekten bir iş haftası faaliyeti yansıtacaktır; çalışılmayan günlerde şişirilmiş ya da yanıltıcı düşüşler olmaz.
Kısacası, özel hafta tanımları ve çalışma günü mantığı, Power BI panolarınızı işletmenizin gerçekte nasıl çalıştığına daha da yaklaştırır. Bordro kapanışlarını, sevkiyat sürelerini veya hafta sonu satış zirvelerini takip edin; bu DAX kalıpları içgörülerinizi daha temiz, daha adil ve çok daha eyleme dönük kılar.
Unutulmaması Gereken Noktalar
Bitirmeden önce, bu DAX tekniklerini Power BI projelerinizde etkili şekilde uygulayabilmeniz için başlıca çıkarımları özetleyelim.
Satır bazlı sınıflandırmalar için hesaplanan sütunları kullanın: Her tarihi etiketlemeniz gerektiğinde—hafta sonlarını işaretlemek, hafta sınırları atamak veya iş günlerini kategorize etmek gibi—hesaplanan sütunlar en iyi seçenektir. Modeliniz genelinde dilimleyicilerde, filtrelerde ve ilişkilerde sorunsuz çalışan statik öznitelikler sunarlar.
WEEKDAY() işlevini doğru dönüş türüyle dikkatli kullanın: Unutmayın, WEEKDAY(date, 2) sayımı Pazartesi’de (1) başlatır ve Pazar’da (7) bitirir. Bu parametreyi ayarlamak, hesaplamalarınızı bölgesel veya kurumsal iş haftası standartlarıyla hizalamanıza yardımcı olur. Dönüş türünüzü her zaman iki kez kontrol edin. Bu, DAX zaman mantığında en sık görülen bir farkla hata kaynaklarından biridir.
NETWORKDAYS(), hafta sonlarını ve tatilleri hariç tutmak için başvurulacak işlevdir: Bu işlev, karmaşık tarih filtreleri veya manuel döngülerden sizi kurtararak çalışma günü hesaplamalarını basitleştirir. Doğru iş günü sayımları elde etmek için şirketinizin hafta sonu kodu ve bir tatil tablosuyla birleştirin; böylece yalnızca takvim boşluklarını değil, gerçek iş günlerini yansıtırsınız.
Bu temel bilgilerde ustalaşarak—özel hafta yapıları, dikkatli hafta içi mantığı ve hassas çalışma günü sayımları—oluşturduğunuz her Power BI panosuna daha fazla doğruluk ve esneklik kazandırırsınız. Bir sonraki sefer bir tarih modeli kurarken veya raporları iş takvimleriyle hizalarken, bu DAX kalıpları araç setinizin en üstünde olmalı.
Kaçınılması Gereken Yaygın Hatalar
Deneyimli Power BI geliştiricileri bile DAX’te tarih ve hafta mantığıyla çalışırken ince tuzaklara düşebilir. Dikkat edilmesi gereken bazı noktalar şunlardır:
DAX tek (') ve çift (") tırnakları ayırt eder; özellikle gün adları veya bayraklar gibi metin değerlerini karşılaştırırken yanlışını kullanmak mantığınızı bozabilir. Örneğin:
İşlevlerin içinde metin dizeleri için her zaman çift tırnak kullanın
Tek tırnaklar, 'Date'[Date] gibi tablo ve sütun başvuruları için ayrılmıştır.
Satır bağlamını unutmak
Bu en yaygın kavramsal hatalardan biridir. Hesaplanan sütunlar her satırı bağımsız olarak değerlendirirken, ölçüler filtre ve değerlendirme bağlamına bağlıdır. Bir ölçüde, toplama yapmadan bir sütuna başvuruyorsanız beklediğiniz gibi davranmayacaktır; çünkü satır bağlamı yoktur. Örneğin, IF(WEEKDAY('Date'[Date], 2) > 5, TRUE(), FALSE()) hesaplanan sütun olarak çalışır; ancak bunun filtrelere dinamik tepki vermesini istiyorsanız, SUMX() gibi bir yineleyiciye sarmanız ya da satırları sayan veya filtreleyen bir ölçü içinde kullanmanız gerekir.
Zaman dilimlerini veya takvim hizalamasını göz ardı etmek
Zaman damgalı içe aktarılan verileri kullanırken, DAX tarih işlevleri sütunun tarih kısmı üzerinde çalışır. Verileriniz zaman dilimlerini aşıyorsa veya UTC düzeltmeleri kullanıyorsa, hafta sonu bayrakları beklenmedik şekilde kayabilir. DAX mantığını uygulamadan önce Tarih/Saat alanlarınızı Power Query’de her zaman temizleyin ve normalize edin.
Hafta sonu mantığını sabitlemek
“Cumartesi ve Pazar” gibi sabit mantığı birden çok formüle gömmekten kaçının. Bunun yerine, kuruluşunuzun hafta sonu günlerini listeleyen yeniden kullanılabilir bir değişken veya bağlantısız tablo tanımlayın. İş takvimleri değiştiğinde bakımı kolaylaştırır.
Bu küçük sorunları erken yakalamak, ileride saatlerce hata ayıklamaktan kurtarabilir. Emin olmadığınızda, Power BI’daki Veri Görünümü’nü kullanarak hesaplanan sütun sonuçlarını satır satır inceleyin; DAX mantığınızın görsellere veya ölçülere taşımadan önce amaçlandığı gibi davrandığını doğrulamanın en hızlı yollarından biridir.
Sonuç
DAX’te hafta sonları ve özel hafta sınırlarıyla çalışmak sadece tarih matematiği değildir; Power BI modellerinizin işletmenizin gerçekte nasıl işlediğini yansıtmasını sağlamaktır. Cumartesi ve Pazar’ı çalışılmayan günler olarak işaretlemek, mali haftanızı Cumartesi’den Cuma’ya hizalamak veya tatilleri hariç tutarak çalışma günlerini hesaplamak fark etmeksizin, amaç aynıdır: her hesaplamada doğruluk ve bağlam.
WEEKDAY() ve NETWORKDAYS() gibi işlevlerin esnek tarih mantığını nasıl tanımlamaya yardımcı olduğunu ve hesaplanan sütunlarla ölçülerin rollerini gördünüz: biri yapı için, diğeri dinamik analiz için. Bu süreçte, bordro kapanışlarından perakende takvimlerine kadar gerçek dünya kullanım örneklerini inceledik ve yanlış tırnak kullanımı veya kaybolan satır bağlamı gibi yaygın DAX tuzaklarından nasıl kaçınacağımızı öğrendik.
Tarihlerle ilgili bir Power BI panosu oluştururken varsayılan takvimin ötesini düşünün. Haftanızı özelleştirin, hafta sonlarını açık hale getirin ve çalışma günlerini hak ettikleri birinci sınıf metrikler olarak ele alın. Bu DAX kalıpları araç setinizdeyken, raporlarınız sadece zamanı göstermeyecek, zamanı kuruluşunuzun deneyimlediği şekliyle gösterecek.
Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
DAX ile bir süre çalıştıysanız, tarihlerle işlerin nasıl hızla karmaşıklaşabildiğini biliyorsunuzdur. Her şey yolunda giderken biri çıkar ve “Raporlama haftamız Cumartesi başlıyor,” ya da “Gösterge tablosunda hafta sonlarını farklı renkle vurgulayabilir miyiz?” der. Sonra bir anda
WEEKDAY()dönüş türlerine, ofset mantığına dalar ve Power BI’ın haftanın bitişinin Cuma olduğunu düşündüğünü, oysa işinizin başka bir şey söylediğini açıklamaya çalışırsınız.Çoğumuz bu sorunla karşılaştık: hafta sonlarını işaretlemeniz, çalışma günlerini hesaplamanız ya da standart takvimle örtüşmeyen özel hafta sınırları tanımlamanız gerekir. Belki de deponuz Pazar’dan Perşembe’ye çalışıyor ya da finans ekibiniz hafta sonlarını hariç tutarak çalışma günlerini saymak istiyor.
Kutu dışı DAX bunu kusursuz yapmaz, ancak düzeltmeniz için yapı taşlarını sunar. Bu yazıda,
WEEKDAY()kullanarak hafta sonlarını nasıl işaretleyeceğinize, hafta sınırlarını nasıl tanımlayacağınıza (örneğin, Cumartesi–Cuma),NETWORKDAYS()veya koşullu mantıkla çalışma günlerini nasıl hesaplayacağınıza ve bu hesaplamaları Power BI’da gerçekten anlamlı metrikler üretmek için nasıl kullanacağınıza bakacağız.DAX’te Hafta Sonlarını Anlamak
Önce temelden başlayalım: veri kümenizde hangi günlerin hafta sonu olduğunu bulmak. DAX bunun için
WEEKDAY()işlevini verir ve numaralandırma sisteminin nasıl çalıştığını öğrendiğinizde şaşırtıcı derecede esnektir. Varsayılan olarakWEEKDAY(), verilen bir tarih için haftanın gününü temsil eden 1’den 7’ye kadar bir sayı döndürür. İkinci argüman bu sayıların nasıl eşleneceğini kontrol eder. Geliştiricilerin en çok kullandığı sürümWEEKDAY(date, 2)olup Pazartesi için1, Pazar için7döndürür ve çoğu iş takviminin kullandığı ISO standardıyla eşleşir.Hızlı bir örnek:
Tarih
WEEKDAY(Date, 2)
Gün
2025-10-13
1
Pazartesi
2025-10-14
2
Salı
2025-10-18
6
Cumartesi
2025-10-19
7
Pazar
Şimdi bunu işe yarar hale getirelim.
Datetablonuza hafta sonlarını işaretlemek için bir hesaplanan sütun ekleyebilirsiniz:Burada olanlar:
WEEKDAY('Date'[Date], 2)size gün numarasını verir (1= Pazartesi, …,7= Pazar).DayNum > 5Cumartesi’yi (6) ve Pazar’ı (7) belirler.Sütun, hafta sonları için
TRUE, hafta içi içinFALSEdöndürür.Hafta düzeniniz standart Pazartesi–Cuma kalıbını izlemiyorsa, örneğin işletmeniz Cuma ve Cumartesi’yi hafta sonu olarak görüyorsa, mantığı kolayca uyarlayabilirsiniz:
Bu tek satırlık değişiklik, modelinizi özel çalışma takvimlerine uygun hale getirir. Bu sütunu oluşturduktan sonra, Power BI’da basit bir tablo görselinde
Datealanıyla birlikte kullanın ve hafta sonu günlerinizin doğru hizalanıp hizalanmadığını kontrol edin.Özel Hafta Sınırları Nasıl Oluşturulur
Çoğu Power BI modeli Pazartesi–Pazar takvimini varsayar, ancak gerçek dünya raporlaması nadiren bu kadar düzenlidir. Örneğin perakende panoları genellikle Cuma günü kapanır; bazı kuruluşlar bunun yerine Cumartesi–Cuma döngülerini takip eder. DAX’te, işletme takviminize uyan özel hafta sınırları oluşturabilirsiniz. Bunu adım adım, temiz bir şekilde nasıl yapacağınıza bakalım.
Cuma günü biten bir hafta ayarlama
İş haftanız Cuma günü bitiyorsa, her tarihe karşılık gelen hafta sonu (hafta bitiş) tarihini atayabilirsiniz. Mantık basit: her tarihi alın, haftanın gün numarasını bulun ve Cuma’ya ulaşana kadar ileri ofsetleyin.
Hesaplanan sütun formülü şöyle:
Yaptıkları şunlar:
WEEKDAY('Date'[Date], 2)haftanın gün indeksini verir (Pazartesi = 1).Bu tarihin Cuma’dan ne kadar uzakta olduğunu hesaplarsınız.
Gün Cuma’yı geçtiyse (ör. Cumartesi veya Pazar), 7 gün ekleyerek bir sonraki Cuma’ya taşır.
Bu yaklaşım, Cumartesi ile Cuma arasındaki tüm tarihleri aynı hafta altında, Cuma’da biten şekilde gruplar.
Kontrol etmek için:
Bu sütunu Date tablonuza ekleyin.
Power BI’da
DateveWeekEnd_Fridayile bir tablo görseli oluşturun.Her Cumartesi–Cuma dizisinin aynı hafta bitiş tarihine eşlendiğini göreceksiniz.
Cumartesi başlayan bir hafta ayarlama
Raporlama haftanız Cumartesi başlıyorsa, önceki formülle eşleşen bir hafta başlangıcı sütunu ekleyebilirsiniz. Aynı mantığı tersine kullanarak, her tarih için en yakın önceki Cumartesi’yi bulun.
Eşleşen DAX sütunu şöyle:
Bu, önceki ifadeyle neredeyse aynı şekilde çalışır ancak geriye, önceki Cumartesi’ye kaydırır.
Ayrıca satır bağlamını hesaplanan sütun içinde yakalamak için
EARLIER()işlevini kullanan eski kod örnekleri de görebilirsiniz. Örneğin:Modern DAX bu senaryoda
EARLIER()gerektirmez; çünkü hesaplanan sütunlar zaten satır satır değerlendirilir. Ancak eski modelleri anlamak veya yineleyicilerde satır bağlamlarını iç içe kullanırken hâlâ faydalıdır.Her iki sütunu da ekledikten sonra,
WeekStart_SaturdayveWeekEnd_FridaysütunlarınıDatesütununuzla birlikte bir tablo görselinde çizmeyi deneyin. Varsayılan takvim yerine işletmenizin ritmini takip eden net hafta sınırlarını göreceksiniz.Sonrasında bu hafta başlangıç ve bitiş tarihlerini görsellerde gruplayıcı anahtarlar olarak veya ölçümlerde çapa olarak kullanabilirsiniz; işletme haftası başına toplamları hesaplamak, hafta bazında performansı karşılaştırmak ya da standart dışı mali takvimlerle hizalamak için idealdir.
Sütunlar ve Ölçüler Arasında Tercih Yapmak
Artık özel hafta sınırlarınızı kurduğunuza göre, modelinizde bunları nasıl kullanacağınıza karar vermeye değer: hesaplanan sütunlar mı, ölçüler mi? Her ikisinin de yeri vardır ve hangisini ne zaman kullanacağınızı bilmek Power BI modelinizi verimli ve öngörülebilir kılar.
Hesaplanan sütunları, dilimlemek veya filtrelemek istediğiniz statik öznitelikler olarak düşünün. Örneğin
IsWeekend,WeekStart_SaturdayveyaWeekEnd_Fridaysütunlarınız her tarihi tanımlar. Kullanıcı etkileşimlerine veya filtrelere bağlı değildirler; her günün ne olduğunu belirtirler. Bu da onları görselleri gruplamak, ilişkiler kurmak veya hiyerarşiler oluşturmak için ideal kılar.Buna karşılık ölçüler, filtrelere, dilimleyicilere ve bağlama yanıt veren dinamik hesaplamalardır. Özetleme veya metrikleri karşılaştırma yapıyorsanız, örneğin seçili aralıktaki çalışma günlerini saymak ya da hafta başına ortalama satışları hesaplamak, bir ölçü kullanmak isteyeceksiniz.
Aklınızda tutmanız için kısa bir karşılaştırma:
Kullanım Durumu
Tür
Örnek
Hafta sonlarını veya hafta sınırlarını belirleme
Hesaplanan sütun
IsWeekend = IF(WEEKDAY('Date'[Date],2)>5,TRUE(),FALSE())Görselleri özel hafta aralıklarına göre dilimleme
Hesaplanan sütun
WeekStart_Saturday,WeekEnd_FridayGeçerli filtrede çalışma günlerini sayma
Ölçü
WorkingDays = COUNTROWS(FILTER('Date', 'Date'[IsWeekend] = FALSE()))Özel haftalar arasında toplam satışları karşılaştırma
Ölçü
TotalSalesByWeek = SUM(Sales[Amount])WeekStart_Saturday’a göre gruplandırılmışKısaca:
NETWORKDAYS() ile Çalışma Günlerini Hesaplamak
Hafta sonlarını ve hafta sınırlarını tanımladıktan sonra, bir sonraki mantıklı adım çalışma günlerini—iki tarih arasındaki hafta içi gün sayısını, isteğe bağlı olarak tatilleri hariç tutarak—hesaplamaktır. Power BI ve DAX, DAX’in yakın sürümlerinde tanıtılan
NETWORKDAYS()işleviyle bunu oldukça basit hale getirir.En basit hâliyle söz dizimi şöyledir:
Her parametrenin çalışma şekli:
<start_date>ve<end_date>aralığınızı tanımlar.<weekend>isteğe bağlıdır ve hangi günlerin hafta sonu sayılacağını belirtmenize olanak tanır.<holidays>da isteğe bağlıdır — sayımdan hariç tutulacak resmi tatil tarihlerini içeren bir sütun veya tablo geçirebilirsiniz.Hafta Sonu Kodlarını Anlamak
<weekend>bağımsız değişkeni, hafta sonu sayılan günleri tanımlamak için sayısal kodlar kullanır. Büyük olasılıkla kullanacağınız bazı standart seçenekler şunlardır:Kod
Hafta Sonu Günleri
Açıklama
1
Cumartesi, Pazar
Varsayılan (Batı iş haftası)
7
Cuma, Cumartesi
Orta Doğu takvimlerinde yaygın
11
Yalnızca Pazar
Sadece Pazar kapanışları için
12
Yalnızca Pazartesi
Sadece Pazartesi çalışılmayan günler için
Örneğin, iş haftanız Pazar’dan Perşembe’ye sürüyorsa, Cuma–Cumartesi hafta sonları için
7kodunu kullanırsınız.Modelinizdeki iki sütun arasındaki çalışma günlerini şöyle hesaplayabilirsiniz:
Bu formül, Cumartesi ve Pazar’ın hafta sonu olduğunu varsayar. İşletmeniz Cuma–Cumartesi hafta sonunu izliyorsa, şöyle uyarlayabilirsiniz:
Tatil günlerini hariç tutmak
Resmi tatilleri özel bir
Holidaytablosunda tutarak bir adım daha ileri gidebilirsiniz. Diyelim kiHoliday[Date]sütununa sahip bir tablonuz var. Şöyle ekleyebilirsiniz:Bu kurulum, hafta sonlarının ve kuruluşunuzun tanımladığı tatillerin sayıma dahil edilmemesini sağlar. Özellikle iş gücü planlama, SLA izleme veya operasyonel panolar için raporlarınızı çok daha doğru hale getiren küçük ama önemli bir adımdır.
Örnek Kullanım Senaryosu
Şirketinizin proje zaman çizelgelerini Power BI’da takip ettiğini hayal edin. Her kayıtta bir
StartDateveEndDatevar.WorkingDays_WithHolidaysölçüsünü ekleyerek hızlıca şu görselleştirmeleri yapabilirsiniz:Bunu uygulamada görmek için, bu ölçüyü
Project Name,StartDateveEndDateile birlikte bir tablo görseline bırakın. Anında, sadece ham tarih farklarına değil, gerçek çalışma günlerine dayalı daha anlamlı zaman çizelgeleri elde edersiniz.İş Panolarında Pratik Uygulamalar
Artık çalışma günleri, hafta sonu bayrakları ve özel hafta sınırlarını oluşturduğunuza göre, bunların gerçek dünyadaki Power BI panolarına nasıl uyduğuna bakalım. Hafta sonlarını veya mali haftaları yeniden tanımlayabilmek sadece hoş bir teknik numara değildir; metriklerin bölümler genelinde nasıl hesaplandığını, görselleştirildiğini ve anlaşıldığını doğrudan etkiler.
Bordro ve puantaj kapanışları
Birçok kuruluş, bordroyu sabit bir Cumartesi–Cuma veya Pazar–Cumartesi döngüsünde işler. DAX’te hafta sınırlarını tanımlayarak maaş dönemlerini, fazla mesai hesaplarını ve puantaj girişlerini İK sisteminizin kullandığı kesin çalışma haftasıyla hizalayabilirsiniz. Örneğin, özel hafta başına çalışılan toplam saatleri veya tamamlanan vardiyaları hesaplayabilir, böylece bordro raporları varsayılan Pazartesi–Pazar takvimi yerine iç planlarla tam uyum sağlar.
Operasyonel KPI’lar ve hizmet izleme
Operasyon ve lojistik ekipleri, teslimat dönüş süresi veya olay çözümü gibi KPI’ları çoğunlukla sadece çalışma günlerine göre ölçer.
NETWORKDAYS()kullanmak, bu metriklerin hiçbir şeyin hareket etmediği hafta sonları değil, gerçek iş kapasitesini yansıtmasını sağlar.Çalışma günü hesaplamalarınızı
WeekStart_SaturdayveyaWeekEnd_Fridaysütunlarınızla eşleştirmek, verileri yönetimin toplantılarında ve raporlarında takip ettiği tam operasyonel haftaya göre gruplamanızı sağlar.Perakende ve satış performansı
Perakendeciler nadiren takvim haftalarını takip eder. Çoğu, tam hafta sonu satış dönemini tek bir tutarlı raporlama bloğunda yakalamak için Cumartesi’den Cuma’ya tercih eder. Tarih tablonuzu bu takvime göre modelleyerek, hafta sonu satış trendleri aynı hafta içinde kalır; hafta sonları arasındaki karşılaştırmalar anlamlı olur. Bu küçük ayar, çarpıtılmış “haftadan haftaya” görselleri önleyebilir ve daha doğru hareketli ortalamalar sağlar.
Özel mali haftalar ve tahminleme
Bazı finans ekipleri haftaya haftanın ortasında başlayan veya 4-4-5 muhasebe desenini izleyen mali haftalarla çalışır. Özel hafta sınırlarınız buna kolayca entegre edilebilir.Tarih tablonuz
WeekStartveWeekEndsütunlarını içerdiğinde, gelir tahakkuku, gider takibi veya tahmin gibi ölçüler, mali takviminiz ne kadar sıra dışı olursa olsun tutarlı şekilde toplanabilir.Çalışma günlerine dayalı hareketli ortalamalar
Özellikle günlük satışlar veya üretim hızları gibi KPI’lar için hareketli ortalama hesaplarken, hesaplamayı takvim günleri yerine çalışma günlerine dayandırmak daha iyidir.
Örneğin, hafta sonları
IsWeekendbayrağınızla hariç tutuluyorsa, 7 günlük hareketli ortalama gerçekten bir iş haftası faaliyeti yansıtacaktır; çalışılmayan günlerde şişirilmiş ya da yanıltıcı düşüşler olmaz.Kısacası, özel hafta tanımları ve çalışma günü mantığı, Power BI panolarınızı işletmenizin gerçekte nasıl çalıştığına daha da yaklaştırır. Bordro kapanışlarını, sevkiyat sürelerini veya hafta sonu satış zirvelerini takip edin; bu DAX kalıpları içgörülerinizi daha temiz, daha adil ve çok daha eyleme dönük kılar.
Unutulmaması Gereken Noktalar
Bitirmeden önce, bu DAX tekniklerini Power BI projelerinizde etkili şekilde uygulayabilmeniz için başlıca çıkarımları özetleyelim.
Satır bazlı sınıflandırmalar için hesaplanan sütunları kullanın: Her tarihi etiketlemeniz gerektiğinde—hafta sonlarını işaretlemek, hafta sınırları atamak veya iş günlerini kategorize etmek gibi—hesaplanan sütunlar en iyi seçenektir. Modeliniz genelinde dilimleyicilerde, filtrelerde ve ilişkilerde sorunsuz çalışan statik öznitelikler sunarlar.
WEEKDAY()işlevini doğru dönüş türüyle dikkatli kullanın: Unutmayın,WEEKDAY(date, 2)sayımı Pazartesi’de (1) başlatır ve Pazar’da (7) bitirir. Bu parametreyi ayarlamak, hesaplamalarınızı bölgesel veya kurumsal iş haftası standartlarıyla hizalamanıza yardımcı olur. Dönüş türünüzü her zaman iki kez kontrol edin. Bu, DAX zaman mantığında en sık görülen bir farkla hata kaynaklarından biridir.NETWORKDAYS(), hafta sonlarını ve tatilleri hariç tutmak için başvurulacak işlevdir: Bu işlev, karmaşık tarih filtreleri veya manuel döngülerden sizi kurtararak çalışma günü hesaplamalarını basitleştirir. Doğru iş günü sayımları elde etmek için şirketinizin hafta sonu kodu ve bir tatil tablosuyla birleştirin; böylece yalnızca takvim boşluklarını değil, gerçek iş günlerini yansıtırsınız.Bu temel bilgilerde ustalaşarak—özel hafta yapıları, dikkatli hafta içi mantığı ve hassas çalışma günü sayımları—oluşturduğunuz her Power BI panosuna daha fazla doğruluk ve esneklik kazandırırsınız. Bir sonraki sefer bir tarih modeli kurarken veya raporları iş takvimleriyle hizalarken, bu DAX kalıpları araç setinizin en üstünde olmalı.
Kaçınılması Gereken Yaygın Hatalar
Deneyimli Power BI geliştiricileri bile DAX’te tarih ve hafta mantığıyla çalışırken ince tuzaklara düşebilir. Dikkat edilmesi gereken bazı noktalar şunlardır:
Metin karşılaştırmalarında tırnak işaretlerini karıştırmak
DAX tek (') ve çift (") tırnakları ayırt eder; özellikle gün adları veya bayraklar gibi metin değerlerini karşılaştırırken yanlışını kullanmak mantığınızı bozabilir. Örneğin:
İşlevlerin içinde metin dizeleri için her zaman çift tırnak kullanın
Tek tırnaklar,
'Date'[Date]gibi tablo ve sütun başvuruları için ayrılmıştır.Satır bağlamını unutmak
Bu en yaygın kavramsal hatalardan biridir. Hesaplanan sütunlar her satırı bağımsız olarak değerlendirirken, ölçüler filtre ve değerlendirme bağlamına bağlıdır. Bir ölçüde, toplama yapmadan bir sütuna başvuruyorsanız beklediğiniz gibi davranmayacaktır; çünkü satır bağlamı yoktur. Örneğin,
IF(WEEKDAY('Date'[Date], 2) > 5, TRUE(), FALSE())hesaplanan sütun olarak çalışır; ancak bunun filtrelere dinamik tepki vermesini istiyorsanız, SUMX() gibi bir yineleyiciye sarmanız ya da satırları sayan veya filtreleyen bir ölçü içinde kullanmanız gerekir.Zaman dilimlerini veya takvim hizalamasını göz ardı etmek
Zaman damgalı içe aktarılan verileri kullanırken, DAX tarih işlevleri sütunun tarih kısmı üzerinde çalışır. Verileriniz zaman dilimlerini aşıyorsa veya UTC düzeltmeleri kullanıyorsa, hafta sonu bayrakları beklenmedik şekilde kayabilir. DAX mantığını uygulamadan önce Tarih/Saat alanlarınızı Power Query’de her zaman temizleyin ve normalize edin.
Hafta sonu mantığını sabitlemek
“Cumartesi ve Pazar” gibi sabit mantığı birden çok formüle gömmekten kaçının. Bunun yerine, kuruluşunuzun hafta sonu günlerini listeleyen yeniden kullanılabilir bir değişken veya bağlantısız tablo tanımlayın. İş takvimleri değiştiğinde bakımı kolaylaştırır.
Bu küçük sorunları erken yakalamak, ileride saatlerce hata ayıklamaktan kurtarabilir. Emin olmadığınızda, Power BI’daki Veri Görünümü’nü kullanarak hesaplanan sütun sonuçlarını satır satır inceleyin; DAX mantığınızın görsellere veya ölçülere taşımadan önce amaçlandığı gibi davrandığını doğrulamanın en hızlı yollarından biridir.
Sonuç
DAX’te hafta sonları ve özel hafta sınırlarıyla çalışmak sadece tarih matematiği değildir; Power BI modellerinizin işletmenizin gerçekte nasıl işlediğini yansıtmasını sağlamaktır. Cumartesi ve Pazar’ı çalışılmayan günler olarak işaretlemek, mali haftanızı Cumartesi’den Cuma’ya hizalamak veya tatilleri hariç tutarak çalışma günlerini hesaplamak fark etmeksizin, amaç aynıdır: her hesaplamada doğruluk ve bağlam.
WEEKDAY()veNETWORKDAYS()gibi işlevlerin esnek tarih mantığını nasıl tanımlamaya yardımcı olduğunu ve hesaplanan sütunlarla ölçülerin rollerini gördünüz: biri yapı için, diğeri dinamik analiz için. Bu süreçte, bordro kapanışlarından perakende takvimlerine kadar gerçek dünya kullanım örneklerini inceledik ve yanlış tırnak kullanımı veya kaybolan satır bağlamı gibi yaygın DAX tuzaklarından nasıl kaçınacağımızı öğrendik.Tarihlerle ilgili bir Power BI panosu oluştururken varsayılan takvimin ötesini düşünün. Haftanızı özelleştirin, hafta sonlarını açık hale getirin ve çalışma günlerini hak ettikleri birinci sınıf metrikler olarak ele alın. Bu DAX kalıpları araç setinizdeyken, raporlarınız sadece zamanı göstermeyecek, zamanı kuruluşunuzun deneyimlediği şekliyle gösterecek.