Aracılığıyla paylaş


DAX Formüllerinde Bağlam

Bağlam, bir formülün geçerli satır ve hücre seçimindeki ve varsa ilişkili verilerdeki değişikliği yansıtabildiği dinamik çözümleme yapmanızı sağlar. Yüksek performanslı, dinamik çözümlemeler yapmak ve formüllerdeki sorunları gidermek için bağlamı anlamak ve etkili bir şekilde kullanmak kritik önem taşır.

Bu bölümde, farklı bağlam türleri tanımlanır: satır bağlamı, sorgu bağlamı ve filtre bağlamı. Hesaplanmış sütunlardaki ve PivotTable'lardaki formüllerde bağlamın nasıl değerlendirildiği açıklanır.

Bu bölümün son kısmında formüllerin sonuçlarının bağlama göre nasıl değiştiğini gösteren ayrıntılı örneklere yönelik bağlantılar sağlanır.

Bağlama Giriş

PowerPivot uygulamasında formüller PivotTable'a uygulanan filtrelerden, tablolar arasındaki ilişkilerden ve formüllerde kullanılan filtrelerden etkilenebilir. Dinamik analiz geliştirmeyi mümkün kılan şey bağlamdır. Formül oluşturma ve sorun giderme için bağlamın anlaşılması ö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 ilişkili sütunlardaki değerlerden oluşur. Geçerli satırdan bir değer alan ve sonra bu değeri tablonun tamamında bir işlem gerçekleştirirken bu değeri kullanan işlevler de (EARLIER and EARLIEST) vardır.

Sorgu bağlamı, satır ve sütun üstbilgilerine bağlı olarak PivotTable'daki her hücre için otomatik olarak oluşturulan veri alt kümesini ifade eder.

Filtre bağlamı, her sütunda satıra uygulanan filtre kısıtlamalarını temel alan veya formül içindeki filtre ifadeleri tarafından tanımlanan bir değer kümesidir.

Aşağıdaki konuda farklı bağlam türleri daha ayrıntılı olarak anlatılmıştır: DAX Formüllerinde Bağlam.

Başa Dön

Satır Bağlamı

Hesaplanmış bir sütunda formül oluşturursanız, bu formülün satır bağlamı geçerli satırdaki tüm sütunlarda bulunan değerleri içerir. Tablo başka bir tabloyla ilişkiliyse, içerik diğer tabloda bulunan ve geçerli satırla ilişkili tüm değerleri de içerir.

Örneğin, aynı tablonun iki sütununu birbiriyle toplayan =[Freight] + [Tax] hesaplanmış sütununu oluşturduğunuzu varsayalım. Bu formül, otomatik olarak aynı satırdaki değerlere başvuran Excel tablosu formülleriyle aynı davranışı gösterir. Tabloların aralıklardan farklı olduğuna dikkat edin: aralık gösterimini kullanarak geçerli satırdan önceki satırda bulunan bir değere başvuruda bulunamazsınız ve bir tablodaki veya hücredeki rastgele tek bir değere başvuruda bulunamazsınız. Her zaman tablolarla ve sütunlarla çalışmanız gerekir.

Satır bağlamı, ilişkili tablolardaki hangi satırların geçerli satırla ilişkili olduğunu belirlemek için tablolar arasındaki ilişkileri izler.

Örneğin, aşağıdaki formül siparişin gönderileceği bölgeye bağlı olarak ilişkili tablodan vergi değerini getirmek için RELATED işlevini kullanır. Vergi değeri geçerli tablodaki bölge değeri kullanılarak, ilişkili tabloda bölge aranarak ve sonra ilişkili tablodan söz konusu bölgeye ait vergi oranı alınarak belirlenir.

= [Freight] + RELATED('Region'[TaxRate])

Bu formül basit bir şekilde Region tablosundan geçerli bölgenin veri oranını alır. Tabloları birbirine bağlayan anahtarı bilmeniz veya belirtmeniz gerekmez.

Birden Çok Satır Bağlamı

