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 tablosu ile Date tablosu arasında üç ilişki olduğunu göreceksiniz.
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 örnekte etkin ilişki, Sales tablosundaki OrderDateKey sütununu filtreler. Bu nedenle Date tablosuna uygulanan filtreler, sipariş tarihine göre sıralama yapmak için Sales tablosuna yayılır. Gönderim tarihine veya son tarihe göre filtreleme yapılmaz.
Bir sonraki adım, Date tablosuyla Sales 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 kutusuna (şeridin altında bulunur) aşağıdaki hesaplanan tablo tanımını girin ve Enter tuşuna basın.
Ship Date = 'Date'
Hesaplanan tablo tanımı, Date tablosundaki verileri çoğaltarak Ship Date adlı yeni bir tablo oluşturur. Ship Date tablosu, Date tablosuyla aynı sütunlara ve satırlara sahiptir. Date tablosundaki veriler yenilendiğinde Ship Date tablosu da yeniden hesaplanır ve iki tablo bu şekilde sürekli eşitlenir.
Model diyagramına geçiş yaptığınızda Ship Date tablosunun eklendiğini göreceksiniz.
Şimdi Ship Date tablosundaki DateKey sütunuyla Sales tablosundaki ShipDateKey arasında bir ilişki oluşturun. İlişkiyi oluşturmak için Ship Date tablosundaki DateKey sütununu Sales tablosundaki ShipDateKey sütununun üzerine sürükleyebilirsiniz.
Hesaplanan tablo yalnızca verileri çoğaltır. Sütun görünürlüğü veya hiyerarşiler gibi model yapılandırmalarını çoğaltmaz. Gerekirse bunları yeni tablo için yapılandırmanı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 Ship Date tablosundaki Fiscal Year sütununun adını Ship Fiscal Year olarak değiştirebilirsiniz. Bu şekilde Ship Date tablosundaki alanlar görsellerde kullanıldığında adları görsel adı veya eksen etiketi gibi etiketlere otomatik olarak eklenir.
Ship Date 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
Aşağıdaki örnekte bu kez CALENDARAUTO DAX işlevi kullanılarak ikinci bir hesaplanan tablo oluşturulacaktır.
Aşağıdaki tanımı kullanarak Due Date hesaplanan tablosunu oluşturun.
Due Date = CALENDARAUTO(6)
CALENDARAUTO işlevi tek bir isteğe bağlı bağımsız değişken alır (yılın son ayının numarası) 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 eski tarih 15 Ekim 2017 ise CALENDARAUTO işlevinin döndüreceği ilk tarih 1 Temmuz 2017 olacaktır. Modelinizde depolanan en yeni tarih 15 Haziran 2020 ise CALENDARAUTO işlevinin döndüreceği son tarih 30 Haziran 2020 olacaktır.
CALENDARAUTO işlevi aşağıdaki tarih tablosu işaretleme gereksinimlerinin yerine getirilmesini gerektirir:
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 CALENDAR DAX işlevini kullanarak ve tarih aralığını temsil eden iki tarih değeri geçerek de bir 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.
Şimdi veri görünümüne geçin ve ardından Alanlar bölmesinde Due Date 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.
Tarih sütunu içeren bir tablo yenilendiğinde Due Date hesaplanan tablosu da değerleri yeniden hesaplar. Başka bir deyişle Sales tablosuna sipariş tarihi 1 Temmuz 2020 olan bir satır yüklendiğinde Due Date tablosu otomatik olarak bir sonraki yılın sonuna kadar olan tarihleri içerecek şekilde genişletilir: 30 Haziran 2021.
Başta yıl, çeyrek ve ay olmak üzere bilinen filtreleme ve gruplama gereksinimlerinin desteklenmesi için Due Date tablosu ek sütunlara ihtiyaç duyar.