Calculation Groups ile Yinelenen Ölçüleri Tek Yerde Toplamak
Beceri rehberi

Calculation Groups ile Yinelenen Ölçüleri Tek Yerde Toplamak

Hazırlayan: Mindset Institute EditörlüğüGüncellendi: 6 dk okuma

Power BI'da hesaplama grubu kurarak zaman zekası ve biçim mantığını tek yerde yazın: SELECTEDMEASURE, öncelik, dinamik biçim ve sık hatalar.

Hesaplama grubu hangi sorunu çözer?

Zaman karşılaştırması gerektiren bir raporda tipik başlangıç şudur: Satış tutarı için bir ölçü, yılbaşından bugüne için ikinci, geçen yılın aynı dönemi için üçüncü, büyüme yüzdesi için dördüncü ölçü yazılır. Sonra aynı dörtlü maliyet için, sonra kâr için, sonra sipariş adedi için tekrarlanır. Modelde onlarca neredeyse aynı ölçü birikir ve bir mantık değiştiğinde hepsi tek tek düzeltilir.

Hesaplama grubu (calculation group) bu tekrarı kaldırır. Bir kez "yılbaşından bugüne" hesaplamasını yazarsınız; hangi ölçüye uygulanacağını ise raporda kullanıcı ya da görsel belirler. Microsoft belgesi bunu şöyle özetler: hesaplama grupları, DAX formüllerini hesaplama öğeleri (calculation items) olarak tanımlamanıza izin vererek yinelenen ölçü sayısını önemli ölçüde azaltır ve bu öğeler modeldeki mevcut ölçülere uygulanabilir.

Dolayısıyla hesaplama grubu, yeni bir hesaplama türü değil, var olan ölçülerin üzerine oturan bir değiştirici katmandır. Zaman zekası, para birimi dönüşümü ve gerçekleşen/bütçe/sapma görünümleri en yaygın kullanım alanlarıdır.

Önce hazırlık: örtük ölçüleri kapatma

Hesaplama öğeleri yalnızca açık (explicit) ölçülere uygulanır. Açık ölçü, Yeni ölçü ile bir DAX ifadesi yazarak oluşturduğunuz ölçüdür. Örtük (implicit) ölçü ise bir sütunu doğrudan görselin değer alanına atıp toplam ya da ortalama seçtiğinizde ortaya çıkandır. Hesaplama öğeleri örtük ölçüleri etkilemez.

Bu yüzden grup eklerken Power BI, "Discourage implicit measures" özelliğinin açılmasını ister. Açıldığında veri bölmesinde sütunların yanındaki toplam simgesi kaybolur ve sütunları doğrudan görselin değer alanına eklemek engellenir. Daha önce görsellerde oluşmuş örtük ölçüler çalışmaya devam eder, ama yeni olanlar için ölçü yazmanız gerekir.

Pratik sonuç: Hesaplama grubuna geçmeden önce rapordaki "sürükle bırak toplamlar"ı açık ölçülere çevirin. Hazır olmayan bir modelde grubu eklemek, bazı görsellerin değişmeden kalıp bazılarının değişmesine yol açtığı için "bu rakam neden oynamıyor" sorusunun ana nedenidir.

Adım adım: ilk hesaplama grubunu kurmak

Belgeye göre, anlam modelini düzenlerken Model görünümüne geçip şeritteki Calculation group düğmesine basılır. Grup eklendiğinde ilk hesaplama öğesi otomatik olarak SELECTEDMEASURE fonksiyonunu içerir. SELECTEDMEASURE, öğenin ifadesinde "şu an hangi ölçü değerlendiriliyorsa o" anlamına gelen yer tutucudur. İlk öğe bu yüzden hiçbir şeyi değiştirmeyen "mevcut" görünümü verir.

Sonraki adımlar: • Grubu, grup sütununu ve ilk öğeyi anlamlı adlarla yeniden adlandırın. Görsellerde ve dilimleyicilerde kullanılan sütun, grubun sütunudur; "Zaman hesabı" gibi okunur bir ad seçin. • Bağlam menüsünden yeni hesaplama öğeleri ekleyin. Her öğe bir DAX ifadesidir. • Öğeleri mantıklı sırayla dizin: mevcut dönem, yılbaşından bugüne, önceki yıl, fark, değişim yüzdesi. • Tarih tablonuz yoksa önce onu kurun; zaman öğeleri düzgün bir tarih tablosuna dayanır.

