İş zekası projelerinde sıklıkla farklı tarih bilgileriyle karşılaşırız. Örneğin, bir e-ticaret şirketinde sipariş tarihi, teslimat tarihi ve iade tarihi gibi birden fazla tarih sütunu bulunabilir. Bu durum, veri modelinde netliği azaltır, analizleri karmaşıklaştırır ve bazı durumlarda doğru sonuçlar elde etmeyi zorlaştırır. Sorunların önüne geçmek için, farklı tarih sütunlarını ortak bir tarih tablosuyla ilişkilendiririz. Aynı zamanda Year-To-Date, Month-To-Date gibi time intelligence fonksiyonlarının doğru sonuçlar üretebilmesi için de ortak bir tarih tablosu gerekliliktir.
Tarih Tablosu Nedir?
Power BI gibi veri görselleştirme ve analiz araçlarında, tarih tablosu, sıralı ve benzersiz tarih değerlerinin bir listesini içeren özel bir tablodur. Bu tablo, veri modelinizdeki tüm tarih verilerinin ortak kaynağı olarak hizmet eder ve zaman serileri analizleri, trend takibi ve tarihsel karşılaştırmalar gibi birçok işlemi kolaylaştırır.
DAX’ta tarih tablosu oluşturmak için kullanılan iki temel fonksiyon vardır.
CALENDARAUTO() fonksiyonu
- Semantik modeldeki tüm tarih sütunlarını tarayarak otomatik olarak bir tarih tablosu oluşturur.
- Modeldeki en eski ve en yeni tarihleri bulur, yılların başlangıç ve bitiş tarihleri arasındaki her günü içerir.
- Sintax: CALENDARAUTO([Mali Yıl Son Ay No]).
- Varsayılan olarak takvim yılını döndürür. Farklı bir aralık elde edilmek istendiğinde yılın son ayı belirtilir. Örneğin mali yılın son ayı Haziran ise CALENDARAUTO(6)
CALENDAR() fonksiyonu
Belirli bir başlangıç ve bitiş tarihi belirtildiğinde, aralıktaki tüm tarihleri içeren bir tablo oluşturur.
Tarih Tablosu Oluşturma Adımları
Power BI tablo görünümüne geçerek, tablo araçları sekmesinden yeni tablo seçeneğine gelelim. CALENDARAUTO() ile otomatik bir tarih tablosu oluşturalım.
ADDCOLUMNS() fonksiyonu ile CALENDARAUTO() tablosuna ilk sütunu ekleyelim.
Tarih =
ADDCOLUMNS(
CALENDARAUTO(), //
"Finansal Yıl", FORMAT([Date], "yyyy")
)
İşlemleri Contoso örnek Power BI modelinde gerçekleştirdiğimizde, 01/01/2005 ile 31/12/2018 arasındaki benzersiz tüm tarihler sıralandı. ADDCOLUMNS() fonksiyonuyla ilk sütunumuzu (Yıl) ekledik.
CALENDARAUTO() ile oluşturulan tablo tek sütundan oluşur ve varsayılan sütun başlığı [Date]’tir. Bu nedenle FORMAT() fonksiyonu kullanırken [Date] sütununa başvuruyoruz.
Power BI Tarih Tablosu Örneği
DAX kullanarak aşağıdaki Power BI tablosu oluşturalım.
Tarih =
ADDCOLUMNS(
CALENDARAUTO(),
"Yıl", FORMAT([Date], "yyyy"),
"Çeyrek", FORMAT([Date], "\QQ"),
"Yıl ve Çeyrek", FORMAT([Date], "yyyy \QQ"),
"Ay", FORMAT([Date], "mmm"),
"Yıl ve Ay", FORMAT([Date], "yyyy mmm"),
"Ay No", FORMAT([Date], "mm"),
"Ayın İlk Günü", DATE(YEAR([Date]), MONTH([Date]), 1),
"Ayın Son Günü", EOMONTH([Date], 0),
"Aydaki Gün Sayısı",
// DATE() fonksiyonu belirtilen yıl, ay, güne göre tarihi döndürür
VAR Ayin_ilk_gunu = DATE(YEAR([Date]), MONTH([Date]), 1)
//EOMONTH() fonksiyonu ayın son gününü döndürür
VAR Ayin_son_gunu = EOMONTH([Date], 0)
RETURN
// DATEDIFF() fonksiyonu iki tarih arasındaki farkı hesaplar
DATEDIFF(Ayin_ilk_gunu, Ayin_son_gunu, DAY) + 1,
"Gün", FORMAT([Date], "ddd"),
"Ayın Günü No", FORMAT([Date], "dd"),
"ISO Hafta No",
VAR ISO_Hafta_No = WEEKNUM([Date], 21)
RETURN
IF(
ISO_Hafta_No < 10,
"W 0"&ISO_Hafta_No,
"W "&ISO_Hafta_No
),
"Haftanın Günü No", WEEKDAY([Date],2)
)
Tarih tablosunda hafta belirtilmek istendiğinde, kullanılacak hafta formatına dikkat etmekte fayda var. Avrupa sisteminde genellikle ISO 8601 standardı kullanılır ve hafta bilgisini bu bağlamda elde etmek için WEEKNUM() fonksiyonunda 21 koduyla belirttik. Bu standarda göre her hafta Pazartesi başlar ve Pazar sona erer. Yılın 1. haftası yılın ilk Perşembesini içeren haftadır. Ancak hafta formatı, her kurumun işleyişine ve kabullenişine göre farklılık gösterebildiği için dikkat edilmesini öneriyoruz.
Power BI Raporlarında Ay ve Gün Adlarını Tarihe Göre Sıralamak
Power BI raporlarında ay adları ve gün adları, varsayılan olarak, alfabetik sıralanır. Çoğu durumda alfabetik sıradan ziyade tarihsel sıralanmasını isteriz.
Örneğin ay adlarının tarihe göre sıralanmasını istediğimizi düşünelim. Aşağıdaki işlem adımlarını takip ederek kolayca sıralayabilirsiniz
- Power BI tablo görünümüne geçilerek,
- Oluşturduğumuz Tarih tablosundaki [Ay] sütunu seçilir,
- Sütun araçları sekmesindeki sütuna göre sırala seçeneğine gelinir,
- DAX ile oluşturduğumuz [Ay No] sütunu seçildiğinde artık [Ay] sütunu [Ay No] sütunundaki değere göre, yani tarih sırasına göre sıralanacaktır.
Günleri tarihe göre sıralamak için aşağıdaki adımlar uygulanır.
- Power BI tablo görünümüne geçilerek,
- Tarih tablosundaki [Gün] sütunu seçilir,
- Sütun araçları sekmesindeki sütuna göre sırala seçeneğine gelinir,
- DAX ile oluşturduğumuz [Haftanın Günü No] sütunu seçildiğinde gün adları tarihsel olarak sıralanacaktır.
Tarih tablosu olarak işaretlemek
Ardından, diğer tabloların da yer aldığı veriler bölümünde görünür olacaktır. İşlemin tamamlanması için son olarak tarih tablosu olarak işaretlemek gerekli.
Tarih tablosu hazır..
Özetle, Power BI raporlarında çok yaygın olarak kullanılan YTD, MTD, SAMEPERIODLASTYEAR() gibi tüm time intelligence (zaman zekası) fonksiyonlarının doğru çalışabilmesi için bir tarih tablosuna ihtiyaç var. Tarih tablosu, farklı zaman boyutlarından verilere bakan, farklı dönemlerin performanslarını kıyaslayan iş zekası rapor dizaynları için genellikle ilk oluşturulan tablolardandır.