Giriş
Modelinize hesaplanan tablo eklemek için Veri Analizi İfadeleri (DAX) formülü yazabilirsiniz. Formül, var olan model verilerini çoğaltarak veya dönüştürerek yeni bir tablo oluşturabilir.
Not
Hesaplanan tablolar dış verilere bağlanamaz. Bunu yapmak için Power Query'yi kullanmanız gerekir.
Hesaplanan tablo formülünün tablo nesnesi döndürmesi gerekir. En basit formül, var olan model tablosunu çoğaltabilir.
Hesaplanan tabloların bir etkisi vardır: Bu tablolar model depolama boyutunu artırır ve veri yenileme süresini uzatabilir. Bunun nedeni, formüllerinde yenilenen tablo bağımlılıkları olan hesaplanan tabloların yeniden hesaplanmasıdır.
Tabloları çoğaltma
Aşağıdaki bölümde hesaplanan tablo oluşturularak çözülebilecek sık karşılaşılan bir tasarım sorununa yer verilmiştir. Öncelikle Adventure Works DW 2020 M03.pbix dosyasını indirip açmanız ve model diyagramına geçiş yapmanız gerekir.
Model diyagramında Sales tablosunun Date tablosuyla üç ilişkisi olduğuna dikkat edin.
Sales tablosu satış verilerini sipariş tarihine, gönderim tarihine ve son tarihe göre depoladığından diyagramda üç ilişki gösterilmiştir. OrderDateKey, ShipDateKey ve DueDateKey sütunlarını incelediğinizde ilişkilerden birinin düz çizgi olarak gösterildiğini görürsünüz. Bu, etkin ilişkidir. Kesik çizgilerle gösterilen diğer ilişkiler, etkin olmayan ilişkilerdir.
Not
İki model tablosu arasında yalnızca bir etkin ilişki bulunabilir.
Diyagramda imleci etkin ilişkinin üzerine getirdiğinizde ilgili sütunlar vurgulanır. Model diyagramında ilişkili sütunlarla bu şekilde etkileşim kurabilirsiniz. Bu durumda, etkin ilişki Sales tablosundaki OrderDateKey sütununu filtreler. Bu nedenle , Date tablosuna uygulanan filtreler sipariş tarihine göre filtrelemek için Sales tablosuna yayılır; hiçbir zaman gönderim tarihine veya son tarihe göre filtreleme yapmazlar.
Sonraki adım Date tablosuylaSales tablosu arasındaki iki etkin olmayan ilişkiyi silmektir. Bir ilişkiyi silmek için sağ tıklayıp bağlam menüsünde Sil'i seçin. Etkin olmayan iki ilişkiyi de sildiğinizden emin olun.
Ardından rapor kullanıcılarının satışları gönderim tarihine göre filtrelemesini sağlamak için yeni bir tablo ekleyin. Rapor görünümüne geçin ve modelleme şerit sekmesindeki Hesaplamalar grubunun içinden Yeni tablo'yu seçin.
Formül çubuğuna (şeridin altında bulunur) aşağıdaki hesaplanmış tablo tanımını girin ve Enter tuşuna basın.
Ship Date = 'Date'
Hesaplanan tablo tanımı , Date tablosu verilerini çoğaltarak Ship Date adlı yeni bir tablo oluşturur. Sevk Tarihi tablosu, Date tablosuyla tam olarak aynı sütun ve satırlara sahiptir. Date tablosu verileri yenilendiğinde Ship Date tablosu yeniden hesaplandığından her zaman eşitlenir.
Model diyagramına geçin ve Ship Date tablosunun eklenip eklenmiyorsa dikkat edin.
Ardından, Ship Date tablosundaki DateKey sütunu ile Sales tablosundaki ShipDateKey sütunu arasında bir ilişki oluşturun. Ship Date tablosundaki DateKey sütununu Sales tablosundaki ShipDateKey sütununa sürükleyerek ilişkiyi oluşturabilirsiniz.
Hesaplanan tablo yalnızca verileri yineler; sütun görünürlüğü veya hiyerarşileri gibi model özelliklerini veya nesnelerini yinelemez. Gerekirse bunları yeni tablo için ayarlamanız gerekir.
İpucu
Hesaplanan tablonun sütunları yeniden adlandırılabilir. Bu örnekte sütunları amaçları doğrultusunda yeniden adlandırmak faydalı olacaktır. Örneğin, Sevk Tarihi tablosundaki Mali Yıl sütunu Ship Fiscal Year olarak yeniden adlandırılabilir. Buna göre, Sevk Tarihi tablosundaki alanlar görsellerde kullanıldığında, adları görsel başlığı veya eksen etiketleri gibi açıklamalı alt yazılara otomatik olarak eklenir.
Sevk Tarihi tablosunun tasarımını tamamlamak için şunları yapabilirsiniz:
- Aşağıdaki sütunları yeniden adlandırın:
- Date yerine Ship Date
- Fiscal Year yerine Ship Fiscal Year
- Fiscal Quarter yerine Ship Fiscal Quarter
- Month yerine Ship Month
- Full Date yerine Ship Full Date
- Ship Full Date sütununu Ship Date sütununa göre sıralayın.
- Ship Month sütununu MonthKey sütununa göre sıralayın.
- MonthKey sütununu gizleyin.
- Aşağıdaki düzeylere sahip olan Fiscal adlı bir hiyerarşi oluşturun:
- Ship Fiscal Year
- Ship Fiscal Quarter
- Ship Month
- Ship Full Date
- Ship Date sütununu kullanarak Ship Date tablosunu tarih sütunu olarak işaretleyin.
Hesaplanan tablolar, daha önce bahsedildiği gibi iki tablo arasında birden fazla ilişkinin bulunduğu senaryolar için faydalıdır. Bu tabloları ayrıca modelinize tarih tablosu eklemek için de kullanabilirsiniz. Tarih tabloları, akıllı zaman gösterimi olarak bilinen özel zaman filtrelerinin uygulanması için gereklidir.
Tarih tablosu oluşturma
Sonraki örnekte, bu kez DAX işlevi kullanılarak
CALENDARAUTO ikinci bir hesaplanan tablo oluşturulacaktır.
Aşağıdaki tanımı kullanarak Due Date hesaplanan tablosunu oluşturun.
Due Date = CALENDARAUTO(6)
CALENDARAUTO DAX işlevi, yılın son ay numarası olan tek bir isteğe bağlı bağımsız değişken alır ve tek sütunlu bir tablo döndürür. Ay numarasını geçirmezseniz 12 (Aralık) olduğu kabul edilir. Örneğin Adventure Works şirketinin mali yılı her sene 30 Haziran tarihinde sona erdiğinden 6 (Haziran) değeri geçirilmiştir.
İşlev, modelinizdeki tüm tarih ve tarih/saat sütunlarını tarayarak depolanan en eski ve en yeni tarih değerlerini belirler. Ardından tarihlerin tam yıllarını dahil ederek modelinizdeki tüm tarihleri kapsayan tam kapsamlı bir tarih kümesi oluşturur. Örneğin, modelinizde depolanan en erken tarih 15 Ekim 2021 ise işlev tarafından
CALENDARAUTO döndürülen ilk tarih 1 Temmuz 2021 olacaktır. Modelde depolanan en son tarih 15 Haziran 2022 ise işlev tarafından
CALENDARAUTO döndürülen son tarih 30 Haziran 2022 olacaktır.
İşlev,
CALENDARAUTObir tarih tablosunu işaretlemek için aşağıdaki gereksinimlerin karşılanmasını garanti eder:
- Tabloda veri türü Tarih olan bir sütun bulunmalıdır.
- Sütunda tam yıllar bulunmalıdır.
- Sütunda eksik tarih olmamalıdır.
İpucu
Ayrıca DAX işlevini kullanarak
CALENDAR ve tarih aralığını temsil eden iki tarih değerini geçirerek de tarih tablosu oluşturabilirsiniz. İşlev, aralık dahilindeki her tarih için bir satır oluşturur. Statik tarih değerleri veya modelinizdeki belirli sütunlardan en eski/en yeni tarihleri alan ifadeler geçirebilirsiniz.
Ardından veri görünümüne geçin ve Alanlar bölmesinde Son Tarih tablosunu seçin. Ardından tarih sütunlarını inceleyin. Date sütununun başlığındaki oku seçip artan düzende sıralayarak ilk satırdaki en eski tarihi görebilirsiniz.
Not
Sütunları sıralamak veya filtrelemek, değerlerin depolanma şeklini değiştirmez. Bu işlevler, verileri keşfetmenize ve anlamanıza yardımcı olur.
Date sütunu seçili olduğuna göre durum çubuğundaki (sol alt köşede bulunur) iletiyi inceleyin. Burada tabloda depolanan satır sayısı ve seçilen sütunda yer alan ayrı değer sayısı gösterilir.
Tablo satırı ve benzersiz değer sayılarının aynı olması, sütunun yalnızca benzersiz değerler içerdiği anlamına gelir. Bu faktör, iki nedenden dolayı önemlidir: Tarih tablosunu işaretleme gereksinimlerinin yerine getirildiğini gösterir ve bu sütunun model ilişkisinin tek tarafı olarak kullanılmasını sağlar.
Son Tarih hesaplanan tablosu, tarih sütunu içeren bir tablo her yenilendiğinde yeniden hesaplanır. Başka bir deyişle, satış tablosuna sipariş tarihi 1 Temmuz 2022 olan bir satır yüklendiğinde, Son Tarih tablosu otomatik olarak tarihleri gelecek yılın sonuna kadar içerecek şekilde genişletilir: 30 Haziran 2023.
Due Date tablosu, özellikle yıla, üç aylık döneme ve aya göre bilinen filtreleme ve gruplandırma gereksinimlerini desteklemek için ek sütunlar gerektirir.