Aracılığıyla paylaş


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 şunları içerir:

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

  • Sütunlara veya tablolara atıflar. 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 gereken parametreler. 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.

    çoğu DAX işlevi tablo, sütun, ifade ve değer içerebilen bir veya daha fazla bağımsız değişken gerektirir. Ancak, PIgibi 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, PIdeğil her zaman PI() yazmanız gerekir. İşlevleri diğer işlevlerin içine de iç içe yerleştirebilirsiniz.

  • İfadeler. İ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 Sonuç
= 3 3
= "Sales" Satış
= 'Sales'[Amount] Bu formülü Sales tablosunda kullanırsanız, mevcut satırın Sales tablosundaki Amount sütununun değerini alırsınız.
= (0.03 *[Amount])

=0.03 * [Amount]
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 harf duyarsızdır; örneğin, SALES ve Sales 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şlev için giriş olarak bir tablo veya sütun kullandığınızda, genellikle sütun adını belirtmeniz gerekir. Bir sütunun tam nitelikli adı, tablo adının ardından köşeli parantez içinde sütun adı ile gösterilir: örneğin, 'ABD Satışları'[Ürünler]. Aşağıdaki bağlamlarda bir sütuna başvurdığınızda her zaman tam ad gerekir:

  • İşlev için bir bağımsız değişken olarak VALUES

  • Fonksiyonlara argüman olarak ALL veya ALLEXCEPT

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

  • İşlev için bir bağımsız değişken olarak RELATEDTABLE

  • Herhangi bir zaman zekası işlevinin bağımsız değişkeni olarak

Belirtilmemiş sütun adı, yalnızca köşeli parantez içinde yer alan sütun adıdır: örneğin, [Satış Miktarı]. Ö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.

Tablo

  • 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.

Önlem -ler

  • Ö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 bir ölçüye referans verirken ölçü adının önünde tablo adı zorunlu değildir. Ancak, bir ölçü oluşturduğunuzda her zaman ölçü tanımının depolanacağı bir tablo belirtmeniz gerekir.

Sütun

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ütunlar, bir ad çakışmasının çözülmesi gereken durumlar veya sütun adlarının tam olarak belirtilmesi gereken belirli işlevler dışında, ait oldukları temel tabloya başvurulmadan kullanılabilir.

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 başvuru geçersiz olabilir.

Ö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 Yorum
Tablo adı Satış 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 nitelikli sütun adı Satış[Amount] Tablo adı sütun adının önüne gelir ve sütun adı köşeli ayraç içine alınır.
Tam Nitelikli Ölçü Adı Satışlar[Kar] Tablo adı, ölçü adından önce yazılır ve ölçü adı köşeli parantez içine alınır. Belirli bağlamlarda her zaman tam ad gerekir.
Nitelenmemiş sütun adı [Tutar] Nitelenmemiş ad, köşeli parantez 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.
Boşluk içeren tabloda tam nitelikli sütun 'Kanada Satışları'[Miktar] 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üller ve ifadeler tablolarda tek tek değerleri değiştiremez veya ekleyemez.

  • DAXkullanarak 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 birkaç işlev vardır. 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, DAXtarafından desteklenen işleçler listelenmektedir. Tek tek işleçlerin söz dizimi hakkında daha fazla bilgi için bkz. işleçleri.

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

- (çıkarma)

* (çarpma)

/ (bölme)

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

> (büyüktür)

<'dan küçük

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

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

<> (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. DAX bir formülde veri kullandığınızda, DAX başvurulan sütunlardaki veri türlerini ve yazdığınız değerleri 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şlevleribö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 sabiti

Power BI Desktop'ın Ağustos 2021 sürümünden başlayarak, DAX tarih ve tarih saat değerleri dt"YYYY-MM-DD", dt"YYYY-MM-DDThh:mm:ss"veya dt"YYYY-MM-DD hh:mm:ss"biçiminde sabit değer olarak belirtilebilir. Değişmez değer olarak belirtildiğinde, ifadede DATE, TIME, DATEVALUE, ve TIMEVALUE işlevlerini kullanmaya gerek yoktur.

Örneğin, aşağıdaki ifade OrderDate'a göre filtrelemek için DATE ve TIME 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 sabit 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.