Bağlam, formül sonuçlarının geçerli satır veya hücre seçimini ve ayrıca ilgili verileri yansıtacak şekilde değişebildiği dinamik çözümlemeler gerçekleştirmenizi sağlar. Bağlamı anlamak ve bağlamı etkili bir şekilde kullanmak, yüksek performanslı formüller, dinamik analizler oluşturmak ve formüllerdeki sorunları gidermek için çok önemlidir.
Bu bölümde farklı bağlam türleri tanımlanmıştır: 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ği açıklanır.
Bu makalenin son kısmında, formül sonuçlarının bağlama göre nasıl değiştiğini gösteren ayrıntılı örneklere bağlantılar sağlanır.
Bağlamı anlama
Power Pivot'taki formüller PivotTable'a uygulanan filtrelerden, tablolar arasındaki ilişkilerden ve formüllerde kullanılan filtrelerden etkilenebilir. Bağlam, dinamik analiz yapmayı mümkün kılan şeydir. Bağlamı anlamak, formül oluşturmak ve sorun gidermek 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ış sütun oluşturduysanız, satır bağlamı tek tek her satırdaki değerlerden ve geçerli satırla ilişkili sütunlardaki değerlerden oluşur. Geçerli satırdan bir değer alan ve daha sonra tüm tablo üzerinde bir işlem gerçekleştirirken bu değeri kullanan bazı işlevler de (EARLIER ve EARLYST) vardır.
Sorgu bağlamı, satır ve sütun üst bilgilerine 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 uygulanmış olan 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ı
Hesaplanan sütunda formül oluşturursanız, bu formülün satır bağlamı geçerli satırdaki tüm sütunlarda yer alan değerleri içerir. Tablo başka bir tabloyla ilişkiliyse, içerik diğer tablodaki geçerli satırla ilişkili tüm değerleri de içerir.
Örneğin, aynı tablodaki iki sütunu toplayan =[Navlun] + [Vergi] şeklinde hesaplanmış bir sütun oluşturduğunuzu varsayalım. Bu formül, aynı satırdaki değerlere otomatik olarak başvuruda bulunan Excel tablosundaki formüller gibi davranır. Tabloların aralıklardan farklı olduğunu unutmayın: Aralık gösterimini kullanarak geçerli satırdan önceki satırdaki bir değere başvuramazsınız ve bir tablo veya hücrede rastgele tek bir değere başvuramazsınız. Her zaman tablolar ve sütunlarla çalışmalısınız.
Satır bağlamı, ilişkili tablolardaki hangi satırların geçerli satırla ilişkilendirildiğini belirlemek için tablolar arasındaki ilişkileri otomatik olarak izler.
Örneğin, aşağıdaki formülde siparişin sevk edildiği bölge temelinde, ilişkili bir tablodan vergi değeri getirmek için RELATED işlevi kullanılmıştır. Vergi değeri, geçerli tablodaki bölge değeri kullanılarak, ilgili tabloda bölge aranarak ve ilgili tablodan o bölgenin vergi oranı alınarak belirlenir.
= [Navlun] + RELATED('Bölge'[VergiFiyatı])
Bu formül basitçe, Bölge tablosundan geçerli bölgenin vergi oranını alır. Tabloları bağlayan anahtarı bilmeniz veya belirtmeniz gerekmez.
Birden Çok Satır Bağlamı
Buna ek olarak, DAX bir tablo üzerinde hesaplamaları 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 özyineleme yapan formüller oluşturabilirsiniz.
Örneğin, çalışma kitabınızın bir Ürünler tablosu ve bir de Satışlar tablosu içerdiğini varsayalım. Birden çok ürünün yer aldığı işlemlerle dolu satış tablosunun tamamını 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 için bir dizi ara özet gerekir ve veriler değiştiğinde bunların yeniden oluşturulması gerekir. İleri düzey bir Excel kullanıcısıysanız, işinizi görecek dizi formülleri oluşturabilirsiniz. Alternatif olarak, ilişkisel bir veritabanında iç içe alt seçmeler yazabilirsiniz.
Ancak DAX ile doğru değeri döndüren tek bir formül oluşturabilirsiniz ve tablolara her veri eklediğinizde sonuçlar otomatik olarak güncelleştirilir.
=MAXX(FİLTRELE(Satış,[ProdKey]=BEFORE([ProdKey])),Satış[SiparişMiktarı])
Bu formülün ayrıntılı kılavuzu için EARLIER İşlevine bakın.
Kısaca, EARLIER işlevi, geçerli işlemden önce gelen işlemin satır bağlamını depolar. İşlev, bellekte her zaman iki bağlam kümesi depolar: bir bağlam kümesi formülün iç döngüsünün geçerli satırını ve diğer bağlam kümesi de formülün dış döngüsünün geçerli satırını temsil eder. DAX, karmaşık toplamalar oluşturabilmeniz için değerleri iki döngü arasında otomatik olarak besler.
Sorgu Bağlamı
Sorgu bağlamı, bir formül için örtük olarak alınan verilerin alt kümesine karşılık gelir. PivotTable'daki bir hücreye ölçü veya başka bir değer alanı bıraktığınızda, Power Pivot altyapısı 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ücrenin sorgu bağlamıdır.
Formülü nereye yerleştirdiğinize bağlı olarak bağlam değişebileceğinden, formülü birçok gruplandırma ve filtre içeren bir PivotTable'da mı yoksa filtre içermeyen ve en az bağlam içeren hesaplanmış bir sütunda mı kullandığınıza bağlı olarak formülün sonuçları da değişir.
Örneğin, Satış tablosunun Kar sütunundaki değerlerin toplamını alan şu basit formülü oluşturduğunuzu varsayalım:
=TOPLA('Satış'[Kar])
Bu formülü Satış tablosundaki bir hesaplanmış sütunda kullanırsanız, formülün sonuçları tablonun tamamında aynı olur, çünkü formülün sorgu bağlamı her zaman Satış tablosunun tüm veri kümesi olur. Sonuçlarınız tüm bölgeler, tüm ürünler, tüm yıllar vb. için kar içerecektir.
Ancak, normalde aynı sonucu yüzlerce kez görmek istemezsiniz, bunun yerine belirli bir yılın, belirli bir ülke veya bölgenin, belirli bir ürünün veya bunların bir bileşiminin kârını elde etmek ve ardından bir genel toplam elde etmek istersiniz.
PivotTable'da sütun ve satır başlıkları ekleyip kaldırarak ve Dilimleyicileri 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 hesaplandığı 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ı
Formülde bağımsız değişkenler kullanarak bir sütun 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 her hücre için değerlerini, sorgu bağlamıyla ilgili önceki bölümde açıklandığı gibi satır ve sütun başlıklarına göre hesaplar. Bununla birlikte, PivotTable'a eklediğiniz ölçülerin veya hesaplanan sütunların içinde, formül tarafından kullanılan değerleri denetlemek için filtre ifadeleri belirtebilirsiniz. Ayrıca belirli sütunlardaki filtreleri seçerek de temizleyebilirsiniz.
Formüllerde filtre oluşturma hakkında daha fazla bilgi için Filtre işlevlerine bakın.
Genel toplamlar oluşturmak üzere filtrelerin nasıl temizlenebileceğine ilişkin bir örnek için ALL İşlevine bakın.
Formüllerin içinde filtrelerin seçime bağlı olarak nasıl temizleneceği ve uygulanacağı ile ilgili örnekler için ALLEXCEPT İşlevine bakın.
Bu nedenle, formüllerin sonuçlarını yorumlarken filtre bağlamını göz önünde bulundurabilmek için, PivotTable'da kullanılan ölçülerin veya formüllerin tanımını gözden geçirmelisiniz.
Formüllerde bağlamı belirleme
Formül oluşturduğunuzda, Excel için Power Pivot önce genel söz dizimini denetler ve ardından sağladığınız sütun ve tabloların adlarını geçerli bağlamdaki olası sütun 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 kullanılabilir tablolar, tablolar arasındaki ilişkiler ve uygulanmış olan filtreler kullanılarak belirlenir.
Örneğin, az önce bazı verileri yeni bir tabloya aktardıysanız ve hiçbir filtre uygulamadıysanız, tablodaki sütun kümesinin tamamı geçerli bağlamın bir parçası olur. İlişkilerle bağlanan birden çok tablonuz varsa ve sütun başlıkları eklenerek ve Dilimleyiciler kullanılarak filtrelenmiş bir PivotTable'da çalışıyorsanız, bağlam ilişkili tabloları ve verilerdeki tüm filtreleri içerir.
Bağlam, formüllerdeki sorunları gidermeyi 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üllerle denemeler yapmanızı öneririz. Aşağıdaki bölümde ayrıca, formüllerin sonuçları dinamik olarak döndürmek için farklı bağlam türlerini nasıl kullandığına ilişkin bazı örnekler verilmiştir.
Formüllerdeki bağlam örnekleri
- RELATED işlevi, geçerli satırın bağlamını, değerleri ilgili sütuna içerecek şekilde genişletir. Bu işlem, arama yapmanızı sağlar. Bu konu başlığı altındaki örnekte, filtre ve satır bağlamının etkileşimi gösterilir.
- FİLTRE işlevi, geçerli bağlama eklenecek satırları belirtmenize olanak tanır. Bu konu başlığı altındaki örneklerde, toplama yapan diğer işlevlerin içine filtrelerin nasıl ekleneceği de gösterilir.
- ALL işlevi formülün bağlamını ayarlar. Sorgu bağlamı sonucunda uygulanan filtreleri geçersiz kılmak için bunu kullanabilirsiniz.
- ALLEXCEPT işlevi, belirttiğiniz filtre dışında tüm filtreleri kaldırmanıza izin verir. Her iki konu başlığı altında da formül oluşturma ve karmaşık bağlamları anlamada size yol gösteren örnekler verilmiştir.
- EARLIER ve EARLIEST işlevleri, iç döngüdeki bir değere başvururken hesaplamalar yaparak tablolar arasında döngü yapmanıza olanak tanır. Özyineleme kavramına, 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ı dikkatle izlemelisiniz.
Bilgi Tutarlılığı
Bu bölümde, ilişkilerle birbirine bağlanan Power Pivot tablolarındaki eksik değerlerle ilgili bazı ileri düzey 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.
İlişkisel veri kavramlarıyla yeni tanışıyorsanız, önce Giriş niteliğinde olan İlişkilere Genel Bakış konusunu okumanızı öneririz.
Bilgi tutarlılığı ve Power Pivot ilişkileri
Power Pivot, geçerli bir ilişki tanımlamak için, iki tablo arasında bilgi tutarlılığının zorunlu kılınmasını gerektirmez. Bunun yerine, her bire çok ilişkinin "bir" ucunda boş bir satır oluşturulur ve ilişkili tablodaki eşleşmeyen tüm satırları işlemek için kullanılır. Etkili bir şekilde SQL dış birleşimi gibi davranır.
PivotTable'larda verileri ilişkinin bir tarafına göre gruplandırırsanız çok tarafındaki eşleşmeyen veriler birlikte gruplandırılır ve boş bir satır başlığıyla toplamlara eklenir. 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ına büyük olasılıkla tanıdık geliyordur. Terim sizin için yeniyse, aşağıdaki örnekte bilinmeyen üyenin ne olduğu ve hesaplamaları nasıl etkilediği açıklanır.
Her mağazanın aylık satışlarının toplamını hesaplayan 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 düşünülürse, formülde ne olmasını beklersiniz? PivotTable, var olan bir mağazayla ilgili olmayan satış rakamlarını nasıl gruplandırmalı veya görüntülemelidir?
Bu sorun, olgu verilerinin büyük tablolarının, olguları kategorilere ayırmak ve hesaplamak için kullanılan depolar, bölgeler ve 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, varolan varlıkla ilgili olmayan tüm yeni olgular geçici olarak bilinmeyen üyeye atanır. Bu nedenle ilgisiz olgular PivotTable'da boş bir başlık altında gruplandırılmış olarak gösterilir.
Boş Değerleri ve Boş Satırı İşleme
Boş değerler, bilinmeyen üyeye yer vermek için eklenen boş satırlardan farklıdır. Boş değer, nullları, boş dizeleri ve diğer eksik değerleri göstermek için kullanılan özel bir değerdir. Boş değer ve diğer DAX veri türleri hakkında daha fazla bilgi için bkz: Veri Modellerindeki veri türleri.