Calculation Groups in Power BI: Reusable DAX Patterns

Master Power BI calculation groups to eliminate DAX duplication — build reusable time intelligence, currency conversion, and formatting patterns that scale across the entire semantic model.

E
ECOSIRE Research and Development Team
|19 Mart 20269 dk okuma1.9k Kelime|

Power BI'daki Hesaplama Grupları: Yeniden Kullanılabilir DAX Kalıpları

40 ölçüm içeren bir finansal model düşünün: Gelir, Brüt Kar, FAVÖK, Net Gelir ve 36 tane daha. Artık işletme her bir ölçümün cari dönem, önceki dönem, dönem içi dönem değişimi, YTD, önceki YTD ve YTD değişimi için mevcut olmasını istiyor. Bu 240 ölçü. Daha sonra üç para biriminde para birimi dönüşümü istiyorlar. Bu 720 ölçü.

Hesaplama grupları olmadan bu bir bakım kabusudur. Hesaplama gruplarında zaman zekası mantığı bir kez, para birimi dönüştürme mantığı bir kez yazılır ve her temel ölçüye otomatik olarak uygulanır. 40 ölçü 40 ölçü olarak kalır; gerisini hesaplama öğeleri halleder.

Bu kılavuz, öncelik kuralları, SELECTEDMEASURE() teknikleri ve birden fazla hesaplama grubunun aynı modelde birleştirilmesi gibi gelişmiş modeller de dahil olmak üzere kavramsal temelden pratik uygulamaya kadar hesaplama gruplarını kapsar.

Önemli Çıkarımlar

  • Hesaplama grupları, yüzlerce gereksiz zaman istihbaratı ve karşılaştırma ölçüsünü birkaç hesaplama öğesiyle değiştirir
  • SELECTEDMEASURE() şu anda değerlendirme bağlamında mevcut olan ölçüme referans verir — yeniden kullanılabilirliğin anahtarı
  • Öncelik, birden fazla grup aynı anda uygulandığında hangi hesaplama grubunun önceliğe sahip olacağını kontrol eder
  • Hesaplama öğelerindeki FORMAT() dizeleri, ölçüme duyarlı sayı biçimlendirmesini etkinleştirir
  • Hesaplama gruplarının oluşturulması için Tablo Düzenleyicisi gerekir (yerel olarak Power BI Desktop kullanıcı arayüzünde mevcut değildir)
  • Birden fazla hesaplama grubu etkileşime girebilir - bir zaman zekası grubu + bir para birimi grubu + bir senaryo grubu birlikte çalışır
  • Hesaplama grupları, olası senaryoları uygulamak, birim değiştirmek ve para birimi seçimini görüntülemek için kullanılabilir
  • ISSELECTEDMEASURE() kullanılarak ölçümler belirli hesaplama gruplarının dışında tutulabilir

Sorun Hesaplama Gruplarının Çözdüğü Sorun

Hesaplama gruplarından önce, Power BI'daki zaman zekası, temel metrik ve zaman hesaplamasının her birleşimi için ayrı ölçümler oluşturmak anlamına geliyordu:

Revenue = SUM(Sales[Amount])
Revenue PY = CALCULATE([Revenue], SAMEPERIODLASTYEAR('Date'[Date]))
Revenue YTD = CALCULATE([Revenue], DATESYTD('Date'[Date]))
Revenue YTD PY = CALCULATE([Revenue], DATESYTD(SAMEPERIODLASTYEAR('Date'[Date])))
Revenue vs PY = [Revenue] - [Revenue PY]
Revenue vs PY % = DIVIDE([Revenue vs PY], [Revenue PY])

Bu Gelir için 6 önlemdir. Brüt Kar, FAVÖK, Faaliyet Giderleri ve 7 KPI daha için tekrarlayın; birdenbire hepsi neredeyse aynı formüllere sahip 66 ölçüm elde edersiniz. İşletme zaman zekası mantığını değiştirmek istediğinde (örneğin, takvim yılı yerine mali yılı kullanmak), her ölçünün güncellenmesi gerekir.

Hesaplama grupları bunu "neyi ölçüyoruz" (temel ölçüler) ile "nasıl karşılaştırıyoruz" (hesaplama öğeleri) konusunu ayırarak çözer. 6 maddeden oluşan bir hesaplama grubu, modeldeki her temel ölçü için 5 ek ölçünün yerine geçer.


