DAX'a genel bakış

Veri Çözümleme İfadeleri (DAX), Excel'de Analysis Services, Power BI ve Power Pivot'ta kullanılan bir formül ifade dilidir. DAX formülleri, tablosal veri modellerindeki ilgili tablo ve sütunlardaki veriler üzerinde gelişmiş hesaplamalar ve sorgular gerçekleştirmek için işlevler, işleçler ve değerler içerir.

Bu makale, DAX'taki en önemli kavramlara yalnızca temel bir giriş sağlar. DAX'ı kullanan tüm ürünler için geçerli olduğu şekilde açıklar. Bazı işlevler belirli ürünler veya kullanım örnekleri için geçerli olmayabilir. Ürününüzün dax uygulamasını açıklayan belgelerine bakın.

Hesaplamalar

DAX formülleri ölçülerde, hesaplanmış sütunlarda, hesaplanan tablolarda ve satır düzeyi güvenlikte kullanılır.

Ölçümler

Ölçüler, sonuçların bağlama bağlı olarak değiştiği dinamik hesaplama formülleridir. Ölçüler, Power BI raporu, Excel PivotTable veya PivotChart gibi birden çok öznitelik kullanarak model verilerini birleştirmeyi ve filtrelemeyi destekleyen raporlamada kullanılır. Ölçüler, model tasarımcısında DAX formül çubuğu kullanılarak oluşturulur.

Ölçüdeki bir formül, BAĞ_DEĞ_SAY veya TOPLA gibi Otomatik Toplam özelliği kullanılarak otomatik olarak oluşturulan standart toplama işlevlerini kullanabilir veya DAX formül çubuğunu kullanarak kendi formülünüzü tanımlayabilirsiniz. Adlandırılmış ölçüler, diğer ölçülere bağımsız değişken olarak geçirilebilir.

Formül çubuğunda bir ölçü için formül tanımladığınızda, Araç İpucu özelliği geçerli bağlamda toplam için sonuçların önizlemesini gösterir, ancak aksi takdirde sonuçlar hemen hiçbir yerde çıkış olmaz. Hesaplamanın (filtrelenmiş) sonuçlarını hemen göremediğiniz için ölçünün sonucu bağlam olmadan belirlenemez. Ölçüyü değerlendirmek için, her hücreyle ilgili verileri almak ve sonra her hücre için ifadeyi değerlendirmek için gereken bağlamı sağlayabilecek bir raporlama istemci uygulaması gerekir. Bu istemci bir Excel PivotTable veya PivotChart, bir Power BI raporu veya SQL Server Management Studio'daki (SSMS) bir DAX sorgusundaki tablo ifadesi olabilir.

İstemciden bağımsız olarak, sonuçlardaki her hücre için ayrı bir sorgu çalıştırılır. Başka bir ifadeyle, PivotTable'daki satır ve sütun başlıklarının her birleşimi veya bir Power BI raporundaki dilimleyici ve filtre seçimlerinin her biri, ölçünün hesaplandığı farklı bir veri alt kümesi oluşturur. Örneğin, bu çok basit ölçü formülünü kullanarak:

Total Sales = SUM([Sales Amount])

Kullanıcı TotalSales ölçüsünü bir rapora yerleştirdiğinde ve ardından bir Product tablosundaki Ürün Kategorisi sütununu Filtreler'e yerleştirdiğinde, her ürün kategorisi için Satış Tutarı toplamı hesaplanır ve görüntülenir.

Hesaplanmış sütunların aksine, ölçünün söz dizimi formülün önündeki ölçünün adını içerir. Az önce sağlanan örnekte formülden önce Total Sales adı görünür. Bir ölçü oluşturduktan sonra, ad ve tanımı raporlama istemci uygulaması Alanlar listesinde görünür ve perspektiflere ve rollere bağlı olarak modelin tüm kullanıcıları tarafından kullanılabilir.

Daha fazla bilgi edinmek için şu makalelere bakın:
Power BI Desktop'taki ölçüler
Analysis Services'daki ölçüler
Power Pivot'taki ölçüler

Hesaplanmış sütunlar

Hesaplanmış sütun, var olan bir tabloya (model tasarımcısında) eklediğiniz ve sonra sütunun değerlerini tanımlayan bir DAX formülü oluşturduğunuz bir sütundur. Hesaplanan sütun geçerli bir DAX formülü içerdiğinde, formül girildiğinde her satır için değerler hesaplanır. Değerler daha sonra bellek içi veri modelinde depolanır. Örneğin, Bir Tarih tablosunda, formül formül çubuğuna girildiğinde:

= [Calendar Year] & " Q" & [Calendar Quarter]

Tablodaki her satır için bir değer, Takvim Yılı sütunundan (aynı Tarih tablosundaki) değerler alınarak, bir boşluk ve büyük harf Q eklenerek ve ardından Takvim Üç Aylık Dönemi sütunundan (aynı Tarih tablosunda) değerler eklenerek hesaplanır. Hesaplanmış sütundaki her satırın sonucu hemen hesaplanır ve örneğin 2017 Q1 olarak görünür. Sütun değerleri yalnızca tablo veya ilişkili herhangi bir tablo işlenirse (yenilenir) veya model bellekten kaldırılırsa ve power BI Desktop dosyasını kapatıp yeniden açarken olduğu gibi yeniden yüklenirse yeniden hesaplanır.

Daha fazla bilgi edinmek için şu makalelere bakın:
Power BI Desktop'ta hesaplanan sütunlar
Analysis Services'da hesaplanan sütunlar
Power Pivot'ta Hesaplanan Sütunlar.

Hesaplanan tablolar

Hesaplanan tablo, aynı modeldeki diğer tabloların tümünden veya bir bölümünden türetilen bir formül ifadesini temel alan hesaplanan bir nesnedir. Veri kaynağından değerleri sorgulayıp yeni tablonuzun sütunlarına yüklemek yerine, DAX formülü tablonun değerlerini tanımlar.

