DAX söz dizimi

Bu makalede, DAX formül ifade dili için söz dizimi ve gereksinimler açıklanmaktadır.

Söz dizimi gereksinimleri

DAX formülü her zaman eşittir işaretiyle (=) başlar. Eşittir işaretinden sonra, skaler olarak değerlendirilen herhangi bir ifadeyi veya skaler değere dönüştürülebilen bir ifade sağlayabilirsiniz. Bunlar aşağıdakileri içerir:

  • Skaler sabit veya skaler işleç kullanan ifade (+,-,*,/,>=,...,&, ...)

  • Sütunlara veya tablolara başvurular. DAX dili her zaman işlevlerin girişi olarak tabloları ve sütunları kullanır, hiçbir zaman bir dizi veya rastgele değer kümesi kullanmaz.

  • İfadenin parçası olarak sağlanan işleçler, sabitler ve değerler.

  • bir işlevin sonucu ve gerekli bağımsız değişkenleri. Bazı DAX işlevleri skaler yerine tablo döndürür ve tabloyu değerlendiren ve skaler döndüren bir işleve sarmalanmalıdır; tablo tek sütunlu, tek satırlı bir tablo değilse, skaler değer olarak değerlendirilir.

    DaX işlevlerinin çoğu tablo, sütun, ifade ve değer içerebilen bir veya daha fazla bağımsız değişken gerektirir. Ancak, PI gibi bazı işlevler herhangi bir bağımsız değişken gerektirmez, ancak null bağımsız değişkeni belirtmek için her zaman parantez gerektirir. Örneğin, her zaman PI() yazmanız gerekir, PI değil. İşlevleri diğer işlevlerin içine de iç içe yerleştirebilirsiniz.

  • Ifa -de. İfade aşağıdakilerden herhangi birini veya tümünü içerebilir: işleçler, sabitler veya sütunlara başvurular.

Örneğin, aşağıdakilerin tümü geçerli formüllerdir.

Formül Result
= 3 3
= "Satışlar" Satışlar
= 'Sales'[Amount] Bu formülü Sales tablosunda kullanırsanız, geçerli satırın Sales tablosundaki Amount sütununun değerini alırsınız.
= (0,03 *[Tutar])

=0,03 * [Tutar]
Geçerli tablonun Amount sütunundaki değerin yüzde üçü.

Bu formül yüzdeyi hesaplamak için kullanılabilse de, tabloya biçimlendirme uygulamadığınız sürece sonuç yüzde olarak gösterilmez.
= PI() Pi sabitinin değeri.

Formüller nasıl kullanıldıklarına bağlı olarak farklı davranabilir. Formülde kullandığınız verilerin, hesaplamada kullanılabilecek diğer verilerden nasıl kaynaklandığını ve bağlamı her zaman bilmeniz gerekir.

Adlandırma gereksinimleri

Veri modeli genellikle birden çok tablo içerir. Tablolar ve sütunları birlikte bellek içi analiz altyapısında (VertiPaq) depolanan bir veritabanı oluşturur. Bu veritabanında tüm tabloların benzersiz adları olmalıdır. Sütunların adları da her tablo içinde benzersiz olmalıdır. Tüm nesne adları büyük/küçük harfe duyarlı değildir; örneğin, SATIŞ ve Satış adları aynı tabloyu temsil eder.

Mevcut bir veri modeline eklediğiniz her sütun ve ölçü belirli bir tabloya ait olmalıdır. Sütunu içeren tabloyu örtük olarak, bir tablo içinde hesaplanmış sütun oluşturduğunuzda veya bir ölçü oluşturduğunuzda ve ölçü tanımının depolanması gereken tablonun adını belirttiğinizde açıkça belirtirsiniz.