Temel Kavramlar

Hesaplama grubu: Semantik modelde tam olarak tek sütunlu özel bir tablo. Sütun "hesaplama öğeleri" içerir; her öğe, bir dilimleyicide seçildiğinde veya bir matris/grafikte kullanıldığında temel ölçümlerin nasıl hesaplanacağını değiştirir.

Hesaplama öğesi: Şu anda değerlendirilmekte olan ölçüye başvuruda bulunmak için SELECTEDMEASURE() işlevini kullanan adlandırılmış bir DAX ifadesi. Her hesaplama öğesi dilimleyicide hangi zaman diliminin veya karşılaştırma modunun gösterileceğini kontrol eden bir satır olarak görünür.

SELECTEDMEASURE(): Hesaplama grubu bağlamında şu anda değerlendirilmekte olan ölçünün değerini döndüren bir DAX işlevi. Hesaplama gruplarını yeniden kullanılabilir kılan şey budur; modeldeki her hesaplama için aynı öğe formülü geçerlidir.

Öncelik: Birden fazla hesaplama grubu aynı anda etkin olduğunda (örneğin, kullanıcı zaman bilgisi dilimleyiciden "Önceki Yıl"ı VE para birimi dilimleyiciden "USD"yi seçtiğinde), öncelik hangi grubun hesaplama öğesinin ilk önce uygulanacağını belirler.


Tablo Düzenleyici ile Hesaplama Grupları Oluşturma

Power BI Desktop'ta hesaplama grupları oluşturmaya yönelik yerel bir kullanıcı arayüzü yoktur (2026 başı itibarıyla). Harici bir araç kullanılarak oluşturulmaları gerekir: Tablo Düzenleyicisi 2 (ücretsiz) veya Tablo Düzenleyicisi 3 (ticari).

Kurulum:

  1. GitHub'dan Tabular Editor 2'yi indirin (ücretsiz, açık kaynak)
  2. Power BI Desktop'ta: Harici Araçlar → Tablo Düzenleyicisi
  3. Tablo Düzenleyicisi açık Power BI modeline bağlı olarak açılır

Zaman zekası hesaplama grubu oluşturma:

  1. Tablo Düzenleyici'de Tablolar → Yeni Oluştur → Hesaplama Grubu'na sağ tıklayın
  2. Adını Time Intelligence olarak adlandırın
  3. Grup otomatik olarak bir sütun oluşturur; onu Time Calculation olarak yeniden adlandırın
  4. Gruba sağ tıklayın → Hesaplama Öğesi Ekle → her öğeye ad verin

Hesaplama kalemi: Cari Dönem (baz)

SELECTEDMEASURE()

Bu öğe, hesaplamayı değişiklik yapmadan olduğu gibi döndürür. Bu öğe seçildiğinde her ölçü normal değerini gösterir.

Hesaplama kalemi: Önceki Yıl

CALCULATE(
    SELECTEDMEASURE(),
    SAMEPERIODLASTYEAR('Date'[Date])
)

Hesaplama öğesi: Yılbaşından Bugüne

CALCULATE(
    SELECTEDMEASURE(),
    DATESYTD('Date'[Date])
)

Hesaplama kalemi: Önceki Yılın YTD'si

CALCULATE(
    SELECTEDMEASURE(),
    DATESYTD(SAMEPERIODLASTYEAR('Date'[Date]))
)

Hesaplama maddesi: Yıllık Değişim

SELECTEDMEASURE() -
CALCULATE(
    SELECTEDMEASURE(),
    SAMEPERIODLASTYEAR('Date'[Date])
)

Hesaplama öğesi: Yıllık Değişim %'si

DIVIDE(
    SELECTEDMEASURE() -
    CALCULATE(
        SELECTEDMEASURE(),
        SAMEPERIODLASTYEAR('Date'[Date])
    ),
    CALCULATE(
        SELECTEDMEASURE(),
        SAMEPERIODLASTYEAR('Date'[Date])
    ),
    BLANK()
)

Bu öğeleri oluşturduktan sonra Tablo Düzenleyici'de (Ctrl+S) kaydedin. Değişiklikler Power BI Desktop'a geri eşitlenir.

Rapora Time Calculation sütununu kullanarak bir dilimleyici ekleyin. Kullanıcı "Önceki Yıl"ı seçtiğinde, herhangi bir matris veya grafikteki her ölçüm otomatik olarak önceki yılın değerini gösterir.


FORMAT String Tekniği

Yıllık Değişim % öğesiyle ilgili bir sorun ortaya çıkar: ondalık sayı döndürür (%15 büyüme için 0,15), ancak temel ölçünün biçim dizesi para birimi içindir (ör. "$#,0"). Yüzde "0,15$" olarak görüntüleniyor; yanlış biçim.

Çözüm, hesaplama öğesinde bir biçim dizesi ifadesi ayarlamaktır. Tablo Düzenleyici'de her hesaplama öğesinin, kullanılacak biçim dizesini döndüren bir DAX ifadesini içerebilen bir "Dizeyi Biçimlendir İfadesi" özelliği vardır:

Yıllık Değişim %'si için dize ifadesini biçimlendir:

"0.0%"

Para birimi tutarları için dize ifadesini biçimlendirin:

"$#,0"

Seçilen hesaplamaya dayalı dinamik biçim dizesi:

IF(
    ISSELECTEDMEASURE([Units Sold], [Order Count]),
    "#,0",
    "$#,0.00"
)

Biçim dizesi ifadeleri, hangi temel ölçünün bağlamda olduğunu saptamak ve uygun biçim dizesini döndürmek için ISSELECTEDMEASURE() işlevini kullanır. Bu, tek bir "Yıllık Değişim Yüzdesi" hesaplama öğesinin, gelir ölçüleri için yüzde ve birim ölçüleri için sayım değişikliği olarak biçimlendirilmesini sağlar.


Döviz Dönüşüm Hesaplama Grubu

Para birimi dönüştürme, başka bir klasik hesaplama grubu kullanım durumudur. Hesaplama grupları olmadan, 3 para biriminde 40 ölçü içeren bir model, 120 ölçü gerektirir. Bir hesaplama grubuyla, orijinal 40 artı 3 hesaplama öğesini gerektirir.

Kurulum: Modelde, para birimine ve tarihe göre döviz kurlarını içeren bir CurrencyRates tablosu ve dilimleyici için bir Currency boyut tablosu bulunmalıdır.

Hesaplama öğesi: USD (temel para birimi)

SELECTEDMEASURE()

Hesaplama kalemi: Avro

SUMX(
    VALUES('Date'[Date]),
    CALCULATE(SELECTEDMEASURE()) *
    CALCULATE(
        MAX(CurrencyRates[Rate]),
        CurrencyRates[ToCurrency] = "EUR"
    )
)

Hesaplama öğesi: GBP

SUMX(
    VALUES('Date'[Date]),
    CALCULATE(SELECTEDMEASURE()) *
    CALCULATE(
        MAX(CurrencyRates[Rate]),
        CurrencyRates[ToCurrency] = "GBP"
    )
)

SUMX döngüsü her tarih üzerinde yinelenir ve o tarih için döviz kurunu uygular; tarih dilimleyiciler farklı döviz kurlarına sahip dönemleri kapsasa bile para birimlerini doğru şekilde işler. Para birimi grubunun Precedence değerini zaman zekası grubundan daha düşük bir değere ayarlayın (daha düşük sayı = Tablo Düzenleyici terminolojisinde daha yüksek öncelik).


Çoklu Hesaplama Grupları Arasındaki Öncelik Kuralları

Bir kullanıcı aynı anda iki hesaplama grubundaki öğeleri seçtiğinde (örneğin, Zaman Zekası'ndan "Önceki Yıl" ve Para Birimi'nden "EUR"), Power BI bunları öncelik sırasına göre değerlendirir.

Öncelik her hesaplama grubunda bir tam sayı olarak ayarlanır; daha yüksek tam sayı = önce değerlendirilir (veya "dış").

Örnek:

  • Zaman Zekası: Öncelik = 20 (iç değerlendirme)
  • Para Birimi Dönüştürme: Öncelik = 10 (dış olarak değerlendirilen)

Bu kurulumla, Para Birimi dönüştürme öğesi Zaman Zekası öğesinin etrafına sarılır. "EUR" + "Önceki Yıl" seçeneğinin seçilmesi şu hesaplamayı yapar: Önceki Yıl değerini (iç hesaplama) EUR'ya (dış hesaplama) dönüştürür. Öncelik sırası hesaplamaların anlamsal amacına uygun olmalıdır.