Zaman zekası için örnek öğeler şu ifadelerdir. Yılbaşından bugüne öğesi, TOTALYTD ile SELECTEDMEASURE ve tarih sütununu sarmalar. Önceki yıl öğesi, CALCULATE içinde SELECTEDMEASURE ifadesini SAMEPERIODLASTYEAR ile tarih sütununa uygular. Değişim öğesi ise mevcut değerden önceki yıl değerini çıkarıp önceki yıl değerine bölen bir ifade olur. Belgenin örneğinde tarih tablosu başka bir adla kurulmuştu; ifadelerdeki tablo adı kendi modelinizdekiyle uyuşmazsa öğelerin yanında kırmızı hata üçgeni çıkar, adı düzeltince kaybolur.

Rapor tarafında kullanmak

Grup hazır olunca raporda şu düzen çalışır: Bir matris görseli ekleyin, satırlara tarihten ay sütununu, sütunlara hesaplama grubunun sütununu, değerlere ise bir açık ölçüyü koyun. Matris her ay için ölçünün mevcut, yılbaşından bugüne ve önceki yıl hallerini yan yana gösterir. Hesaplama öğeleri sütunlarda ölçüyü öğelere göre gruplayarak görünür.

Grubun sütununu bir dilimleyiciye koyarsanız, sayfadaki birden fazla ölçüye tek hamlede aynı öğeyi uygulayabilirsiniz. Kullanıcı "önceki yıl" seçtiğinde satış, maliyet ve sipariş kartları birlikte o görünüme geçer. Tek bir öğeyi tek bir ölçüye bağlamak isterseniz CALCULATE içinde öğeyi filtre olarak verirsiniz: bir ölçüyü, grubun sütunu "değişim yüzdesi" öğesine eşit olacak biçimde değerlendiren yeni bir ölçü tanımlarsınız. Bu yaklaşım, kartlarda sabit bir kısa yol istediğinizde işe yarar.

Öğenin biçimini de ayarlayabilirsiniz: öğeler varsayılan olarak alttaki ölçünün biçimini kullanır, oysa değişim yüzdesi öğesinin yüzde göstermesi gerekir. Öğenin özelliklerinde dinamik biçim dizesi (dynamic format string) açılır ve yüzde biçimini veren bir ifade girilir.

Birden fazla grup: öncelik ve seçim ifadeleri

Modelde birden fazla hesaplama grubu olduğunda, aynı ölçüye hangisinin önce uygulanacağı kritik hale gelir. Örneğin zaman grubu ile para birimi grubu birlikte kullanılıyorsa, önce zaman mı yoksa önce kur mu uygulanacağı sonucu değiştirir. Bunu grupların precedence özelliği belirler; Özellikler bölmesinden ayarlanır ve her grup için ayrı bir sıra değeri taşır.

Kullanıcının dilimleyicide birden fazla öğe seçmesi, hiç seçmemesi ya da birbiriyle çelişen seçimler yapması durumunda ne döneceğini ise seçim ifadeleri (selection expressions) belirler. Belge, bu ifadelerle çoklu, geçersiz ya da boş seçimde grubun ne döndüreceği üzerinde ince kontrol sağlandığını belirtir. Örneğin hiçbir şey seçilmediğinde ölçünün çıplak halini göstermek, birden fazla öğe seçildiğinde ise kullanıcıya açıklayıcı bir uyarı metni döndürmek mümkündür.

Öncelik ve seçim ifadelerini rapor yayımlanmadan önce çoklu seçimle test edin; hata genellikle yalnızca kullanıcı iki grubu birden kullandığında ortaya çıkar.

Bilinen sınırlar ve hatalar

Belge birkaç uyarı içerir. İlki veri tipidir: Modele bir hesaplama grubu eklendiği anda Power BI raporlarında tüm ölçüler variant veri tipini kullanır; tüm gruplar kaldırılınca ölçüler özgün tiplerine döner. Bu durum, başka bir ölçüye dayanan dinamik biçim dizelerinde hata gösterebilir. Çözüm olarak FORMAT fonksiyonuyla değerin metin olarak tanınmasını zorlamak ya da ifadeyi DAX kullanıcı tanımlı fonksiyonlarla yeniden kullanmak önerilir.