Bir işleve giriş olarak tablo veya sütun kullandığınızda, genel olarak sütun adını nitelemeniz gerekir. Sütunun tam adı tablo adıdır ve ardından köşeli ayraçlar içindeki sütun adıdır: örnekler için, 'ABD Satışları'[Ürünler]. Aşağıdaki bağlamlarda bir sütuna başvurdığınızda her zaman tam ad gerekir:

  • işlevine bağımsız değişken olarak VALUES

  • ALL veya ALLEXCEPT işlevlerine bağımsız değişken olarak

  • İşlevler için bir filtre bağımsız değişkeninde CALCULATE veya CALCULATETABLE

  • RELATEDTABLE işlevine bağımsız değişken olarak

  • Herhangi bir akıllı zaman gösterimi işlevinin bağımsız değişkeni olarak

Nitelenmemiş sütun adı yalnızca köşeli ayraç içine alınmış sütunun adıdır: örneğin, [Satış Tutarı]. Örneğin, geçerli tablonun aynı satırından bir skaler değere başvururken, nitelenmemiş sütun adını kullanabilirsiniz.

Tablonun adında boşluklar, ayrılmış anahtar sözcükler veya izin verilmeyen karakterler varsa, tablo adını tek tırnak içine almanız gerekir. Ayrıca, yerel ayarınızın karakter kümesini destekleyip desteklemediğinden bağımsız olarak, ad ANSI alfasayısal karakter aralığının dışında karakterler içeriyorsa tablo adlarını tırnak içine almanız gerekir. Örneğin, 'Таблица' gibi Kiril karakterleriyle yazılmış tablo adlarını içeren bir çalışma kitabı açarsanız, tablo adı boşluk içermese bile tırnak içine alınmalıdır.

Not

Sütunların tam adlarını girmeyi kolaylaştırmak için formül düzenleyicisindeki Otomatik Tamamlama özelliğini kullanın.

Tablolar

  • Sütun geçerli tablodan farklı bir tablodan olduğunda tablo adları gereklidir. Tablo adları veritabanında benzersiz olmalıdır.

  • Tablo adları boşluk, başka özel karakterler veya İngilizce olmayan alfasayısal karakterler içeriyorsa tek tırnak içine alınmalıdır.

Ölçümler

  • Ölçü adları her zaman köşeli ayraç içinde olmalıdır.

  • Ölçü adları boşluk içerebilir.

  • Her ölçü adı bir model içinde benzersiz olmalıdır. Bu nedenle, mevcut ölçüye başvururken ölçü adının önünde tablo adı isteğe bağlıdır. Ancak, bir ölçü oluşturduğunuzda her zaman ölçü tanımının depolanacağı bir tablo belirtmeniz gerekir.

Sütunlar

Sütun adları bir tablo bağlamında benzersiz olmalıdır; ancak, birden çok tabloda aynı adlara sahip sütunlar olabilir (kesinleştirme tablo adıyla birlikte gelir).

Genel olarak, sütun adlarının tam olarak nitelenmesi gereken belirli işlevlerle veya çözümlenecek bir ad çakışması olması dışında sütunlara ait oldukları temel tabloya başvurulmadan başvurulabilir.

Ayrılmış anahtar sözcükler

Tablo için kullandığınız ad Analysis Services ayrılmış anahtar sözcüğüyle aynıysa bir hata oluşur ve tabloyu yeniden adlandırmanız gerekir. Ancak, nesne adı köşeli ayraç (sütunlar için) veya tırnak işaretleri (tablolar için) içine alınmışsa, nesne adlarında anahtar sözcükler kullanabilirsiniz.

Not

Tırnak işaretleri, uygulamaya bağlı olarak birkaç farklı karakterle temsil edilebilir. Dış belgeden veya Web sayfasından formül yapıştırırsanız, tırnak işaretlerini açmak ve kapatmak için kullanılan karakterin ASCII kodunu denetlediğinizden emin olun ve aynı olduklarından emin olun. Aksi takdirde DAX, simgeleri tırnak işareti olarak tanıyamayabilir ve bu da başvuruyu geçersiz hale getirir.

Özel karakterler

