İçeriğe geç

Power BI’da Tarih Tablosu: Neden Şart, Nasıl Kurulur?

Zaman zekâsı fonksiyonlarının doğru çalışması için ayrı bir tarih tablosu gerekir. DAX ile birkaç dakikada nasıl kurulacağını adım adım anlatıyorum.

DAX güncellendi 25.10.2026 3 dk okuma Atılay Berber

Power BI’da zaman bazlı analiz yapıyorsanız (geçen yılla karşılaştırma, yılbaşından bugüne toplam, hareketli ortalama) modelinizde ayrı bir tarih tablosu olmalı. Bu yazıda neden gerekli olduğunu ve DAX ile birkaç dakikada nasıl kurulacağını anlatıyorum.

Neden ayrı bir tarih tablosu?

  • Zaman zekâsı fonksiyonları (TOTALYTD, SAMEPERIODLASTYEAR, DATEADD vb.) kesintisiz, her günü içeren bir tarih sütunu bekler. Satış tablosunda satış olmayan günler yoktur; bu yüzden olgu tablosundaki tarih sütunu bu iş için uygun değildir.
  • Birden fazla olgu tablosu (satış, stok, bütçe) tek bir ortak tarih boyutu üzerinden filtrelenir.
  • Yıl, ay, hafta, çeyrek gibi sütunlar bir kez tanımlanır ve tüm raporlarda tutarlı kullanılır.
  • Power BI’ın her tarih sütunu için arka planda oluşturduğu gizli otomatik tarih tablolarına ihtiyaç kalmaz; model küçülür.

DAX ile tarih tablosu oluşturmak

Modelleme → Yeni tablo seçip aşağıdaki ifadeyi yapıştırın. CALENDARAUTO() modeldeki tüm tarih sütunlarına bakıp tam yılları kapsayan bir aralık üretir.

Tarih =
ADDCOLUMNS (
    CALENDARAUTO (),
    "Yil", YEAR ( [Date] ),
    "Ceyrek", "Ç" & QUARTER ( [Date] ),
    "AyNo", MONTH ( [Date] ),
    "Ay", FORMAT ( [Date], "mmmm" ),
    "YilAy", FORMAT ( [Date], "yyyy-MM" ),
    "HaftaNo", WEEKNUM ( [Date], 2 ),
    "HaftaGunuNo", WEEKDAY ( [Date], 2 ),
    "HaftaSonuMu", WEEKDAY ( [Date], 2 ) >= 6
)

Aralığı kendiniz belirlemek isterseniz CALENDARAUTO() yerine CALENDAR ( DATE ( 2020, 1, 1 ), DATE ( 2026, 12, 31 ) ) kullanabilirsiniz. WEEKNUM ve WEEKDAY fonksiyonlarındaki 2 parametresi haftayı pazartesi başlatır.

Tarih tablosu olarak işaretleyin

Tabloyu seçip Tablo araçları → Tarih tablosu olarak işaretle deyin ve Date sütununu seçin. Bu adım zaman zekâsı fonksiyonlarının doğru çalışmasını garanti eder. Ardından Ay sütununu AyNo‘ya göre sıralayın (Sütun araçları → Sütuna göre sırala); yoksa aylar alfabetik dizilir.

İlişkiyi kurun ve ölçüleri yazın

Model görünümünde Tarih[Date] ile olgu tablonuzdaki tarih sütunu arasında bire-çok ilişki kurun. Artık zaman zekâsı ölçüleri tek satırla yazılabilir:

Toplam Satış = SUM ( Satis[Tutar] )

Satış YTD = TOTALYTD ( [Toplam Satış], Tarih[Date] )

Satış Geçen Yıl = CALCULATE ( [Toplam Satış], SAMEPERIODLASTYEAR ( Tarih[Date] ) )

Yıllık Değişim % =
DIVIDE ( [Toplam Satış] - [Satış Geçen Yıl], [Satış Geçen Yıl] )

Son bir ipucu

Tarih tablosu kurduktan sonra Dosya → Seçenekler → Geçerli dosya → Veri yükleme altındaki Otomatik tarih/saat seçeneğini kapatabilirsiniz. Böylece Power BI her tarih sütunu için gizli tablo üretmez ve dosya boyutu küçülür. Raporlarda tarih filtrelerini ve eksenleri her zaman yeni Tarih tablosundan kullanmayı unutmayın.

Sık yapılan hatalar

  • Saat bilgisi içeren tarih sütunu: Olgu tablosundaki sütun tarih + saat ise (2026-03-01 14:35), tarih tablosuyla eşleşmez ve rakamlar eksik görünür. Sütunu Power Query’de Tarih tipine çevirin.
  • Boşluklu ya da tekrar eden tarihler: “Tarih tablosu olarak işaretle” adımı için tarih sütunu benzersiz olmalı ve aralıkta hiçbir gün eksik olmamalı.
  • Filtreleri olgu tablosundan almak: Dilimleyici ve eksenlerde satış tablosundaki tarihi kullanırsanız zaman zekâsı ölçüleri yanlış sonuç verir. Her zaman tarih tablosunu kullanın.
  • Mali yılı unutmak: Şirketiniz mali yıl kullanıyorsa TOTALYTD fonksiyonunun son parametresiyle yıl sonunu belirtin, örneğin TOTALYTD([Toplam Satış], Tarih[Date], "06-30").

Sık sorulan sorular

Tarih tablosunu DAX ile mi, Power Query ile mi oluşturmalıyım?

İkisi de çalışır. Tek bir rapor için DAX hızlıdır. Aynı tabloyu birden çok raporda ya da dataflow’larda kullanacaksanız Power Query (ya da veri ambarındaki bir tarih tablosu) daha yönetilebilir.

Ay adları neden İngilizce çıkıyor?

FORMAT modelin dil ayarını kullanır. Türkçe ay adlarını garanti etmek için yerel ayar parametresini verin: FORMAT([Date], "mmmm", "tr-TR").

İlgili yazılar

HABERDAR OL

Yeni rehberler, kategorilere ayrılmış tek bir e-postada.

Her pazartesi, o hafta yayımlanan yazılar konu başlıklarına göre derlenmiş olarak gelen kutunda. Yeni yazı yoksa e-posta da yok.

Onay e-postasındaki bağlantıya tıklamadan liste aktif olmaz. İstediğin an tek tıkla çıkabilirsin.

Faydalı bulduysan paylaş
LinkedIn'de paylaş X WhatsApp

Yorum yaz

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir