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 tablosunun Date tablosuyla üç ilişkisi olduğuna dikkat edin.

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

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

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.

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

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.

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.

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.