İç ve dış set ifadeleri
Set ifadeleri toplama fonksiyonlarının içinde ve dışında kullanılabilir ve küme ayraçları içine alınır.
Bir toplama fonksiyonunun içinde bir set ifadesi kullandığınızda, şu şekilde görünebilir:
Örnek: İç set ifadesi
Sum( {$<Year={2021}>} Sales )
Birden fazla toplaması olan ifadeleriniz varsa ve aynı set ifadesini her toplama fonksiyonunda tekrar yazmak zorunda kalmak istemiyorsanız, toplama fonksiyonunun dışında bir set ifadesi kullanın.
Bir dış set ifadesi kullanırsanız, ifade kapsamın başına yerleştirilmelidir.
Örnek: Dış set ifadesi
{<Year={2021}>} Sum(Sales) / Count(distinct Customer)
Toplama fonksiyonunun dışında bir set ifadesi kullanırsanız, ifadeyi mevcut ana hesaplamalara uygulayabilirsiniz.
Örnek: Ana hesaplamaya uygulanmış dış set ifadesi
{<Year={2021}>} [Master Measure]
Toplama fonksiyonlarının dışında kullanılan bir set ifadesi, ayraç içine alınmazsa tüm ifadeyi etkiler; alınırsa ayraçlar kapsamı tanımlar. Aşağıdaki sözcüksel kapsamlandırma örneğinde set ifadesi yalnızca ayraçlar içindeki toplamaya uygulanır.
Örnek: Sözcüksel kapsamlandırma
( {<Year={2021}>} Sum(Amount) / Count(distinct Customer) ) – Avg(CustomerSales)
Kurallar
Sözcüksel kapsam
Set ifadesi, ayraç içine alınmazsa tüm ifadeyi etkiler. Alınırsa, ayraçlar sözcüksel kapsamı tanımlar.
Konum
Set ifadesi sözcüksel kapsamın başına yerleştirilmelidir.
Bağlam
Bağlam, ifade ile ilgili olan seçimdir. Geleneksel olarak bağlam, her zaman geçerli seçimin varsayılan durumu olmuştur. Ancak nesne farklı bir duruma ayarlanırsa, bağlam geçerli seçimin alternatif durumudur.
Ayrıca bir dış set ifadesi biçiminde de bir bağlam tanımlayabilirsiniz.
Devralma
İç set ifadelerinin dış set ifadelerine göre önceliği vardır. İç küme ifadeleri bir küme tanımlayıcısı içeriyorsa bu, dış küme ifadesinde tanımlanan bağlamın yerini alır. Aksi takdirde, iç ve dış küme ifadelerinin her ikisi de değerlendirilir.
Örnek 1: Küme tanımlayıcılı iç küme ifadesi
Yukarıdaki ifadede, Count({1} distinct OrderNumber) iç küme ifadesi, {1} küme tanımlayıcısını içerir. Bu iç küme ifadesi değerlendirildiğinde {<Year={2023}>} dış küme ifadesinde tanımlanan kapsam uygulanmaz.
Örnek 2: Küme tanımlayıcısı olmayan iç küme ifadeleri
Yukarıdaki ifadede, Sum ({<Status={'Confirmed'}>} Sales_Stream1) ve Sum ({<UpdatedStatus={'Confirmed'}>} Sales_Stream2) iç küme ifadeleri, küme tanımlayıcısı içermez. Bu nedenle, dış küme ifadesi {<Year={2023}>} ve her iki iç küme ifadesinin tümü sonuç değerlendirilirken uygulanır.
Öğe seti ataması
Öğe seti ataması, iki seçimin birleştirilme şeklini belirler. Normal bir eşittir işareti kullanılırsa, iç set ifadesindeki seçimin önceliği vardır. Aksi halde örtük set işleci kullanılır.
{<Field={value}>} - bu iç seçim, “Field” içindeki tüm dış seçimlerin yerini alır.
{<Field+={value}>} - bu iç seçim, birleşim işleci kullanılarak “Field” içindeki dış seçimle birleştirilir.
{<Field*={value}>} - bu iç seçim, kesişim işleci kullanılarak “Field” içindeki dış seçimle birleştirilir.
Birden fazla adımda devralma
Devralma birden fazla adımda gerçekleşebilir. Örnekler:
Geçerli Seçim → Sum(Amount)
Toplama fonksiyonu, burada geçerli seçim olan bağlamı kullanır.
Geçerli Seçim → {<Set1>} Sum(Amount)
Set1 geçerli seçimi devralır ve sonuç toplama fonksiyonunun bağlamı olur.
Geçerli Seçim → {<Set1>} ({<Set2>} Sum(Amount))
Set2 Set1'i devralır; o ise geçerli seçimi devralır ve sonuç toplama fonksiyonunun bağlamı olur.
İç ve dış set ifadelerinin zincirleri için devralma
Karmaşık zincirlerde birden fazla küme ifadesi kullanıldığında, özellikle de bir dış küme ifadesini başka dış küme ifadeleri ve/veya bir iç küme ifadesi izlediğinde, devralma için göz önünde bulundurulması gereken ek hususlar vardır. Ayrıntılı bilgi için bkz. Çoklu dış ve iç küme ifadeleri zincirleri.
Aggr() fonksiyonu
Aggr() fonksiyonu, iki bağımsız toplaması olan iç içe bir toplama oluşturur. Aşağıdaki örnekte her Dim değeri için bir Count() hesaplanır ve ortaya çıkan dizi Sum() fonksiyonu kullanılarak toplanır.
Örnek:
Sum(Aggr(Count(X),Dim))
Count() iç toplama, Sum() ise dış toplamadır.
İç toplama dış toplamadan herhangi bir bağlam devralmaz.
İç toplama, bağlamı bir set ifadesi içeriyor olabilecek Aggr() fonksiyonundan devralır.
Gerek Aggr() fonksiyonu gerekse dış toplama fonksiyonu bağlamı bir dış set ifadesinden devralır.
Çoklu dış ve iç küme ifadeleri zincirleri
Birden fazla dış küme ifadesine sahip olmanın mümkün olduğunu unutmayın. Bu örnekte iki dış küme ifademiz ve bir iç ifademiz var:
Küme ifadeleri soldan sağa doğru uygulanacaktır. Bu, iki küme ifadesi çakışan kümeler kullanıyorsa en sağdaki ifadenin önceliğe sahip olacağı anlamına gelir.
Bu şekilde birbirine zincirlenen dış küme ifadelerinin sayısında bir sınır olmamasına rağmen, iç küme ifadelerinin sayısı bir ile sınırlıdır. Birden fazla iç küme ifadesinin yan yana olması herhangi bir hata oluşturmaz, ancak değerlendirildiğinde yalnızca en sağdaki kullanılır.
Küme ifadesi devralma
Bir toplama ifadesi, bir zincirin parçası olarak birden fazla küme ifadesi içerdiğinde, küme ifadeleri soldan sağa doğru tek tek değerlendirilir. Her küme ifadesinin sonucu, potansiyel olarak her boyut için bir tane olmak üzere bir küme grubudur. Kümeler, bir sonrakine aktarılmadan önce daha fazla değişiklik yapabilen bir sonraki küme ifadesine aktarılır.
Her bir küme ifadesi farklı boyutlar üzerinde çalıştığı sürece, aralarında herhangi bir çakışma olmayacak ve tüm kümeler zincirin sonuna kadar korunacaktır (ve toplama sırasında uygulanacaktır). Bu kuralın bazen bir küme ifadesindeki bir boyutun boş bir küme üretmesi durumunda geçerli olan bir istisnası vardır. Daha fazla bilgi için aşağıdakilere bakın:
Boş seçim kümeleri
Küme ifadesindeki bir boyut değerlendirildiğinde, kümenin hiçbir veri içermemesi mümkündür. Buna boş küme denir. Boş kümeler aşağıdaki gibi birçok senaryoda ortaya çıkabilir:
Hatalı ifade tanımı. Örneğin, {<OrderYear={‘2025’}>} küme ifadesiyle 2025 değerini aramaya çalışırken, ifade {<OrderYear={‘0025’}>} şeklinde yazılır.
Analiz sırasında, ifadede başvurulandan farklı bir boyutta bir seçim yapılır ve bu seçim, ayarlanan ifade boyutu için kullanılabilir veri olmamasıyla sonuçlanır. Örneğin, bir kullanıcı Region='Europe' için bir seçim yapar ve bir küme ifadesi {<ProductCategory={‘Shirts’}>} Sum (Sales) için filtreleme yapar. Avrupa'da hiç gömlek satılmıyorsa küme ifadesi boş bir küme içerir.
Boş küme, ifadede açıkça tanımlanmıştır. Bu yaygın veya kullanışlı değildir, ancak teknik olarak mümkündür. Örneğin: {<Year={}>}
Örtük seçim kümesi temizleme
Bir küme ifadesi uygulandıktan sonra elde edilen sonuç boyutlardan herhangi biri için boş küme ise (bkz. Boş seçim kümeleri) ve bundan sonra bir küme ifadesi daha uygulanacaksa o boyutun seçim kümesi, sonraki küme ifadesi uygulanmadan hemen önce temizlenir (dolu kümeye geri döner). Temizlenmiş bir seçim kümesi, tüm değerlerin dahil edildiği anlamına gelir. Ancak bu temizlemenin yalnızca boş kümenin üretildiği küme ifadesinden sonra uygulanan bir veya daha fazla ek dış küme ifadesi daha varsa gerçekleştiğini unutmayın.
İşte temizlenmiş bir seçim kümesinin ne zaman gerçekleşeceğine dair bir örnek:
{<Year={}>} {<Region={"Europe"}>} Sum( Sales )
Year={}, Year boyutu için boş küme oluşturacaktır. Bu, Year için seçim kümesinin, küme, Region={Europe} içeren bir sonraki küme ifadesine aktarıldığında temizlendiği anlamına gelir. Seçim temizlemenin yalnızca tek bir boyut için gerçekleştiğini unutmayın. Aynı küme ifadesi içindeki kümeler de dahil olmak üzere diğer boyutlardaki kümeler değiştirilmeden aktarılmaya devam edecektir.
İşte temizlenmiş bir seçim kümesine dair başka bir örnek:
{<Year={}, Product={"XI345"}>} {<Region={"Europe"}>} Sum(Sales)
Yukarıdaki örnekte aşağıdakiler gerçekleşir:
Seçim kümeleri Product={"XI345"} ve Region={"Europe"} uygulanır.
Year={} uygulanmaz. Bunun nedeni, {<Region={"Europe"}>} olan son küme ifadesi uygulandığında bu kümenin temizlenmesidir.
Bir küme ifadesi bileşenini son dış küme ifadesine taşımak, örtük temizlemenin gerçekleşmesini önleyecektir. Şu örneği ele alalım:
{<Product={"XI345"}>} {<Year={}, Region={"Europe"}>} Sum(Sales)
Burada, Year ifadesini zincirdeki son küme ifadesine taşıdık. Bu, örtük temizlemenin gerçekleşmesini önler ve Year boyutu için boş küme aslında Sum toplaması için kullanılır.
Her durumda, seçim kümeleri temizlendikçe istenmeyen davranışlar ortaya çıkabilir. Analiz deneyimini iyileştirmek ve küme ifadeleri zincirleri yazmayı kolaylaştırmak için boş küme koruma bayrağını kullanın. Daha fazla bilgi için bk. Boş küme koruma bayrağı (dış küme ifadeleri).
Boş küme koruma bayrağı (dış küme ifadeleri)
Dış küme ifadelerinin değerlendirme modelini basitleştirmek için & sembolünü (boş küme koruma bayrağı) kullanın. Örneğin:
{& <Year={}, Product={XI345}>} {<Region={Europe}>} Sum( Sales )
Bu örnekte Year={}, Year için boş bir seçim kümesi tanımlamaktadır. & sembolü olmadan {<Region={Europe}>} ifadesi, Year boş seçim kümesinin temizlenmesine neden olarak tüm verilerin toplama hesaplamasında kullanılmasına neden olur. & sembolü, toplamayı Year boş seçim kümesine uymaya zorlayarak daha anlaşılır bir çıktı elde edilmesini sağlar.
Boş küme koruma bayrağı hakkında tüm ayrıntılar için bkz. Boş küme koruma bayrağı.