Hesaplanan tablolar rol yapma boyutunda yararlı olabilir. Yabancı anahtar ilişkisine bağlı olarak OrderDate, ShipDate veya DueDate olarak Date tablosu buna örnek olarak verilmiştir. ShipDate için açıkça hesaplanmış bir tablo oluşturarak, sorgular için kullanılabilen, diğer tüm tablolar gibi tam olarak çalıştırılabilir tek başına bir tablo elde edersiniz. Hesaplanan tablolar, filtrelenmiş satır kümesi veya var olan diğer tablolardaki sütunların alt kümesini veya üst kümesini yapılandırırken de yararlıdır. Bu, belirli senaryoları desteklemek için bu tablonun çeşitlemelerini oluştururken özgün tabloyu olduğu gibi tutmanızı sağlar.

Hesaplanan tablolar diğer tablolarla ilişkileri destekler. Hesaplanmış tablonuzdaki sütunlar veri türlerine, biçimlendirmeye sahiptir ve bir veri kategorisine ait olabilir. Hesaplanan tablolar, diğer tüm tablolar gibi adlandırılabilir ve ortaya çıkarılabilir veya gizlenebilir. Hesaplanmış tablolar, veri çektiği tablolardan herhangi biri yenilenir veya güncelleştirilirse yeniden hesaplanır.

Daha fazla bilgi edinmek için şu makalelere bakın:
Power BI Desktop'ta hesaplanan tablolar
Analysis Services'da hesaplanan tablolar.

Satır düzeyi güvenlik

Satır düzeyi güvenlikle, bir DAX formülünün, belirli bir rolün üyeleri tarafından sorgu sonuçları tarafından hangi satırların döndürülebileceğini tanımlayan Bir Boole DOĞRU/YANLIŞ koşulu olarak değerlendirmesi gerekir. Örneğin, Satış rolünün üyeleri için aşağıdaki DAX formülünü içeren Müşteriler tablosu:

= Customers[Country] = "USA"

Satış rolünün üyeleri yalnızca ABD'deki müşterilerin verilerini görüntüleyebilir ve SUM gibi toplamlar yalnızca ABD'deki müşteriler için döndürülür. Satır düzeyi güvenlik, Excel'deki Power Pivot'ta kullanılamaz.

DAX formülünü kullanarak satır düzeyi gizlilik tanımlarken, izin verilen bir satır kümesi oluşturursunuz. Bu, diğer satırlara erişimi reddetmez; bunun yerine, izin verilen satır kümesinin bir parçası olarak döndürülmemeleri yeterlidir. Diğer roller DAX formülü tarafından dışlanan satırlara erişime izin verebilir. Kullanıcı başka bir rolün üyesiyse ve bu rolün satır düzeyi güvenliği söz konusu satır kümesine erişime izin veriyorsa, kullanıcı bu satıra ait verileri görüntüleyebilir.

Satır düzeyi güvenlik formülleri, hem belirtilen satırlara hem de ilgili satırlara uygulanır. Bir tablonun birden çok ilişkisi olduğunda, filtreler etkin olan ilişki için güvenlik uygular. Satır düzeyi güvenlik formülleri, ilgili tablolar için tanımlanan diğer formüllerle kesişir.

Daha fazla bilgi edinmek için şu makalelere bakın:
Power BI ile satır düzeyinde güvenlik (RLS)
Analysis Services'deki Roller

Sorgular

DAX sorguları, SQL Server Management Studio (SSMS) ve DAX Studio (daxstudio.org) gibi açık kaynak araçlarda oluşturulabilir ve çalıştırılabilir. Yalnızca tablosal veri modellerinde oluşturulabilen DAX hesaplama formüllerinden farklı olarak, DAX sorguları Analysis Services Çok Boyutlu modellerinde de çalıştırılabilir. DAX sorgularının yazılma kolaylığı ve çok boyutlu Veri İfadeleri (MDX) sorgularından daha verimli olması genellikle daha kolaydır.

DAX sorgusu, T-SQL'deki SELECT deyimine benzer bir deyimdir. EN temel DAX sorgusu türü bir evaluate deyimidir. Örneğin,

EVALUATE
 ( FILTER ( 'DimProduct', [SafetyStockLevel] < 200 ) )
ORDER BY [EnglishProductName] ASC

Sonuçlar'da yalnızca Kasa tyStockLevel değeri 200'den küçük olan ürünleri EnglishProductName'e göre artan sırada listeleyen bir tablo döndürür.

Sorgunun bir parçası olarak ölçüler oluşturabilirsiniz. Ölçüler yalnızca sorgunun süresi boyunca bulunur. Daha fazla bilgi edinmek için bkz . DAX sorguları.

Formüller

DAX formülleri, hesaplanmış sütunlarda ve ölçülerde hesaplamalar oluşturmak ve satır düzeyi güvenlik kullanarak verilerinizin güvenliğini sağlamak için gereklidir. Hesaplanmış sütunlar ve ölçüler için formül oluşturmak için model tasarımcısı penceresinin üst kısmındaki formül çubuğunu veya DAX Düzenleyicisi'ni kullanın. Satır düzeyi güvenliğe yönelik formüller oluşturmak için Rol Yöneticisi veya Rolleri yönet iletişim kutusunu kullanın. Bu bölümdeki bilgiler, DAX formüllerinin temellerini anlamanıza yöneliktir.

Formülle ilgili temel bilgiler

DAX formülleri çok basit veya oldukça karmaşık olabilir. Aşağıdaki tabloda, hesaplanmış sütunda kullanılabilecek bazı basit formül örnekleri gösterilmektedir.

Formül Açıklama
= TODAY() Hesaplanan sütunun her satırına bugünün tarihini ekler.
= 3 Hesaplanmış sütunun her satırına 3 değerini ekler.
= [Column1] + [Column2] [Sütun1] ve [Sütun2] değerlerinin aynı satırına ekler ve sonuçları aynı satırın hesaplanan sütununa yerleştirir.

Oluşturduğunuz formülün basit veya karmaşık olmasına bakılmaksızın, formül oluştururken aşağıdaki adımları kullanabilirsiniz:

  1. Her formülün eşittir işaretiyle (=) başlaması gerekir.

  2. bir işlev adı yazabilir veya seçebilir ya da bir ifade yazabilirsiniz.

  3. İstediğiniz işlevin veya adın ilk birkaç harfini yazmaya başlayın ve Otomatik Tamamlama, kullanılabilir işlevlerin, tabloların ve sütunların listesini görüntüler. Otomatik Tamamlama listesinden bir öğeyi formüle eklemek için SEKME tuşuna basın.

    Kullanılabilir işlevlerin listesini görüntülemek için Fx düğmesine de tıklayabilirsiniz. Açılan listeden bir işlev seçmek için ok tuşlarını kullanarak öğeyi vurgulayın ve tamam'a tıklayarak işlevi formüle ekleyin.

  4. Olası tablo ve sütunların açılan listesinden seçerek veya değerleri yazarak işleve bağımsız değişkenleri sağlayın.

  5. Söz dizimi hatalarını denetleyin: Tüm parantezlerin kapalı olduğundan ve sütunlara, tablolara ve değerlere doğru başvurıldığından emin olun.

  6. Formülü kabul etmek için ENTER tuşuna basın.

Dekont

Hesaplanmış bir sütunda, formülü girdiğinizde ve formül doğrulandığında sütun değerlerle doldurulur. Bir ölçüde ENTER tuşuna basıldığında ölçü tanımı tabloyla birlikte kaydedilir. Formül geçersizse bir hata görüntülenir.

Bu örnekte Geçerli Çeyrekteki Gün sayısı adlı ölçüdeki bir formüle bakalım:

Days in Current Quarter = COUNTROWS( DATESBETWEEN( 'Date'[Date], STARTOFQUARTER( LASTDATE('Date'[Date])), ENDOFQUARTER('Date'[Date])))

Bu ölçü, tamamlanmamış bir dönem ile önceki dönem arasında karşılaştırma oranı oluşturmak için kullanılır. Formül, geçen dönemin oranını dikkate almalı ve önceki dönemdeki aynı oran ile karşılaştırmalıdır. Bu durumda, [Geçerli Üç Aylık Dönemden Tarihe Gün]/[Geçerli Üç Aylık Dönemdeki Günler] geçerli dönemde geçen oranı verir.

Bu formül aşağıdaki öğeleri içerir:

Formül öğesi Tanım
Days in Current Quarter Ölçünün adı.
= Eşittir işareti (=) formülü başlatır.
COUNTROWS COUNTROWS , Date tablosundaki satır sayısını sayar
() Açma ve kapatma parantezi bağımsız değişkenleri belirtir.
DATESBETWEEN DATESBETWEEN işlevi, Date tablosundaki Date sütunundaki her değerin son tarihi arasındaki tarihleri döndürür.
'Date' Date tablosunu belirtir. Tablolar tek tırnak içindedir.
[Date] Date tablosundaki Date sütununu belirtir. Sütunlar köşeli ayraç içindedir.
,
STARTOFQUARTER STARTOFQUARTER işlevi, üç aylık dönemin başlangıç tarihini döndürür.
LASTDATE LASTDATE işlevi, üç aylık dönemin son tarihini döndürür.
'Date' Date tablosunu belirtir.
[Date] Date tablosundaki Date sütununu belirtir.
,
ENDOFQUARTER ENDOFQUARTER işlevi
'Date' Date tablosunu belirtir.
[Date] Date tablosundaki Date sütununu belirtir.

Formülü Otomatik Tamamlama'yı kullanma

Otomatik Tamamlama, formüldeki her öğe için size seçenekler sağlayarak geçerli bir formül söz dizimi girmenize yardımcı olur.

  • İç içe işlevlerle var olan bir formülün ortasındaKimlik Tamamlama formülünü kullanabilirsiniz. Ekleme noktasından hemen önceki metin, açılan listedeki değerleri görüntülemek için kullanılır ve ekleme noktasından sonraki metnin tümü değişmeden kalır.

  • Otomatik Tamamlama işlevlerin kapatma parantezini eklemez veya parantezleri otomatik olarak eşleştirmez. Her işlevin söz dizimsel olarak doğru olduğundan veya formülü kaydedemediğinize veya kullanamadığınıza emin olmalısınız.

Formülde birden çok işlev kullanma

İşlevleri iç içe yerleştirebilirsiniz; başka bir deyişle, bir işlevin sonuçlarını başka bir işlevin bağımsız değişkeni olarak kullanabilirsiniz. Hesaplanan sütunlarda en fazla 64 işlev düzeyi iç içe yerleştirebilirsiniz. Ancak iç içe yerleştirme, formül oluşturmayı veya sorun gidermeyi zorlaştırabilir. Birçok işlev yalnızca iç içe yerleştirilmiş işlevler olarak kullanılacak şekilde tasarlanmıştır. Bu işlevler, sonuç olarak doğrudan kaydedilemeyen bir tablo döndürür; bir tablo işlevine giriş olarak sağlanmalıdır. Örneğin, SUMX, AVERAGEX ve MINX işlevlerinin tümü ilk bağımsız değişken olarak bir tablo gerektirir.

İşlevler

İşlev, ifade içindeki adlandırılmış bir formüldür. İşlevlerin çoğu giriş olarak parametre olarak da bilinen gerekli ve isteğe bağlı bağımsız değişkenlere sahiptir. İşlev yürütülürken bir değer döndürülür. DAX, tarih ve saatleri kullanarak hesaplamalar yapmak, koşullu değerler oluşturmak, dizelerle çalışmak, ilişkilere dayalı aramalar yapmak ve özyinelemeli hesaplamalar yapmak için bir tablo üzerinde yineleme yapmak için kullanabileceğiniz işlevler içerir. Excel formüllerini biliyorsanız, bu işlevlerin çoğu çok benzer görünür; ancak, DAX formülleri aşağıdaki önemli yollarla farklıdır:

  • DAX işlevi her zaman tam bir sütuna veya tabloya başvurur. Tablo veya sütundan yalnızca belirli değerleri kullanmak istiyorsanız, formüle filtre ekleyebilirsiniz.

  • Hesaplamaları satır satır özelleştirmeniz gerekiyorsa DAX, bağlama göre değişen hesaplamalar yapmak için geçerli satır değerini veya ilgili değeri parametre türü olarak kullanmanıza olanak sağlayan işlevler sağlar. Bu işlevlerin nasıl çalıştığını anlamak için bu makaledeki Bağlam bölümüne bakın.

  • DAX, değer yerine tablo döndüren birçok işlev içerir. Tablo bir raporlama istemcisinde görüntülenmez, ancak diğer işlevlere giriş sağlamak için kullanılır. Örneğin, bir tabloyu alıp içindeki ayrı değerleri sayabilir veya filtrelenmiş tablolar veya sütunlar arasında dinamik toplamları hesaplayabilirsiniz.

  • DAX işlevleri çeşitli akıllı zaman gösterimi işlevleri içerir. Bu işlevler tarih aralıklarını tanımlamanıza veya seçmenize ve bu tarihlere veya aralıklara göre dinamik hesaplamalar yapmanıza olanak sağlar. Örneğin, toplamları paralel dönemler arasında karşılaştırabilirsiniz.