Tablo, sütun veya ölçü adlarında aşağıdaki karakterler ve karakter türleri geçerli değildir:

  • Baştaki veya sondaki boşluklar; boşluklar ad sınırlayıcıları, köşeli ayraçlar veya tek kesme işaretleri içine alınmadığı sürece.

  • Denetim karakterleri

  • Nesne adlarında geçerli olmayan aşağıdaki karakterler:

    .,;':/\*|? &%$!+=()[]{}<>

Nesne adları örnekleri

Aşağıdaki tabloda bazı nesne adlarının örnekleri gösterilmektedir:

Nesne Türleri Örnekler Açıklama
Tablo adı Satışlar Tablo adı boşluk veya başka özel karakterler içermiyorsa, adın tırnak içine alınması gerekmez.
Tablo adı 'Kanada Satışları' Ad boşluklar, sekmeler veya başka özel karakterler içeriyorsa, adı tek tırnak içine alın.
Tam sütun adı Sales[Amount] Tablo adı sütun adının önüne gelir ve sütun adı köşeli ayraç içine alınır.
Tam ölçü adı Sales[Profit] Tablo adı ölçü adından önce gelir ve ölçü adı köşeli ayraç içine alınır. Belirli bağlamlarda her zaman tam ad gerekir.
Nitelenmemiş sütun adı [Miktar] Nitelenmemiş ad, köşeli ayraç içinde yalnızca sütun adıdır. Nitelenmemiş adı kullanabileceğiniz bağlamlar, aynı tablo içindeki bir hesaplanmış sütundaki veya aynı tablo üzerinde tarama yapılan bir toplama işlevindeki formülleri içerir.
Tablodaki boşluklu tam sütun 'Canada Sales'[Qty] Tablo adı boşluklar içerdiğinden tek tırnak içine alınmalıdır.

Diğer kısıtlamalar

Her işlev için gereken söz dizimi ve gerçekleştirebileceği işlem türü, işleve bağlı olarak büyük ölçüde değişir. Ancak genel olarak aşağıdaki kurallar tüm formüller ve ifadeler için geçerlidir:

  • DAX formülleri ve ifadeleri tablolarda tek tek değerleri değiştiremez veya ekleyemez.

  • DAX kullanarak hesaplanan satırlar oluşturamazsınız. Yalnızca hesaplanmış sütunlar ve ölçüler oluşturabilirsiniz.

  • Hesaplanan sütunları tanımlarken işlevleri herhangi bir düzeye iç içe yerleştirebilirsiniz.

  • DAX,tablo döndüren çeşitli işlevlere sahiptir. Genellikle, bu işlevler tarafından döndürülen değerleri giriş olarak bir tablo gerektiren diğer işlevlere giriş olarak kullanırsınız.

DAX işleçleri ve sabitleri

Aşağıdaki tabloda DAX tarafından desteklenen işleçler listelenmektedir. Tek tek işleçlerin söz dizimi hakkında daha fazla bilgi için bkz . DAX işleçleri.

İşleç türü Simge ve kullanım
Parantez işleci () öncelik sırası ve bağımsız değişkenleri gruplandırma
Aritmetik işleçler + (toplama)

- (çıkarma/

işareti)

* (çarpma)

/ (bölme)

^ (üs)
Karşılaştırma işleçleri = (eşittir)

> (büyüktür)

< (küçüktür)

>= (büyüktür veya eşittir)

<= (küçük veya eşittir)

<> (eşit değildir)
Metin birleştirme işleci & (birleştirme)
Mantıksal işleçler & (ve)

|| (veya)

Veri türleri

DAX formülünde kullandığınız bir sütunun veya değerin veri türünü atamanız, dönüştürmeniz veya başka bir şekilde belirtmeniz gerekmez. Bir DAX formülünde veri kullandığınızda, DAX başvurulan sütunlarda ve yazdığınız değerlerin veri türlerini otomatik olarak tanımlar ve belirtilen işlemi tamamlamak için gerektiğinde örtük dönüştürmeler gerçekleştirir.

