DAX’a yeni başlayanlar genellikle hesaplanmış sütun (Calculated Column) kullanmayı tercih ederler ve bunun da makul sebepleri var. Hesaplanmış sütun mantığı Excel tablo formüllerine benzer, formül sonuçları satırlarda hemen görülebilir, kontrolü görece kolaydır ve bu aşamada DAX kolaydır diye düşünülür. Hesaplanmış sütun, aynı zamanda satır bağlamıyla da tanışma aşamasıdır.
İstediğiniz sonuçları elde edebilmek için ölçü kullanımına geçildiğinde ise farklı bir DAX ile karşılaşılır. Bu aşamada DAX’ın zor bir dil olduğunu anlamanız fazla zamanınızı almayacaktır. Hesaplanmış sütunlarda çalışan çoğu formül ölçülerde çalışmaz, tasarlanan sonuçlarla ölçüdeki sonuçlar farklı olabilir, hatalar, uyarılar vb.
Peki DAX’ta ölçü kullanımında nasıl bir mindset oluşmalı, DAX’ı nasıl algılamalıyız ya da nereden başlamalı? Bu geçişi daha yumuşak hale nasıl getiririz? Özellikle 3 konunun iyi anlaşılması, DAX’ın zihinde konumlandırılması açısından temel niteliğindedir. Bunlar:
- 1.Satır Bağlamı (Row Context)
- 2.Filtre Bağlamı (Filter Context)
- 3.Bağlam geçişi (Context Transition)
Satır Bağlamı ile başlayalım.
Row Context (Satır Bağlamı) nedir?
Satır bağlamı, hesaplamaların her satır için ayrı ayrı yapılmasıdır. Aşağıdaki tabloyu oluşturarak başlayalım. Yalnızca satış tutarını hesaplanmış sütun olarak ekleyelim
Satır Bağlamı Tablosu =
DATATABLE(
"İşlem Sırası", INTEGER,
"UnitPrice", INTEGER,
"SalesQuantity", INTEGER,
{
{1,3,7 },
{2,2,4 },
{3,6,8 },
{4,8,9 }
}
)
Satış tutarımızın formülü de şöyle olsun:
Satış Tutarı =
'Satır Bağlamı Tablosu'[UnitPrice] * 'Satır Bağlamı Tablosu'[SalesQuantity]
Eğer işlemi yavaşlatılmış şekilde görebilseydik, şunları gözlemlerdik:
- İşlem sırası 1. İlk önce formül birinci satıra uygulanır ve sonucu Satış Tutarı sütununa basılır. İşlem sırası 1 tamamlanır.
- İşlem sırası 2. Ardından formül ikinci satıra uygulanır ve sonucu ikinci satırdaki Satış Tutarı sütununa basılır. İşlem sırası 2 tamamlanır.
- İşlem sırası 3. Bu işlem, tablonun son satırına kadar aynı şekilde devam eder.
Buraya küçük ama önemli bir not düşelim. İlk örnekte hesaplanmış sütun olarak belirtmemizin sebebi konuyu görselleştirmeye yardımcı olması. Hesaplanmış sütun eklemek, veri modelinin büyümesine ve verimliliğinin düşmesine neden olduğu için, bu tür hesaplamalarda ölçü kullanırız.
SUMX fonksiyonu kullanarak bir ölçü oluşturalım ve SUMX fonksiyonu hesaplanırken de, hesaplanmış sütunda olduğu gibi, satır satır hesaplama yapılacağını unutmayalım.
Aşağıdaki örnek Contoso örnek PBI dosyasında oluşturulmuştur, buradan indirebilirsiniz.
Satış Döviz Tutarı =
SUMX(
Sales, //Sales tablosuna referans veriyoruz
Sales[SalesQuantity] * Sales[UnitPrice] //referans tabloda satır satır hesaplama yapılmasını istediğimiz formülü yazıyoruz
)
DAX’ta satır bağlamına giriş yaptığımız yazımızın sonuna geldik. Bağlamları anlamak, DAX’ın nasıl çalıştığını anlamak için en önemli temeli oluşturur. Satır bağlamı iki değerlendirme bağlamından ilkiydi. İkincisi olan filtre bağlamına buradan ulaşabilirsiniz:
DAX’ta Bağlamlara Giriş 2: Filter Context (Sütun Bağlamı) nedir