Toplama işlevleri

Toplama işlevleri, ifade tarafından tanımlandığı gibi bir sütun veya tablodaki tüm satırlar için sayı, toplam, ortalama, minimum veya maksimum gibi bir (skaler) değeri hesaplar. Daha fazla bilgi edinmek için bkz . Toplama işlevleri.

Tarih ve saat işlevleri

DAX'taki tarih ve saat işlevleri, Microsoft Excel'deki tarih ve saat işlevlerine benzer. Ancak, DAX işlevleri 1 Mart 1900'den itibaren bir tarih saat veri türünü temel alır. Daha fazla bilgi edinmek için bkz . Tarih ve saat işlevleri.

Filtre işlevleri

DAX'taki filtre işlevleri belirli veri türlerini döndürür, ilgili masallardaki değerleri arar ve ilgili değerlere göre filtreler. Arama işlevleri, veritabanı gibi tabloları ve ilişkileri kullanarak çalışır. Filtreleme işlevleri, dinamik hesaplamalar oluşturmak için veri bağlamını işlemenize olanak sağlar. Daha fazla bilgi edinmek için bkz . Filtreleme işlevleri.

Finansal işlevler

DAX'taki finansal işlevler, net bugünkü değer ve getiri oranı gibi finansal hesaplamalar yapan formüllerde kullanılır. Bu işlevler, Microsoft Excel'de kullanılan finansal işlevlere benzer. Daha fazla bilgi edinmek için bkz . Finansal işlevler.

Bilgi işlevleri

Bilgi işlevi, bağımsız değişken olarak sağlanan hücreye veya satıra bakar ve değerin beklenen türle eşleşip eşleşmediğini bildirir. Örneğin, başvurduğunuz değer bir hata içeriyorsa, ISERROR işlevi TRUE döndürür. Daha fazla bilgi edinmek için bkz . Bilgi işlevleri.

Mantıksal işlevler

Mantıksal işlevler, ifadedeki değerler hakkında bilgi döndürmek için bir ifadeye göre hareket eder. Örneğin, TRUE işlevi, değerlendirdiğiniz bir ifadenin TRUE değeri döndürdüğünü bilmenizi sağlar. Daha fazla bilgi edinmek için bkz . Mantıksal işlevler.

Matematiksel ve trigonometrik işlevler

DAX'taki matematik işlevleri Excel matematiksel ve trigonometrik işlevlerine çok benzer. DAX işlevleri tarafından kullanılan sayısal veri türlerinde bazı küçük farklılıklar vardır. Daha fazla bilgi edinmek için bkz . Matematik ve trigoner işlevleri.

Diğer işlevler

Bu işlevler, diğer işlevlerin en çok ait olduğu kategorilerden herhangi biri tarafından tanımlanamayan benzersiz eylemler gerçekleştirir. Daha fazla bilgi edinmek için bkz . Diğer işlevler.

İlişki işlevleri

DAX'taki ilişki işlevleri, başka bir ilişkili tablodan değer döndürmenize, ifadede kullanılacak belirli bir ilişkiyi belirtmenize ve çapraz filtreleme yönünü belirtmenize olanak tanır. Daha fazla bilgi edinmek için bkz . İlişki işlevleri.

İstatistiksel işlevler

İstatistiksel işlevler, standart sapma ve permütasyon sayısı gibi istatistiksel dağılımlarla ve olasılıkla ilgili değerleri hesaplar. Daha fazla bilgi edinmek için bkz . İstatistiksel işlevler.

Metin işlevleri

DAX'taki metin işlevleri, Excel'deki karşılıklarına çok benzer. Dizenin bir bölümünü döndürebilir, dize içinde metin arayabilir veya dize değerlerini birleştirebilirsiniz. DAX ayrıca tarih, saat ve sayı biçimlerini denetlemeye yönelik işlevler de sağlar. Daha fazla bilgi edinmek için bkz . Metin işlevleri.

Akıllı zaman gösterimi işlevleri

DAX'ta sağlanan akıllı zaman gösterimi işlevleri, takvimler ve tarihler hakkında yerleşik bilgileri kullanan hesaplamalar oluşturmanıza olanak sağlar. Zaman ve tarih aralıklarını toplamalar veya hesaplamalarla birlikte kullanarak, satış, stok vb. için karşılaştırılabilir zaman dönemleri arasında anlamlı karşılaştırmalar oluşturabilirsiniz. Daha fazla bilgi edinmek için bkz. Akıllı zaman gösterimi işlevleri (DAX).

Tablo işleme işlevleri

Bu işlevler bir tablo döndürür veya var olan tabloları işler. Örneğin, ADDCOLUMNS kullanarak belirtilen bir tabloya hesaplanmış sütunlar ekleyebilir veya SUMMARIZECOLUMNS işleviyle bir grup kümesi üzerinde özet tablo döndürebilirsiniz. Daha fazla bilgi edinmek için bkz . Tablo işleme işlevleri.

Değişkenler

VAR kullanarak bir ifade içinde değişkenler oluşturabilirsiniz. VAR teknik olarak bir işlev değildir, bir ifadenin sonucunu adlandırılmış değişken olarak depolamak için kullanılan bir anahtar sözcüktür. Bu değişken daha sonra diğer ölçü ifadelerine bağımsız değişken olarak geçirilebilir. Örnek:

VAR
    TotalQty = SUM ( Sales[Quantity] )