Ek olarak, DAX'ta tablo üzerinde hesaplamaları yineleyen işlevler vardır. Bu işlevlerin birden çok geçerli sütun ve geçerli satır bağlamı olabilir. Programlama ifadesiyle, bir iç ve dış döngü üzerinde özyineleme yapan formüller oluşturabilirsiniz.

Örneğin, çalışma kitabınızda bir Products tablosu ve bir de Sales tablosu olduğunu varsayalım. Birden fazla ürünü ilgilendiren işlemlerle dolu olan satış tablosunun tamamını işlemek ve herhangi bir işlemde bir ü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. Uzman bir Excel kullanıcısıysanız, işi gerçekleştirecek dizi formülleri oluşturabilirsiniz. Alternatif olarak, ilişkisel bir veritabanında iç içe alt seçimler yazabilirsiniz.

Buna karşılık 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üncelleştirilir.

=MAXX(FILTER(Sales,[ProdKey]=EARLIER([ProdKey])),Sales[OrderQty])

Bu formül hakkında ayrıntılı adım adım bir kılavuz için, bkz. EARLIER İşlevi.

Kısa ifadesiyle, EARLIER işlevi geçerli işlemden önceki işlemin satır bağlamını saklar. İşlev sürekli olarak bellekte iki bağlam kümesi saklar: 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 iki döngü arasında değerleri otomatik olarak besler, böylece karmaşık toplamalar oluşturabilirsiniz.

Sorgu Bağlamı

Sorgu bağlamı, formül için örtülü olarak alınan veri alt kümesi demektir. PivotTable'daki bir hücreye bir ölçü veya başka bir değer alanı bıraktığınızda, PowerPivot altyapısı bağlamı belirlemek için satır ve sütun üstbilgilerini, Dilimleyicileri ve rapor filtrelerini inceler. Ardından, PowerPivot, PivotTable'daki her hücreyi doldurmak için gerekli hesaplamaları yapar. Getirilen veri kümesi her hücre için sorgu bağlamıdır.

Formülü nereye yerleştirdiğinize bağlı olarak bağlam değişebildiğinden, formülü birçok gruplandırma ve filtre içeren bir PivotTable'da ya da hiçbir filtre içermeyen ve çok az bağlama sahip bir hesaplanmış sütunda kullanmanıza bağlı olarak da formülün sonuçları değişir.

Örneğin, Sales tablosunun Profit sütunundaki değerleri toplayan şu basit formülü oluşturduğunuzu varsayalım: =SUM('Sales'[Profit]) Bu formülü Sales tablosundaki bir hesaplanmış sütunda kullanırsanız, formülün sonuçları tablonun tamamı için aynı olacaktır, çünkü formülün sorgu bağlamı her zaman Sales tablosunun veri kümesinin tamamıdır. Sonuçlarınızda tüm bölgeler, tüm ürünler, tüm yıllar vb. ile ilgili karlar olacaktır.

Ancak normalde aynı sonucu yüzlerce kez görmek istemezsiniz, bunun yerine belirli bir yık, belirli bir ülke, belirli bir ürün veya bunların birleşimi ile ilgili karı ve sonra genel toplamı almak istersiniz.

PivotTable'da, sütun ve satır üstbilgileri ekleyerek veya kaldırarak ve Dilimleyiciler ekleyerek veya kaldırarak bağlamı kolayca değiştirebilirsiniz. Bir ölçüde yukarıdaki gibi bir formül oluşturabilirsiniz ve sonra bunu bir PivotTable'a bırakabilirsiniz. PivotTable'a satır ve sütun 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 ayrı bir sorgu bağlamında değerlendirilir.

Filtre Bağlamı

Filtre bağlamı, formülde bağımsız değişkenler kullanarak sütun veya tabloda izin veriler değerler kümesi üzerinde filtre kısıtlamaları belirlediğinizde eklenir. Filtre bağlamı diğer bağlamların (satır bağlamı veya sorgu bağlamı gibi) üzerine uygulanır.