İkincisi metin ölçülerdir. Dinamik başlıklar ve biçim dizeleri için kullanılan sayısal olmayan ölçülere, bir hesaplama öğesi matematik işlemi uyguladığında görsellerde "Text türünden Numeric türüne dönüştürülemiyor" biçiminde bir hata görülür. Önlem, öğe ifadesinde işlemden önce ölçünün sayısal olup olmadığını ISNUMERIC ile denetlemektir: sayısalsa işlemi uygula, değilse ölçüyü olduğu gibi döndür. Öğe ifadesi ayrıca ölçüyü ada ya da veri tipine göre dışarıda bırakacak biçimde de yazılabilir.

Üçüncüsü, Power BI'da hesaplama grubu, Model görünümünün yanı sıra TMDL görünümünden de betikle eklenebilir; ancak betikle gelen yapıyı da yukarıdaki iki tuzak için denetleyin. Son olarak, hesaplama grubu başlangıçta kolay görünse de her ölçüye uygulanmaz: bazı ölçüler (oranlar, ortalamalar) toplanır ya da çıkarılırken anlamsız sonuç verir, bu ölçüleri öğe ifadesinde ada göre ayırmak gerekir.

Bu beceriyi Mindset programlarında nerede çalışırsınız?

Hesaplama grupları, aynı modelden çok sayıda rapor üreten ve ölçü kalabalığıyla boğuşan BI geliştiricilerinin ve finans raporlama ekiplerinin işidir.

Power BI İleri Düzey ve DAX programının modül başlıkları arasında "Hesaplama Grupları ve İleri Kalıplar" bulunur; CALCULATE ve filtre bağlamı ile zaman zekası modülleri bunun doğal ön koşuludur. Ölçü yazımı ve model temizliği tarafı ise Power BI Veri Modelleme programındaki "Ölçüler, Hesaplanan Sütunlar ve Model Temizliği" başlığıyla örtüşür.

İlgili Mindset programı

Power BI İleri Düzey ve DAX

Sık sorulanlar

Sık sorulan sorular

Hesaplama grubu ile ölçü arasındaki fark nedir?

Ölçü bir değer hesaplar; hesaplama grubu ise var olan ölçülerin nasıl değerlendirileceğini değiştirir. Hesaplama öğesi SELECTEDMEASURE ile sorgudaki ölçüyü yer tutucu olarak alır. Bu sayede bir kez yazdığınız zaman ya da biçim mantığı tüm açık ölçülere uygulanabilir ve ölçü sayısı azalır.

Bir hesaplama öğesi neden bazı görsellerde etki etmiyor?

En olası neden, görselin değer alanında örtük ölçü kullanılmasıdır. Belgeye göre hesaplama öğeleri yalnızca açık ölçülere uygulanır. Sütunu doğrudan değer alanına atmak yerine Yeni ölçü ile bir DAX ifadesi yazın ve görselde onu kullanın. Gruplarla çalışırken örtük ölçülerin kapalı tutulması bu yüzden önerilir.

Hesaplama grubunu Power BI Desktop'ta nereden eklerim?

Belge, anlam modelini düzenlerken Model görünümünde şeritteki Calculation group düğmesini gösterir. Düğme ilk kullanımda örtük ölçülerin kapatılmasını isteyebilir. Ayrıca TMDL görünümünde betikle de grup oluşturulabilir. Hangisini seçerseniz seçin, ilk öğe SELECTEDMEASURE içerir ve diğer öğeleri sonradan eklersiniz.

Birden fazla hesaplama grubu çakışırsa ne olur?

Aynı ölçüye birden fazla grup uygulandığında hangisinin önce değerlendirileceğini precedence özelliği belirler. Sıra değiştiğinde sonuç da değişebilir; örneğin kur dönüşümü ile zaman karşılaştırması farklı sırada farklı değer verebilir. Gruplar birlikte kullanılacaksa öncelikleri baştan planlayıp çoklu seçimle test edin.

Power BI Hesaplama Grupları Nasıl Oluşturulur?