Return

    IF (
        TotalQty > 1000,
        TotalQty * 0.95,
        TotalQty * 1.25
        )

Bu örnekte TotalQty, diğer ifadelere adlandırılmış değişken olarak geçirilebilir. Değişkenler, tablolar da dahil olmak üzere herhangi bir skaler veri türünde olabilir. DAX formüllerinizde değişkenleri kullanmak inanılmaz derecede güçlü olabilir.

Veri türleri

Farklı veri türlerini destekleyebilecek birçok farklı veri kaynağından bir modele veri aktarabilirsiniz. Verileri bir modele aktardığınızda, veriler tablosal model veri türlerinden birine dönüştürülür. Model verileri bir hesaplamada kullanıldığında, hesaplamanın süresi ve çıkışı için veriler bir DAX veri türüne dönüştürülür. BIR DAX formülü oluşturduğunuzda, formülde kullanılan terimler döndürülen değer veri türünü otomatik olarak belirler.

DAX aşağıdaki veri türlerini destekler:

Modeldeki veri türü DAX'ta veri türü Tanım
Tamsayı 64 bit (sekiz bayt) tamsayı değeri 1, 2 Ondalık basamak içermeyen sayılar. Tamsayılar pozitif veya negatif sayılar olabilir, ancak -9.223.372.036.854.775.808 (-2^63) ile 9.223.372.036.854.775.807 (2^63-1) arasında tamsayılar olmalıdır.
Ondalık Sayı 64 bit (sekiz bayt) gerçek sayı 1, 2 Gerçek sayılar ondalık basamakları olan sayılardır. Gerçek sayılar çok çeşitli değerleri kapsar:

-1,79E +308 ile -2,23E -308 arasında negatif değerler

Sıfır

2,23E -308 ile 1,79E + 308 arasında pozitif değerler

Ancak, anlamlı basamak sayısı 17 ondalık basamakla sınırlıdır.
Boolean Boolean True veya False değeri.
Metin String Unicode karakter veri dizesi. Metin biçiminde temsil edilen dizeler, sayılar veya tarihler olabilir.
Date Tarih/saat Kabul edilen tarih-saat gösterimindeki tarihler ve saatler.

Geçerli tarihlerin tümü 1 Mart 1900'e kadar olan tarihlerdir.
Currency Currency Para birimi veri türü, -922.337.203.685.477.5808 ile 922.337.203.685.477.5807 arasındaki değerlerin dört ondalık basamağı sabit duyarlıklı olmasını sağlar.
Geçersiz Blank Boş, DAX'ta SQL null değerlerini temsil eden ve değiştiren bir veri türüdür. BLANK işlevini kullanarak boş değer oluşturabilir ve ISBLANK mantıksal işlevini kullanarak boşlukları test edebilirsiniz.

Tablosal veri modelleri, birçok DAX işlevinin girişi veya çıkışı olarak Tablo veri türünü de içerir. Örneğin, FILTER işlevi bir tabloyu giriş olarak alır ve yalnızca filtre koşullarını karşılayan satırları içeren başka bir tablo çıkarır. Tablo işlevlerini toplama işlevleriyle birleştirerek, dinamik olarak tanımlanan veri kümeleri üzerinde karmaşık hesaplamalar yapabilirsiniz.

Veri türleri genellikle otomatik olarak ayarlanmış olsa da, veri türlerini ve özellikle DAX formüllerine nasıl uygulandıklarını anlamak önemlidir. Formüllerdeki hataların veya beklenmeyen sonuçların nedeni genellikle bağımsız değişkende belirtilen veri türüyle kullanılamayabilecek belirli bir işleç kullanılmasıdır. Örneğin, = 1 & 2formülü 12 dize sonucu döndürür. Ancak formülü = "1" + "2"3'ün tamsayı sonucunu döndürür.

Bağlam

Bağlam , DAX formülleri oluştururken anlaşılması gereken önemli bir kavramdır. Bağlam, bir formülün sonuçları geçerli satır veya hücre seçimini ve ayrıca ilgili verileri yansıtacak şekilde değiştiğinden dinamik analiz gerçekleştirmenizi sağlayan özelliktir. Bağlamı anlamak ve bağlamı etkili bir şekilde kullanmak, yüksek performanslı, dinamik analizler oluşturmak ve formüllerdeki sorunları gidermek için kritik öneme sahiptir.

Tablosal modellerdeki formüller, diğer tasarım öğelerine bağlı olarak farklı bir bağlamda değerlendirilebilir:

  • PivotTable'a veya rapora uygulanan filtreler
  • Formül içinde tanımlanan filtreler
  • Formül içinde özel işlevler kullanılarak belirtilen ilişkiler

Farklı bağlam türleri vardır: satır bağlamı, sorgu bağlamı ve filtre bağlamı.

Satır bağlamı

Satır bağlamı "geçerli satır" olarak düşünülebilir. Hesaplanmış sütunda formül oluşturursanız, bu 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 geçerli satırla ilişkili diğer tablonun tüm değerlerini de içerir.

Örneğin, aynı tablodan Navlun ve Vergi adlı iki sütundaki değerleri bir araya getiren bir hesaplanmış sütun = [Freight] + [Tax]oluşturduğunuzu varsayalım. Bu formül, yalnızca belirtilen sütunlardaki geçerli satırdaki değerleri otomatik olarak alır.

Satır bağlamı, ilişkili tablolardaki hangi satırların geçerli satırla ilişkili olduğunu belirlemek için DAX formülleri kullanılarak hesaplanan sütun içinde tanımlanan ilişkiler de dahil olmak üzere tablolar arasında tanımlanmış olan ilişkileri de izler.

Örneğin, aşağıdaki formül, siparişin sevk edildiği bölgeye göre ilişkili bir tablodan vergi değeri getirmek için RELATED işlevini kullanır. Vergi değeri, geçerli tablodaki bölgenin değeri kullanılarak, ilgili tablodaki bölgeye bakılarak ve ilgili tablodan ilgili bölgenin vergi oranı alınarak belirlenir.

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

Bu formül, Region tablosundan geçerli bölgenin vergi oranını alır ve Navlun sütununun değerine ekler. DAX formüllerinde tabloları bağlayan belirli bir ilişkiyi bilmeniz veya belirtmeniz gerekmez.