Örneğin, bir tarih değerine sayı eklemeyi denerseniz, altyapı işlemi işlevi bağlamında yorumlar ve sayıları ortak bir veri türüne dönüştürür ve ardından sonucu istenen biçimde bir tarih olarak sunar.

Ancak, başarıyla dönüştürülebilecek değerlerde bazı sınırlamalar vardır. Bir değer veya sütun geçerli işlemle uyumsuz bir veri türüne sahipse, DAX bir hata döndürür. Ayrıca DAX, bir veri modeline aktardığınız mevcut verilerin veri türünü açıkça değiştirmenize, dönüştürmenize veya atamanıza olanak sağlayan işlevler sağlamaz.

Önemli

DAX, değişken veri türünün kullanımını desteklemez. Bu nedenle, verileri bir veri modeline yüklediğinizde veya içeri aktardığınızda, her sütundaki verilerin genellikle tutarlı bir veri türünde olması beklenir.

Bazı işlevler dizeler de dahil olmak üzere skaler değerler döndürürken, diğer işlevler sayılarla, hem tamsayılarla hem de gerçek sayılarla ya da tarih ve saatlerle çalışır. Her işlev için gereken veri türü, DAX işlevleri bölümünde açıklanmıştır.

İşlevin bağımsız değişkeni olarak birden çok sütun ve birden çok veri satırı içeren tabloları kullanabilirsiniz. Bazı işlevler ayrıca bellekte depolanan ve diğer işlevler için bağımsız değişken olarak kullanılabilen tablolar döndürür.

Tarih ve saat

DAX, Microsoft SQL Server tarafından kullanılan tarih saat veri türünü kullanarak tarih ve saat değerlerini depolar. Datetime biçimi, Tarih değerlerinin 30 Aralık 1899'dan bu yana gün sayısını temsil eden tamsayı bölümüne karşılık geldiği kayan noktalı bir sayı kullanır. Saat değerleri, saat, dakika ve saniye değerlerinin günün ondalık kesirleriyle temsil edildiği tarih değerinin ondalık bölümüne karşılık gelir. DAX tarih ve saat işlevleri bağımsız değişkenleri örtük olarak tarih saat veri türüne dönüştürür.

Not

DAX tarafından desteklenen tam maksimum DateTime değeri 31 Aralık 9999 00:00:00'dır.

Tarih ve saat değişmez değeri

Power BI Desktop'ın Ağustos 2021 sürümünden başlayarak, DAX tarih ve tarih saat değerleri , veya dt"YYYY-MM-DDThh:mm:ss"dt"YYYY-MM-DD hh:mm:ss"biçiminde dt"YYYY-MM-DD"değişmez değer olarak belirtilebilir. Değişmez değer olarak belirtildiğinde ifadede TARİh, SAAT, TARİhSAYISI, ZAMANSAYISI işlevlerinin kullanılması gerekmez.

Örneğin, aşağıdaki ifade OrderDate'a göre filtrelemek için TARİh ve SAAT işlevlerini kullanır:

EVALUATE
FILTER (
        FactInternetSales,
        [OrderDate] > (DATE(2015,1,9) + TIME(2,30,0)) &&[OrderDate] < (DATE(2015,12,31) + TIME(11,59,59))
)

Aynı filtre ifadesi değişmez değer olarak belirtilebilir:

EVALUATE
FILTER (
        FactInternetSales,
        [OrderDate] > dt"2015-1-9T02:30:00" && [OrderDate] < dt"2015-12-31T11:59:59"
)

Not

DAX tarih ve tarih saat türündeki değişmez değer biçimi, Excel'de Power BI Desktop, Analysis Services ve Power Pivot'un tüm sürümlerinde desteklenmez. Yeni ve güncelleştirilmiş DAX işlevleri genellikle ilk olarak Power BI Desktop'ta kullanıma sunulur ve daha sonra Excel'de Analysis Services ve Power Pivot'a eklenir.