Temel kural: Tarih bağlamını değiştiren hesaplama grubunun (zaman zekası) daha yüksek önceliğe sahip olması gerekir (düşük öncelik numarası, iç/sonra değerlendirilir). Tarih hesaplamasından sonra değeri değiştiren hesaplama grubunun (para birimi dönüştürme, birim dönüştürme) önceliği daha düşük olmalıdır (dışta değerlendirilen/ilk olarak değerlendirilen).


Belirli Ölçüleri Hesaplama Gruplarından Hariç Tutmak

Her önlem her hesaplama grubuna yanıt vermemelidir. Geçerli rapor tarihini döndüren "Rapor Tarihi" ölçüsü, zaman zekası tarafından değiştirilmemelidir. Yıllık olarak belirlenen "Hedef Değer" ölçüsü bir önceki yıla dönüştürülmemelidir.

Belirli ölçümleri hariç tutmak için hesaplama öğesinde ISSELECTEDMEASURE() işlevini kullanın:

IF(
    ISSELECTEDMEASURE([Report Date], [Target Value], [Budget]),
    SELECTEDMEASURE(),
    CALCULATE(
        SELECTEDMEASURE(),
        SAMEPERIODLASTYEAR('Date'[Date])
    )
)

Bu, "Önceki Yıl" öğesinin [Rapor Tarihi], [Hedef Değer] ve [Bütçe] için değişmeden geçmesini sağlar; zaman bilgisi seçiminden bağımsız olarak normal değerlerine geri döner.


Hesaplama Gruplarıyla Ne Olursa Senaryo Analizi

Hesaplama grupları zarif senaryo analizine olanak tanır. "Temel Durum", "İyimser" ve "Kötümser" gibi öğelere sahip bir "Senaryo" hesaplama grubu, senaryoya özgü ölçüm değişkenleri oluşturmadan senaryo çarpanlarını gelir ve maliyet ölçümlerine uygulayabilir.

-- Base Case calculation item
SELECTEDMEASURE()

-- Optimistic calculation item
SWITCH(
    TRUE(),
    ISSELECTEDMEASURE([Revenue], [Gross Profit]), SELECTEDMEASURE() * 1.15,
    ISSELECTEDMEASURE([Operating Expenses], [COGS]), SELECTEDMEASURE() * 0.95,
    SELECTEDMEASURE()
)

-- Pessimistic calculation item
SWITCH(
    TRUE(),
    ISSELECTEDMEASURE([Revenue], [Gross Profit]), SELECTEDMEASURE() * 0.85,
    ISSELECTEDMEASURE([Operating Expenses], [COGS]), SELECTEDMEASURE() * 1.10,
    SELECTEDMEASURE()
)

Kullanıcılar dilimleyiciden bir senaryo seçer; Her mali ölçü, seçilen senaryonun varsayımlarını yansıtacak şekilde güncellenir. Bunu zaman istihbaratı grubuyla birleştirmek şunu sağlar: "İyimser senaryoda bana 3. Çeyrek Gelirini önceki yılın karşılaştırmasını göster."


Sıkça Sorulan Sorular

Hesaplama grupları Power BI Desktop'ta Premium olmadan çalışır mı?

Evet. Hesaplama grupları tüm Power BI lisans katmanlarında çalışır; bunlar bir Premium özelliği değil, anlamsal bir model özelliğidir. Power BI Desktop'ın yerel kullanıcı arayüzü oluşturmayı desteklemediğinden (ancak bunları doğru şekilde oluşturup değerlendirdiğinden) tek Premium gereksinimi, bunları oluşturmak için Tablo Düzenleyicisi'nin kullanılmasının gerekli olmasıdır. Tablo Düzenleyici'de oluşturulduktan sonra hesaplama grupları, ücretsiz ve Pro da dahil olmak üzere herhangi bir çalışma alanında çalışır.

Tablo Düzenleyici olmadan hesaplama grupları oluşturabilir miyim?