Örneğin, sorgu bağlamıyla ilgili önceki bölümde anlatıldığı gibi, PivotTable her hücre için satır ve sütun başlıklarına dayanarak değerleri hesaplar. Ancak, PivotTable'a eklediğiniz ölçüler veya hesaplanmış sütunlar içinde formül tarafından kullanılan değerleri denetlemek için filtre ifadeleri belirleyebilirsiniz. Ayrıca belirli sütunlardaki filtreleri seçerek temizleyebilirsiniz.

Formüllerin içinde filtre oluşturma hakkında daha fazla bilgi için, bkz. FILTER İşlevi.

Genel toplamları oluşturmak için filtrelerin nasıl temizlenebileceğine dair bir örnek için, bkz. ALL İşlevi.

Formüllerin içinde filtreleri seçime göre temizleme ve uygulama örnekleri için, bkz. ALLEXCEPT İşlevi.

Bu nedenle, formüllerin sonuçlarını yorumlarken filtre bağlamını bilmek için, PivotTable'da kullanılan ölçülerin veya formüllerin tanımını gözden geçirmeniz gerekir.

Formüllerde Bağlamı Belirleme

Bir formül oluşturduğunuzda, Excel için PowerPivot öncelikle genel sözdizimini denetler, sonra da sağladığınız sütunların ve tabloların adlarını geçerli bağlamdaki olası sütunlarla ve tabloyla karşılaştırarak denetler. PowerPivot formül tarafından belirtilen sütunları ve tabloları bulamazsa bir hata alırsınız.

Bağlam, önceki bölümlerde anlatıldığı gibi, çalışma kitabındaki tablolar, varsa tablolar arasındaki ilişkiler ve uygulanmış olan filtreler tarafından kullanılarak belirlenir.

Örneğin, yeni bir tabloya bir miktar veri aldıysanız ve herhangi bir filtre uygulamadıysanız, tablodaki sütun kümesinin tamamı geçerli bağlamın bir parçasıdır. İlişkilerle birbirine bağlanan birden çok tablonuz varsa ve sütun başlıkları eklenip Dilimleyiciler kullanılarak filtre uygulanmış bir PivotTable'la çalışıyorsanız, ilişkili tablolar ve verilere uygulanan tüm filtreler bağlamın içinde yer alır.

Bağlam formüllerdeki sorunları gidermeyi de zorlaştırabilen güçlü bir kavramdır. Bağlamın nasıl çalıştığını görmek için basit formüllerle ve ilişkilerle başlamanızı ve sonra PivotTable'larda basit formüller denemeye başlamanızı öneririz. Aşağıdaki bölümde formüllerin sonuçları dinamik olarak döndürmek için farklı bağlam türlerini nasıl kullandığına dair bazı örnekler de bulunmaktadır.

Formüllerdeki Bağlam Örnekleri

  • RELATED işlevi, geçerli satırın bağlamını ilişkili sütunun değerlerini de içerecek şekilde genişletir. Bu, aramalar yapmanıza olanak tanır. Bu bölümdeki örnekte, filtre uygulama ile satır bağlamı arasındaki etkileşim gösterilmektedir.

  • FILTER işlevi, geçerli bağlama eklenecek olan satırları belirtmenize olanak tanır. Bu bölümdeki örneklerde de, toplamalar gerçekleştiren diğer işlevlerin içine filtrelerin nasıl katıştırıldığı gösterilmektedir.

  • ALL işlevi formül içinde bağlamı ayarlar. Sorgu bağlamının sonucu olarak uygulanan filtreleri geçersiz kılmak için bu işlevi kullanabilirsiniz.

  • ALLEXCEPT işlevi, kendi belirttiğiniz dışındaki tüm filtreleri kaldırmanızı sağlar. Her iki bölümde de, formülleri oluşturmak ve karmaşık bağlamları anlamak için size yol gösteren örnekler bulunmaktadır.

  • EARLIER ve EARLIEST işlevleri, hesaplamalar gerçekleştirerek tablolarda döngü yapmanıza ve bu arada iç döngüden bir değere başvurmanıza olanak tanır. Özyineleme kavramını ve iç ve dış döngüleri biliyorsanız, EARLIER ve EARLIEST işlevlerinin sağladığı güçten memnun kalacaksınız. Bu kavramlarla yeni tanışıyorsanız, hesaplamalarda iç ve dış bağlamların nasıl kullanıldığını görmek için örnekteki adımları dikkatli bir şekilde izlemelisiniz.

