Giriş

Tamamlandı

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.

Görüntüde iki tablo vardır: Sales ve Date. Tablolar arasında üç ilişki vardır. İlişkilerden yalnızca bir tanesi etkindir.

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.

Power BI Desktop Modelleme şerit sekmesini gösteren görüntü. Hesaplamalar grubunun içindeki Yeni Tablo komutu vurgulanmıştır.

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.

Ship Date tablosundaki sütunların Date tablosundaki sütunlarla karşılaştırılmasını gösteren görüntü.

Ş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.

Veri görünümünde Due Date tablosunu gösteren görüntü. Date adlı tek bir sütun vardır ve değerler en eskiden en yeniye doğru sıralandığında ilk tarih 1 Temmuz 2017 olmuştur.

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.

Durum iletisini gösteren görüntü: TABLO: Due Date (1.461 satır) SÜTUN: Date (1.461 ayrı değer).

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.