Blog
DAX Formüllerinde Bağlam (Context)
- 25 Mart 2022
- Yayınlayan: svahabi
- Kategori: Blog Yazıları
Bağlam, bir formülün sonuçlarının geçerli satır veya hücre seçimini ve ayrıca ilgili verileri yansıtacak şekilde değişebileceği dinamik analiz gerçekleştirmenizi sağlar. Bağlamı anlamak ve bağlamı etkili bir şekilde kullanmak, yüksek performanslı formüller oluşturmak, dinamik analizler yapmak ve formüllerdeki sorunları gidermek için çok önemlidir.
Bu makale de farklı bağlam türlerini tanımlayacağız: satır bağlamı, sorgu bağlamı ve filtre bağlamı. Hesaplanan sütunlardaki ve PivotTable’lardaki formüller için bağlamın nasıl değerlendirildiğini açıklamaya çalışacağız.
Bu makalenin son kısmı, formüllerin sonuçlarının bağlama göre nasıl değiştiğini gösteren ayrıntılı örneklere bağlantılar sağlıyor.
Bağlamı Anlamak
Power Pivot’taki formüller, PivotTable’da uygulanan filtrelerden, tablolar arasındaki ilişkilerden ve formüllerde kullanılan filtrelerden etkilenebilir. Bağlam, dinamik analiz gerçekleştirmeyi mümkün kılan şeydir. Bağlamı anlamak, formüller oluşturmak ve sorun giderme için önemlidir.
Farklı bağlam türleri vardır: satır bağlamı, sorgu bağlamı ve filtre bağlamı.
Satır bağlamı “geçerli satır” olarak düşünülebilir. Hesaplanmış bir sütun oluşturduysanız, satır bağlamı, her bir satırdaki değerlerden ve geçerli satırla ilgili sütunlardaki değerlerden oluşur. Ayrıca, tüm tablo üzerinde bir işlem gerçekleştirirken geçerli satırdan bir değer alan ve daha sonra bu değeri kullanırken bu değeri kullanan bazı işlevler vardır (EARLIER, EARLIEST).
Sorgu bağlamı, satır ve sütun başlıklarına bağlı olarak PivotTable’daki her hücre için örtük olarak oluşturulan veri alt kümesini ifade eder.
Filtre bağlamı, satıra uygulanan veya formül içindeki filtre ifadeleri tarafından tanımlanan filtre kısıtlamalarına dayalı olarak her sütunda izin verilen değerler kümesidir.
Satır Bağlamı
Hesaplanmış bir sütunda formül oluşturursanız, o formülün satır bağlamı, geçerli satırdaki tüm sütunlardaki değerleri içerir. Tablo başka bir tabloyla ilişkiliyse içerik, o diğer tablodaki geçerli satırla ilgili tüm değerleri de içerir.
Örneğin, hesaplanmış bir sütun oluşturduğunuzu varsayalım, =[Navlun] + [Vergi],bu aynı tablodan iki sütunu bir araya getirir. Bu formül, aynı satırdaki değerlere otomatik olarak başvuran bir Excel tablosundaki formüller gibi davranır. Tabloların aralıklardan farklı olduğuna dikkat edin: aralık gösterimini kullanarak geçerli satırdan önceki satırdan bir değere başvuramazsınız ve bir tablo veya hücrede herhangi bir rastgele tek değere başvuramazsınız. Her zaman tablolar ve sütunlarla çalışmalısınız.
Satır bağlamı, ilgili tablolardaki hangi satırların geçerli satırla ilişkili olduğunu belirlemek için tablolar arasındaki ilişkileri otomatik olarak takip eder.
Örneğin, aşağıdaki formül, siparişin gönderildiği bölgeye bağlı olarak ilgili bir tablodan vergi değeri almak için RELATED işlevini kullanır. Geçerli tablodaki bölge değeri kullanılarak, ilgili tabloda bölge aranarak ve ilgili tablodan o bölge için vergi oranı alınarak vergi değeri belirlenir.
= [Nakliye] + RELATED('Bölge'[Vergi Oranı])
Bu formül, Bölge tablosundan geçerli bölge için vergi oranını alır. Tabloları birbirine bağlayan anahtarı bilmeniz veya belirtmeniz gerekmez.
Çoklu Satır Bağlamı
Ayrıca DAX, hesaplamaları bir tablo üzerinde yineleyen işlevler içerir. Bu işlevlerin birden çok geçerli satırı ve geçerli satır bağlamı olabilir. Programlama terimleriyle, bir iç ve dış döngü üzerinde yinelenen formüller oluşturabilirsiniz.
Örneğin, çalışma kitabınızın bir Ürünler tablosu ve bir Satış tablosu içerdiğini varsayalım. Birden fazla ürün içeren işlemlerle dolu tüm satış tablosunu gözden geçirmek ve herhangi bir işlemde her ürün için sipariş edilen en büyük miktarı bulmak isteyebilirsiniz.
Excel’de bu hesaplama, veriler değiştiğinde yeniden oluşturulması gereken bir dizi ara özet gerektirir. Excel’in ileri düzey bir kullanıcısıysanız, işi yapacak dizi formülleri oluşturabilirsiniz. Alternatif olarak, ilişkisel bir veritabanında iç içe alt seçimler yazabilirsiniz.
Ancak DAX ile doğru değeri döndüren tek bir formül oluşturabilirsiniz ve tablolara veri eklediğinizde sonuçlar otomatik olarak güncellenir.
=MAXX(FILTER(Satış,[ÜrünAnahtarı]=EARLIER([ÜrünAnahtarı])),Satış[SiparişAdedi])
Kısacası, EARLIER işlevi, geçerli işlemden önceki işlemden satır bağlamını saklar. Her zaman, işlev bellekte iki bağlam kümesi depolar: bir bağlam kümesi, formülün iç döngüsü için geçerli satırı temsil eder ve başka bir bağlam kümesi, formülün dış döngüsü için geçerli satırı temsil eder. DAX, karmaşık toplamalar oluşturabilmeniz için iki döngü arasındaki değerleri otomatik olarak besler.
Sorgu Bağlamı
Sorgu bağlamı, bir formül için örtük olarak alınan verilerin alt kümesini ifade eder. PivotTable’daki bir hücreye bir hesaplama veya başka bir değer alanı bıraktığınızda, Power Pivot Engine bağlamı belirlemek için satır ve sütun başlıklarını, Dilimleyicileri ve rapor filtrelerini inceler. Ardından Power Pivot, PivotTable’daki her hücreyi doldurmak için gerekli hesaplamaları yapar. Alınan veri kümesi, her hücre için sorgu bağlamıdır.
Bağlam, formülü nereye yerleştirdiğinize bağlı olarak değişebileceğinden, formülün sonuçları, formülü çok sayıda gruplama ve filtre içeren bir PivotTable’da mı yoksa filtresiz ve minimum bağlam içeren hesaplanmış bir sütunda mı kullandığınıza bağlı olarak değişir.
Örneğin, Satış tablosunun Kar sütunundaki değerleri toplayan bu basit formülü oluşturduğunuzu varsayalım:
=SUM('Satış'[Kar])
Bu formülü Satış tablosundaki hesaplanmış bir sütunda kullanırsanız, formülün sorgu bağlamı her zaman Satış tablosunun tüm veri kümesi olduğundan, formülün sonuçları tüm tablo için aynı olur. Sonuçlarınız tüm bölgeler, tüm ürünler, tüm yıllar vb.
Bununla birlikte, genellikle aynı sonucu yüzlerce kez görmek istemezsiniz, bunun yerine belirli bir yıl, belirli bir ülke veya bölge, belirli bir ürün veya bunların bir kombinasyonu için kâr elde etmek ve ardından bir sonuç elde etmek istersiniz.
Bir PivotTable’da, sütun ve satır üstbilgileri ekleyerek veya kaldırarak ve Dilimleyiciler ekleyerek veya kaldırarak bağlamı değiştirmek kolaydır. Bir ölçüde yukarıdaki gibi bir formül oluşturabilir ve ardından bunu bir PivotTable’a bırakabilirsiniz. PivotTable’a sütun veya satır başlıkları eklediğinizde, ölçünün değerlendirildiği sorgu bağlamını değiştirirsiniz. Dilimleme ve filtreleme işlemleri de bağlamı etkiler. Bu nedenle, PivotTable’da kullanılan aynı formül, her hücre için farklı bir sorgu bağlamında değerlendirilir.
Filtre Bağlamı
Bir formüle bağımsız değişkenler kullanarak bir sütunda veya tabloda izin verilen değerler kümesinde filtre kısıtlamaları belirttiğinizde filtre bağlamı eklenir. Filtre bağlamı, satır bağlamı veya sorgu bağlamı gibi diğer bağlamların üzerine uygulanır.
Örneğin, bir PivotTable, sorgu bağlamıyla ilgili önceki bölümde açıklandığı gibi, satır ve sütun başlıklarına dayalı olarak her hücre için değerlerini hesaplar. Ancak, PivotTable’a eklediğiniz ölçüler veya hesaplanmış sütunlar içinde, formül tarafından kullanılan değerleri kontrol etmek için filtre ifadeleri belirtebilirsiniz. Ayrıca belirli sütunlardaki filtreleri seçerek temizleyebilirsiniz.
Formüllerde Bağlam Belirleme
Bir formül oluşturduğunuzda, Excel için Power Pivot önce genel sözdizimini denetler ve ardından sağladığınız sütun ve tabloların adlarını geçerli bağlamdaki olası sütunlar ve tablolarla karşılaştırır. Power Pivot, formül tarafından belirtilen sütunları ve tabloları bulamazsa bir hata alırsınız.
Bağlam, önceki bölümlerde açıklandığı gibi, çalışma kitabındaki mevcut tablolar, tablolar arasındaki ilişkiler ve uygulanan filtreler kullanılarak belirlenir.
Örneğin, bazı verileri yeni bir tabloya aktardıysanız ve herhangi bir filtre uygulamadıysanız, tablodaki tüm sütun kümesi geçerli bağlamın bir parçasıdır. İlişkilere göre bağlanmış birden çok tablonuz varsa ve sütun başlıkları ekleyerek ve Dilimleyiciler kullanılarak filtrelenmiş bir PivotTable’da çalışıyorsanız, bağlam, ilgili tabloları ve verilerdeki tüm filtreleri içerir.
Bağlam, formüllerde sorun gidermeyi de zorlaştırabilen güçlü bir kavramdır. Bağlamın nasıl çalıştığını görmek için basit formüller ve ilişkilerle başlamanızı ve ardından PivotTable’larda basit formülleri denemeye başlamanızı öneririz. Aşağıdaki bölüm, formüllerin sonuçları dinamik olarak döndürmek için farklı bağlam türlerini nasıl kullandığına ilişkin bazı örnekler de sağlar.
Formüllerde Bağlam Örnekleri
RELATED işlevi, ilgili sütundaki değerleri dahil etmek için geçerli satırın bağlamını genişletir. Bu, aramalar yapmanızı sağlar. Bu konudaki örnek, filtreleme ve satır bağlamının etkileşimini gösterir.
FILTER işlevi, geçerli bağlama dahil edilecek satırları belirtmenize olanak tanır. Bu konudaki örnekler, toplama gerçekleştiren diğer işlevlerin içine filtrelerin nasıl yerleştirileceğini de gösterir.
ALL işlevi, bir formül içindeki bağlamı ayarlar. Sorgu bağlamının sonucu olarak uygulanan filtreleri geçersiz kılmak için kullanabilirsiniz.
ALLEXCEPT işlevi, belirttiğiniz biri dışında tüm filtreleri kaldırmanıza izin verir. Her iki konu da formüller oluşturmada ve karmaşık bağlamları anlamada size yol gösteren örnekler içerir.
EARLIER ve EARLIEST işlevleri, bir iç döngüden bir değere başvururken hesaplamalar yaparak tablolar arasında döngü oluşturmanıza olanak tanır. Özyineleme kavramına ve iç ve dış döngülere aşinaysanız, EARLIER ve EARLIEST işlevlerinin sağladığı gücü takdir edeceksiniz. Bu kavramlarda yeniyseniz, hesaplamalarda iç ve dış bağlamların nasıl kullanıldığını görmek için örnekteki adımları dikkatlice izlemelisiniz.
Bilgi Tutarlılığı
Bu bölümde, Power Pivot tablolarındaki ilişkilerle birbirine bağlanan eksik değerlerle ilgili bazı gelişmiş kavramlar ele alınmaktadır. Birden çok tablo ve karmaşık formüller içeren çalışma kitaplarınız varsa ve sonuçları anlamak için yardım istiyorsanız bu bölüm sizin için yararlı olabilir.
Referans Bütünlüğü ve Power Pivot İlişkileri
Power Pivot, geçerli bir ilişki tanımlamak için iki tablo arasında bilgi bütünlüğünün uygulanmasını gerektirmez. Bunun yerine, her bir-çok ilişkisinin “bir” ucunda boş bir satır oluşturulur ve ilgili tablodaki eşleşmeyen tüm satırları işlemek için kullanılır. Etkili bir SQL dış birleştirme gibi davranır.
PivotTable’larda, verileri ilişkinin bir tarafına göre gruplandırırsanız, ilişkinin birçok tarafındaki eşleşmeyen veriler birlikte gruplanır ve boş satır başlığıyla toplamlara dahil edilir. Boş başlık, kabaca “bilinmeyen üye” ile eşdeğerdir.
Bilinmeyen Üyeyi Anlamak
SQL Server Analysis Services gibi çok boyutlu veritabanı sistemleriyle çalıştıysanız, bilinmeyen üye kavramı muhtemelen size tanıdık gelecektir. Terim sizin için yeniyse, aşağıdaki örnek bilinmeyen üyenin ne olduğunu ve hesaplamaları nasıl etkilediğini açıklar.
Her mağaza için aylık satışları toplayan bir hesaplama oluşturduğunuzu, ancak Satış tablosundaki bir sütunda mağaza adı için bir değerin eksik olduğunu varsayalım. Mağaza ve Satış tablolarının mağaza adıyla bağlantılı olduğu göz önüne alındığında, formülde ne olmasını beklersiniz? PivotTable, mevcut bir mağazayla ilgili olmayan satış rakamlarını nasıl gruplandırmalı veya göstermelidir?
Bu sorun, büyük olgu verilerinin mağazalar, bölgeler ve olguları sınıflandırmak ve hesaplamak için kullanılan diğer öznitelikler hakkında bilgi içeren boyut tablolarıyla mantıksal olarak ilişkili olması gereken veri ambarlarında yaygın bir sorundur. Sorunu çözmek için, mevcut bir varlıkla ilgisi olmayan tüm yeni olgular geçici olarak bilinmeyen üyeye atanır. Bu nedenle, ilgisiz gerçekler bir PivotTable’da boş bir başlık altında gruplandırılmış olarak görünecektir.
Boş Değerlerin Boş Satıra Karşı Davranışı
Boş değerler, bilinmeyen üyeyi yerleştirmek için eklenen boş satırlardan farklıdır. Boş değer, boş değerleri, boş dizeleri ve diğer eksik değerleri temsil etmek için kullanılan özel bir değerdir.
Microsoft Power BI Desktop için İleri Seviye DAX eğitimi için tıklayınız…
Güncel eğitim takvimi için tıklayınız…