Power BI Desktop yerel kullanıcı arayüzünde hesaplama grupları doğrudan oluşturulamaz (2026 başı itibarıyla). Tablo Düzenleyicisi 2 (ücretsiz) standart araçtır. Alternatif olarak, XMLA uç nokta araçları (SSMS, ALM Araç Takımı), TMSL komut dosyası oluşturma yoluyla hesaplama grupları oluşturabilir. Bazı kullanıcılar ayrıca programlama yoluyla XMLA REST API çağrıları aracılığıyla hesaplama grupları oluşturur. Microsoft, gelecek sürümlerde hesaplama grubu oluşturmayı Power BI Desktop'a yerel olarak eklemeyi planladığını belirtti.

Hesaplama gruplarının performansa etkisi nedir?

Hesaplama grupları, eşdeğer ölçümlerin manuel olarak oluşturulmasıyla karşılaştırıldığında minimum düzeyde ek yük getirir. Her SELECTEDMEASURE() değerlendirmesi, başvurulan önlemin DAX'ını çağırır; eşdeğer açık önlemlerin doğurabileceği ek maliyet yoktur. Aslında hesaplama grupları, çoğu benzer açık ölçümü (hepsi sorgu önbellek girişleri oluşturur) aynı değerlendirme yollarını paylaşan daha az öğeyle değiştirerek model performansını artırır.

Hesaplama grupları otomatik olarak oluşturulan sütunlardan alınan örtülü ölçümlerle kullanılabilir mi?

Hesaplama grupları, modelde tanımlanan açık DAX ölçülerine uygulanır. Power BI'ın otomatik olarak oluşturduğu sütun toplamaları için geçerli değildirler (tanımlanmış bir ölçü olmadan sayısal bir sütunun toplanması gibi). En iyi uygulama, tüm iş ölçümleri için açık ölçümler tanımlamak ve bu ölçümler üzerinde hesaplama gruplarını kullanmaktır.

Hesaplama grupları satır düzeyindeki güvenlikle nasıl etkileşime girer?

Hesaplama grupları ve satır düzeyindeki güvenlik birbirine diktir; bağımsız olarak çalışırlar. RLS, kullanıcıya hangi satırların görünür olduğunu filtreler; hesaplama grupları, bu görünür satırların ölçümlerinin nasıl hesaplanacağını değiştirir. Kombinasyon doğru şekilde çalışır: RLS verileri sınırlar, ardından hesaplama grubunun öğesi ölçüm mantığını dönüştürür. Doğru şekilde uygulanan RLS ile hesaplama grupları arasında bilinen bir çakışma yoktur.

Hesaplama grupları ile saha parametreleri arasındaki fark nedir?

Hesaplama grupları, ölçümlerin nasıl hesaplanacağını değiştirir (zaman kaymalarının uygulanması, para birimi dönüştürmeleri, senaryo ayarlamaları). Alan parametreleri, kullanıcıların bir görselleştirmede hangi hesaplamanın veya sütunun görüneceğini seçmesine olanak tanır; örneğin bir grafikte Gelir, Kâr ve Birimler arasında geçiş yapar. Farklı problemleri çözerler ve birlikte kullanılabilirler: temel ölçümü seçmek için alan parametreleri, o ölçüm için zaman karşılaştırmasını seçmek için hesaplama grupları.


Sonraki Adımlar

Hesaplama grupları, bakımı yapılabilir, ölçeklenebilir Power BI anlamsal modelleri oluşturmaya yönelik en güçlü araçlardan biridir. Doğru uygulandığında DAX çoğaltmasını ortadan kaldırır, model karmaşıklığını azaltır ve modeli genişletilebilir hale getirir; yeni bir zaman zekası dönemi eklemek, düzinelerce ölçümü yeniden yazmak yerine bir hesaplama öğesi eklemek anlamına gelir.

ECOSIRE'ın Power BI veri modelleme hizmetleri, anlamsal model geliştirmenin bir parçası olarak hesaplama grubu tasarımını ve uygulamasını içerir. Hesaplama gruplarının mevcut modelinizi nasıl basitleştirebileceğini veya bir sonraki uygulamanızı nasıl iyileştirebileceğini görüşmek için bizimle iletişime geçin.

E

Yazan

ECOSIRE Research and Development Team

ECOSIRE'da kurumsal düzeyde dijital ürünler geliştiriyor. Odoo entegrasyonları, e-ticaret otomasyonu ve yapay zeka destekli iş çözümleri hakkında içgörüler paylaşıyor.

WhatsApp'ta Sohbet Et