Bilgi Tutarlılığı

Bu bölümde, ilişkilerle bağlı PowerPivot tablolarındaki eksik değerlerle ilgili bazı ileri düzey kavramlar anlatılmaktadır. Bu bölüm, birden çok tablo ve karmaşık formüller içeren çalışma kitaplarınız varsa ve sonuçları anlayabilmek için yardıma ihtiyacınız varsa yararlı olabilir.

İlişkisel veri kavramlarında deneyimli değilseniz, öncelikle İlişkilere Genel Bakış başlıklı tanıtım konusunu okumanızı öneririz.

Bilgi Tutarlılığı ve PowerPivot İlişkileri

PowerPivot, geçerli bir ilişki tanımlamak için iki tablo arasında bilgi tutarlılığının zorlanmasını gerektirmez. Bunun yerine, her bir-çok ilişkisinin "bir" ucunda boş bir satır oluşturulur ve ilişkili tablodaki tüm eşleşmeyen satırları işlemek için kullanılır. Fiilen bir SQL dış birleştirmesi olarak davranır.

PivotTable'larda, verileri ilişkinin bir tarafıyla gruplarsanız, ilişkinin çok tarafındaki eşleşmeyen veriler bir arada gruplandırılır ve toplamlara boş satır başlığıyla eklenir. Boş başlık yaklaşık olarak "bilinmeyen üye"ye eşittir.

Bilinmeyen Üyeyi Anlama

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 örneklerde bilinmeyen üyenin ne olduğu ve hesaplamaları nasıl etkilediği anlatılmıştır.

Her mağaza için aylık satışları toplayan bir hesaplama oluşturduğunuzu, ancak Satış tablosundaki bir sütunda bir mağaza adı değerinin eksik olduğunu varsayalım. Mağaza ve Satış tablolarının mağaza adıyla birbirine bağlandığı durumda, formülde ne olması gerektiğini düşünürsünüz? PivotTable varolan bir mağazayla ilgili olmayan satış rakamlarını nasıl gruplandırmalı ve görüntülemelidir?

Bu sorun, olgu verileri içeren büyük tabloların olguları kategorilendirmek ve hesaplamak için kullanılan depolar, bölgeler ve diğer özniteliklerle ilgili bilgi içeren boyut tablolarıyla mantıksal olarak ilişkili olması gereken veri ambarlarında ortak bir sorundur. Sorunu çözümlemek için, varolan bir varlıkla ilişkili olmayan tüm yeni olgular geçici olarak bilinmeyen üyeye atanır. İlişkisiz olguların PivotTable'da boş bir aşlık altında gruplandırılmış olarak görünmesinin nedeni budur.

Boş Değerlerin ve Boş Satırların Değerlendirilmesikarşı Boş Satır

Boş değerler, bilinmeyen üye için eklenen boş satırlardan farklıdır. Boş değer null değerleri, boş dizeleri ve diğer eksik değerleri temsil etmek 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. PowerPivot Çalışma Kitaplarında Desteklenen Veri Türleri.

Ayrıca bkz.

Kavramlar

İlişki Sorunlarını Giderme

PivotTable'larda İlişkilerle Çalışma

Raporlara, Grafiklere ve PivotTable'lara Hesaplama Ekleme

PowerPivot Çalışma Kitaplarında Desteklenen Veri Türleri

Diğer Kaynaklar

Veri Çözümleme İfadeleri (DAX) Başvurusu