Birden çok satır bağlamı

DAX, bir tablo üzerinde hesaplamaları yineleyen işlevler içerir. Bu işlevlerin her biri kendi satır bağlamı olan birden çok geçerli satırı olabilir. Özünde, bu işlevler bir iç ve dış döngü üzerinde özyinelemeli olarak işlemler gerçekleştiren formüller oluşturmanıza olanak sağlar.

Örneğin, modelinizin products tablosu ve Sales tablosu içerdiğini varsayalım. Kullanıcılar, birden çok ürün içeren işlemlerle dolu olan 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 isteyebilir.

DAX ile doğru değeri döndüren tek bir formül oluşturabilirsiniz ve bir kullanıcı tablolara veri ekleyişinde sonuçlar otomatik olarak güncelleştirilir.

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

Bu formülün ayrıntılı bir örneği için bkz . EARLIER.

Özetlemek gerekirse EARLIER işlevi, geçerli işlemden önceki işlemden satır bağlamını depolar. İşlev her zaman 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ı, başka bir bağlam kümesi ise 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 veri alt kümesini ifade eder. Örneğin, kullanıcı rapora bir ölçü veya alan yerleştirdiğinde altyapı, bağlamı belirlemek için satır ve sütun üst bilgilerini, dilimleyicileri ve rapor filtrelerini inceler. Gerekli sorgular daha sonra doğru veri alt kümesini almak, formül tarafından tanımlanan hesaplamaları yapmak ve ardından rapordaki değerleri doldurmak için model verilerine karşı çalıştırılır.

Bağlam, formülü yerleştirdiğiniz yere bağlı olarak değiştiğinden, formülün sonuçları da değişebilir. Örneğin, Sales tablosunun Profit sütunundaki değerleri toplayan bir formül oluşturduğunuzu varsayalım: = SUM('Sales'[Profit]). Bu formülü Sales tablosunun içindeki bir hesaplanmış sütunda kullanırsanız, formülün sorgu bağlamı her zaman Sales tablosunun veri kümesinin tamamı olduğundan, formülün sonuçları tablonun tamamı için aynı olur. Sonuçlar tüm bölgeler, tüm ürünler, tüm yıllar vb. için kar elde eder.

Ancak, kullanıcılar genellikle aynı sonucu yüzlerce kez görmek istemez, ancak bunun yerine belirli bir yılın, belirli bir ülkenin, belirli bir ürünün veya bunların bir bileşiminin kar elde etmek ve ardından genel toplamı elde etmek ister.

Bir raporda, alanlar filtrelenerek, eklenerek veya kaldırılarak ve dilimleyiciler kullanılarak bağlam değiştirilir. Her değişiklik için ölçünün değerlendirildiği sorgu bağlamı. Bu nedenle, bir ölçüde kullanılan formül, her hücre için farklı bir sorgu bağlamında değerlendirilir.

Filtre bağlamı

Filtre bağlamı , her sütunda veya ilgili tablodan alınan değerlerde izin verilen değerler kümesidir. Filtreler tasarımcıdaki sütuna veya sunu katmanına (raporlar ve PivotTable'lar) uygulanabilir. Filtreler, formül içindeki filtre ifadeleri tarafından açıkça da tanımlanabilir.

Filtre bağlamı, bir sütun veya tabloda izin verilen değer kümesinde filtre kısıtlamaları belirttiğinizde, formül bağımsız değişkenleri kullanılarak eklenir. Filtre bağlamı, satır bağlamı veya sorgu bağlamı gibi diğer bağlamların üzerine uygulanır.

Tablosal modellerde filtre bağlamı oluşturmanın birçok yolu vardır. Power BI raporları gibi modeli kullanabilen istemciler bağlamında, kullanıcılar satır ve sütun başlıklarına dilimleyiciler veya rapor filtreleri ekleyerek anında filtreler oluşturabilir. Ayrıca doğrudan formül içinde filtre ifadeleri belirtebilir, ilgili değerleri belirtebilir, giriş olarak kullanılan tabloları filtreleyebilir veya hesaplamalarda kullanılan değerlerin bağlamını dinamik olarak alabilirsiniz. Ayrıca, belirli sütunlardaki filtreleri tamamen temizleyebilir veya seçmeli olarak temizleyebilirsiniz. Bu, genel toplamları hesaplayan formüller oluştururken çok yararlıdır.

Formüller içinde filtre oluşturma hakkında daha fazla bilgi edinmek için FİlTRE İşlevi (DAX) bölümüne bakın.
Genel toplamlar oluşturmak için filtrelerin nasıl temizlendiğini gösteren bir örnek için bkz. ALL İşlevi (DAX).

Formüller içindeki filtreleri seçmeli olarak temizleme ve uygulama örnekleri için bkz . ALLEXCEPT.

Formüllerdeki bağlamı belirleme

BIR DAX formülü oluşturduğunuzda, formül önce geçerli söz dizimi için test edilir ve ardından formüle dahil edilen sütun ve tabloların adlarının geçerli bağlamda bulunadığından emin olmak için test edilir. Formül tarafından belirtilen herhangi bir sütun veya tablo bulunamazsa bir hata döndürülür.

Doğrulama sırasında bağlam (ve yeniden hesaplama işlemleri), önceki bölümlerde açıklandığı gibi modeldeki kullanılabilir tablolar, tablolar arasındaki tüm ilişkiler ve uygulanmış olan filtreler kullanılarak belirlenir.

Örneğin, yeni bir tabloya veri aktardıysanız ve bu veriler diğer tablolarla ilgili değilse (ve filtre uygulamadıysanız), geçerli bağlam tablodaki tüm sütun kümesidir. Tablo diğer tablolara ilişkilerle bağlıysa, geçerli bağlam ilgili tabloları içerir. Tablodan Dilimleyicileri olan bir rapora sütun eklerseniz ve bazı rapor filtreleri eklerseniz, formülün bağlamı raporun her hücresindeki verilerin alt kümesidir.

Bağlam, formüllerle ilgili sorunları gidermeyi de zorlaştırabilecek 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ı ö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 ilişkin bazı örnekler verilmiştir.

İşleçler

DAX dili formüllerde dört farklı tür hesaplama işleci kullanır:

  • Değerleri karşılaştırmak ve mantıksal bir DOĞRU\YANLIŞ değeri döndürmek için karşılaştırma işleçleri.
  • Sayısal değerler döndüren aritmetik hesaplamalar gerçekleştirmek için aritmetik işleçler.
  • İki veya daha fazla metin dizesini birleştirmek için metin birleştirme işleçleri.
  • Tek bir sonuç döndürmek için iki veya daha fazla ifadeyi birleştiren mantıksal işleçler.

DAX formüllerinde kullanılan işleçler hakkında ayrıntılı bilgi için bkz . DAX işleçleri.

Tablo ve sütunlarla çalışma

Tablosal veri modellerindeki tablolar Excel tablolarına benzer, ancak verilerle ve formüllerle çalışma biçimlerinden farklıdır:

  • Formüller tek tek hücreler, aralık başvuruları veya dizilerle değil, yalnızca tablo ve sütunlarla çalışır.
  • Formüller, ilişkili tablolardan değer almak için ilişkileri kullanabilir. Alınan değerler her zaman geçerli satır değeriyle ilişkilidir.
  • Excel çalışma sayfasında yaptığınız gibi düzensiz veya "düzensiz" verileriniz olamaz. Tablodaki her satır aynı sayıda sütun içermelidir. Ancak, bazı sütunlarda boş değerleriniz olabilir. Excel veri tabloları ve tablosal model veri tabloları birbirinin yerine kullanılamaz.
  • Her sütun için bir veri türü ayarlandığından, bu sütundaki her değer aynı türde olmalıdır.

Formüllerdeki tablolara ve sütunlara başvurma

Adını kullanarak herhangi bir tabloya ve sütuna başvurabilirsiniz. Örneğin, aşağıdaki formül tam adı kullanarak iki tablodaki sütunlara nasıl başvuracaklarını gösterir:


= SUM('New Sales'[Amount]) + SUM('Past Sales'[Amount])  

Bir formül değerlendirildiğinde, model tasarımcısı önce genel söz dizimini denetler ve ardından sağladığınız sütunların ve tabloların adlarını geçerli bağlamdaki olası sütunlar ve tablolarla karşılaştırarak denetler. Ad belirsizse veya sütun veya tablo bulunamıyorsa, formülde bir hata alırsınız (hatanın oluştuğu hücrelerde veri değeri yerine #ERROR dizesi). Tablolar, sütunlar ve diğer nesnelere yönelik adlandırma gereksinimleri hakkında daha fazla bilgi edinmek için bkz. DAX söz diziminde Adlandırma Gereksinimleri.

Tablo ilişkileri

Tablolar arasında ilişkiler oluşturarak, diğer tablolardaki ilgili değerlerin hesaplamalarda kullanılabilmesini sağlarsınız. Örneğin, geçerli kurumsal bayi ile ilgili tüm sevkiyat kayıtlarını belirlemek ve ardından her birinin sevkiyat maliyetlerini toplamak için bir hesaplanmış sütun kullanabilirsiniz. Ancak çoğu durumda ilişki gerekli olmayabilir. search_column ve search_value bağımsız değişkenlerinde belirtilen ölçütleri karşılayan satırın değerini result_columnName döndürmek için formülde ARADEĞERİ işlevini kullanabilirsiniz.

Birçok DAX işlevi, başvurduğunuz sütunları bulmak ve anlamlı sonuçlar döndürmek için tablolar arasında veya birden çok tablo arasında bir ilişki olmasını gerektirir. Diğer işlevler ilişkiyi tanımlamaya çalışır; ancak, en iyi sonuçlar için her zaman mümkün olduğunda bir ilişki oluşturmanız gerekir. Tablosal veri modelleri tablolar arasında birden çok ilişkiyi destekler. Karışıklığı veya yanlış sonuçları önlemek için, aynı anda yalnızca bir ilişki etkin ilişki olarak atanır, ancak hesaplamalardaki verilerdeki farklı bağlantılardan geçiş yapmak için gerekli etkin ilişkiyi değiştirebilirsiniz. USERELATIONSHIP işlevi, belirli bir hesaplamada kullanılacak bir veya daha fazla ilişkiyi belirtmek için kullanılabilir.

İlişkileri kullanırken bu formül tasarım kurallarını gözlemlemek önemlidir:

  • Tablolar bir ilişki tarafından bağlandığında, anahtar olarak kullanılan iki sütunun eşleşen değerlere sahip olduğundan emin olmanız gerekir. Bilgi tutarlılığı zorlanmaz, bu nedenle bir anahtar sütununda eşleşmeyen değerlere sahip olmak ve yine de bir ilişki oluşturmak mümkündür. Böyle bir durumda, boş değerlerin veya eşleşmeyen değerlerin formüllerin sonuçlarını etkileyebileceğini unutmayın.

  • Modelinizde ilişkileri kullanarak tabloları bağladığınızda, formüllerinizin değerlendirildiği kapsamı veya bağlamı genişletmiş olursunuz. Yeni tabloların, yeni ilişkilerin eklenmesinden veya etkin ilişkideki değişikliklerden kaynaklanan bağlam değişiklikleri, sonuçlarınızın tahmin etmeyebileceğiniz şekilde değişmesine neden olabilir. Daha fazla bilgi edinmek için bu makaledeki Bağlam bölümüne bakın.

İşlem ve yenileme

İşlem ve yeniden hesaplama iki ayrı ama ilişkili işlemdir. Karmaşık formüller, büyük miktarlarda veri veya dış veri kaynaklarından elde edilen veriler içeren bir model tasarlarken bu kavramları iyice anlamanız gerekir.

İşlem (yenileme), modeldeki verileri dış veri kaynağından alınan yeni verilerle güncelleştiriyor.

Yeniden hesaplama , formüllerin kendilerinde yapılan değişiklikleri yansıtmak ve temel alınan verilerdeki değişiklikleri yansıtmak için formüllerin sonuçlarını güncelleştirme işlemidir. Yeniden hesaplama, performansı aşağıdaki yollarla etkileyebilir:

  • Hesaplanmış sütundaki değerler hesaplanır ve modelde depolanır. Hesaplanan sütundaki değerleri güncelleştirmek için modeli üç işleme komutundan birini kullanarak işlemeniz gerekir: İşlem Tam, İşlem Verileri veya İşlem Yeniden Hesaplama. Formülü her değiştirdiğinizde, formülün sonucu her zaman sütunun tamamı için yeniden hesaplanmalıdır.

  • Ölçüler tarafından hesaplanan değerler, kullanıcı ölçüyü PivotTable'a eklediği veya raporu açtığında dinamik olarak değerlendirilir; kullanıcı bağlamı değiştirdikçe ölçü tarafından döndürülen değerler değişir. Ölçünün sonuçları her zaman bellek içi önbellekteki en son sonuçları yansıtır.

Yeniden hesaplamanın sonucu farklı bir değer döndürmediği ve bu nedenle satırı rol üyeleri tarafından sorgulanabilir veya sorgulanamaz hale getirmediği sürece işleme ve yeniden hesaplamanın satır düzeyi güvenlik formülleri üzerinde hiçbir etkisi olmaz.

Güncelleştirmeler

DAX sürekli geliştirilmektedir. Yeni ve güncelleştirilmiş işlevler , genellikle aylık olan bir sonraki kullanılabilir güncelleştirmeyle yayımlanır. Hizmetler önce güncelleştirilir ve ardından Visual Studio (SSDT) için Power BI Desktop, Excel, SQL Server Management Studio (SSMS) ve Analysis Services proje uzantısı gibi yüklü uygulamalar güncelleştirilir. SQL Server Analysis Services sonraki toplu güncelleştirmeyle güncelleştirilir. Yeni işlevler ilk olarak Power BI Desktop güncelleştirmeleriyle çakışan DAX işlev başvurusunda duyurulur ve açıklanır.

Tüm işlevler SQL Server Analysis Services ve Excel'in önceki sürümlerinde desteklenmez.

Sorun giderme

Formül tanımlarken hata alırsanız, formülde bir bozulma, anlamsal hata veya hesaplama hatası olabilir.

Bozulmamış hataları çözmek en kolayıdır. Bunlar genellikle eksik parantez veya virgül içerir.

Söz dizimi doğru olduğunda diğer hata türü oluşur, ancak başvuruda bulunılan değer veya sütun formül bağlamında anlamlı değildir. Bu tür anlamsal ve hesaplama hataları aşağıdaki sorunlardan herhangi birinden kaynaklanabilir:

  • Formül, var olmayan bir sütuna, tabloya veya işleve başvurur.
  • Formül doğru görünüyor, ancak veri altyapısı verileri getirdiğinde bir tür uyuşmazlığı bulur ve bir hata oluşturur.
  • Formül, bir işleve yanlış sayıda veya türde bağımsız değişken geçirir.
  • Formül, hata içeren farklı bir sütuna başvuruyor ve bu nedenle değerleri geçersiz.
  • Formül, işlenmemiş bir sütuna başvurur; başka bir deyişle, meta verileri vardır ancak hesaplamalar için kullanılacak gerçek veri yoktur.

İlk dört durumda DAX, geçersiz formülü içeren sütunun tamamına bayrak ekler. Son örnekte DAX, sütunun işlenmemiş durumda olduğunu göstermek için sütunu gri gösterir.

Uygulamalar ve araçlar

Power BI Desktop

Power BI Desktop

Power BI Desktop , ücretsiz bir veri modelleme ve raporlama uygulamasıdır. Model tasarımcısı, DAX hesaplama formülleri oluşturmaya yönelik bir DAX düzenleyicisi içerir.

Excel'de Power Pivot

Power Pivot in Excel

Excel'de Power Pivot model tasarımcısı, DAX hesaplama formülleri oluşturmaya yönelik bir DAX düzenleyicisi içerir.

Visual Studio

Visual Studio

Analysis Services projeleri uzantısı (VSIX) ile Visual Studio, Analysis Services model projeleri oluşturmak için kullanılır. Proje uzantısıyla yüklenen tablosal model tasarımcısı bir DAX düzenleyicisi içerir.

SQL Server Management Studio

SQL Server Management Studio

SQL Server Management Studio (SSMS), Analysis Services ile çalışmak için temel bir araçtır. SSMS, hem tablosal hem de çok boyutlu modelleri sorgulamak için bir DAX sorgu düzenleyicisi içerir.

DAX Studio

DAX Studio icon

DAX Studio , Excel'de Analysis Services, Power BI Desktop ve Power Pivot modellerinde DAX sorguları oluşturmaya ve çalıştırmaya yönelik bir açık kaynak istemci aracıdır.

Tabular Editor

Tabular Editor icon

Tablosal Düzenleyici , tablosal model meta verilerindeki her nesnenin sezgisel, hiyerarşik bir görünümünü sağlayan açık kaynak bir araçtır. Tablosal Düzenleyici, ölçüleri, hesaplanan sütunu ve hesaplanan tablo ifadelerini düzenlemenin kolay bir yolunu sağlayan söz dizimi vurgulamalı bir DAX Düzenleyicisi içerir.

Öğrenim kaynakları

DAX'ı öğrenirken, veri modellerinizi oluşturmak için kullanacağınız uygulamayı kullanmak en iyisidir. Excel'deki Analysis Services, Power BI Desktop ve Power Pivot'un tümü, DAX kullanarak ölçü, hesaplanmış sütun ve satır filtresi oluşturma dersleri içeren makale ve öğreticilere sahiptir. Bazı ek kaynaklar şunlardır:

Videolar

Power BI Desktop'ta DAX öğrenme yolunu kullanın.

DaX Için Definitive Guide by Alberto Ferrari and Marco Russo (Microsoft Press). Bu kapsamlı kılavuz, ikinci sürümünde, yeni başlayan veri modelleyicileri ve BI uzmanları için yenilikçi yüksek performanslı teknikler için temel bilgiler sağlar.

The Definitive Guide to DAX book image

Topluluk

DAX, uzmanlıklarını her zaman paylaşmaya istekli canlı bir topluluğa sahiptir. Microsoft Power BI Topluluğu yalnızca DAX, DAX Komutları ve İpuçları için özel bir tartışma forumu vardır.