Aracılığıyla paylaş


DAX sorguları

Power BI ve Excel gibi raporlama istemcileri, rapordaki görseller veya tabloya eklenen bir alan her görüntülendiğinde DAX sorgu yürütür ve filtre uygulandığında bu DAX sorguları ayarlanır. Power BI Desktop'taki performans çözümleyicisi size bu DAX sorguları gösterebilir ve hatta Power BI Desktop'ın DAX sorgu görünümünde çalıştırabilirsiniz.

Power BI Desktop'ta DAX sorgu görünümünü kullanarak veya Power BI hizmetinde DAX sorguları yazarak, kendi DAX sorgularınızı oluşturabilir ve çalıştırabilirsiniz. Microsoft Fabricile, Masaüstü veya web'in DAX sorgu görünümünde DAX Copilot ile üretkenliğinizi daha da artırabilirsiniz. Power BI araçlarına ek olarak, DAX sorgular, Python kullanılarak anlamsal modellerden veri okumak için semantik bağlantı ile Fabric not defterlerinde çalıştırılabilir ve Power Automate'te de mevcut olan Sorguları Yürütme REST API ile çalıştırılabilir. SQL Server Management Studio (SSMS), Power BI Rapor Oluşturucusugibi diğer araçlar ve DAX Studiogibi açık kaynak araçlar da DAX sorguları oluşturmanıza ve çalıştırmanıza olanak sağlar.

DAX sorgular sonuçları doğrudan aracın içinde bir tablo olarak döndürerek DAX formüllerinizin performansını ölçülerde hızlı bir şekilde oluşturup test etme veya yalnızca anlam modelinizdeki verileri görüntüleme olanağı sağlar. INFO ve INFO.VIEW DAX işlevleri, tablo, sütun, ölçü ve çok daha fazlasının listesi gibi anlamsal modeliniz hakkında bilgi alabilir.

Sorgular hakkında bilgi edinmeden önce DAX temel bilgileri iyi anlamanız önemlidir. Henüz yapmadıysanız, DAXgenel bakışına göz attığınızdan emin olun.

Anahtar kelime -ler

DAX sorgularının, tek bir gerekli anahtar sözcük olan EVALUATEile oluşan basit bir söz dizimi vardır. EVALUATE, çalıştırıldığında bir sonuç tablosu üreten DAX işlevi veya tablo adı gibi bir tablo ifadesinden sonra gelir. Sonuç tablosunun çıkışını veren tablo ifadeleri şunlardır:

  1. DAX, SUMMARIZE, SUMMARIZECOLUMNS, SELECTCOLUMNS, FILTER, UNION, TOPN, ADDCOLUMNSve diğerleri gibi bir tablonun çıktısını veren yaygın DATATABLE işlevleri, sonuç tablosunun çıktısını almak için EVALUATE ile birlikte çalışır.
  2. Modeldeki tablolar, isimle referans verildiğinde, tablodaki verileri gösteren bir sonuç tablosu çıkarmak için EVALUATE ile çalışır. Örneğin, EVALUATE 'Tablo adı' bir DAX sorgusu olarak çalıştırılabilir.
  3. Modeldeki ölçüler veya skaler değer döndüren herhangi bir DAX formülü, küme parantezi içine alındığında bir sonuç tablosu olarak değeri göstermek için EVALUATE ile birlikte çalışır. Örneğin EVALUATE {[Total Sales]} veya EVALUATE {COUNTROWS('Sales')}DAX sorgusu olarak çalıştırılabilir. Bunlar,tablo oluşturucuları olarak adlandırılır.

DAX sorgulara özgü birkaç isteğe bağlı anahtar sözcük vardır: ORDER BY, START AT, DEFINE, MEASURE, VAR, TABLE ve COLUMN.

EVALUATE (Gerekli)

En temel düzeyde DAX sorgu, tablo ifadesi içeren bir EVALUATE deyimidir. En az bir EVALUATE deyimi gereklidir, ancak sorgu herhangi bir sayıda EVALUATE deyimi içerebilir.

EVALUATE Söz Dizimi

EVALUATE <table>

EVALUATE Parametreler

Terim Tanım
table Bir tablo ifadesi.

EVALUATE Örneği

EVALUATE
	'Sales Order'

Satış Siparişi tablosundaki tüm satırları ve sütunları sonuç tablosu olarak döndürür. Bu, TOPN veya FILTERkullanımıyla sınırlandırılabilir ve ORDER BYile sıralanabilir.

Power BI Desktop'ın EVALUATE sorgu görünümünde DAX sorgu için DAX nasıl kullanılacağını gösteren ekran görüntüsü.

ORDER BY (İsteğe bağlı)

İsteğe bağlı ORDER BY anahtar sözcüğü, sorgudaki bir veya daha fazla sütunu veya sorgu sonuçlarını sıralamak için kullanılan ifadeleri tanımlar. Sonucun her satırı için değerlendirilebilecek tüm ifadeler geçerlidir. Sorgudaki herhangi bir sütun da geçerlidir.

Anlam modellerindeki sütun özelliğine göre sıralama, DAX sorgu sonuçlarına uygulanmaz. Bir sütunun modeldeki ay adı gibi farklı bir sütuna göre sıralanması gerekiyorsa, sütuna göre sıralama, DAXkullanılacak ORDER BY sorgusuna da eklenmelidir.

ORDER BY Söz Dizimi

EVALUATE <table>
[ORDER BY {<expression> [{ASC | DESC}]}[, …]]

ORDER BY Parametreler

Terim Tanım
expression Tek bir skaler değer veya DAX sorgusuna dahil edilen sütunu döndüren herhangi bir DAX ifadesi.
ASC (varsayılan) Artan sıralama düzeni.
DESC Azalan sıralama düzeni.

ORDER BY Örneği

EVALUATE
	SUMMARIZECOLUMNS(
		// Group by columns
		'Date'[Month Name],
		'Date'[Month of Year],
		'Product'[Category],

		// Optional filters
		FILTER(
			VALUES('Product'[Category]),
			[Category] = "Clothing"
		),

		// Measures or explicit DAX formulas to aggregate and analyze the data by row
		"Orders", [Orders],
		"Avg Profit per Order", DIVIDE(
			[Total Sales Profit],
			[Orders]
		)
	)

	// DAX queries do not use sort order defined in Power BI, 
	// sort by columns must be included in the DAX query to be used in order by
	ORDER BY 'Date'[Month of Year] ASC

Aylık olarak, ay sırasına göre artan düzende, giyim siparişlerini ve sipariş başına ortalama kârı döndüren bir sonuç tablosu sunar.

Power BI Desktop'ın ORDER BY sorgu görünümünde DAX sorgu için DAX nasıl kullanılacağını gösteren ekran görüntüsü.

TOPN, ORDER BYiçinde belirtilen sıralama düzenine göre döndürülecek belirtilen satır sayısını seçmez. Bunun yerine, TOPN kendi söz dizimiyle, isteğe bağlı olarak, ilk 100 satır döndürülmeden önce bir sıralama belirtir. ORDER BY yalnızca TOPNtarafından döndürülen sonuç tablosunu sıralar.

EVALUATE
	TOPN(
		100,
		'Sales Order',
		// The way the data is sorted before the top 100 rows are selected
		'Sales Order'[SalesOrderLineKey], ASC
	)
	// The way the data is sorted for the results
	ORDER BY
		'Sales Order'[Sales Order] ASC,
		'Sales Order'[Sales Order Line] ASC

SalesOrderLienKey'e göre artan düzende sıralanmış ilk 100 satış siparişini döndürür, ardından sonuçları önce satış siparişine, sonra da satış siparişi satırına göre sıralar.

Power BI Desktop'ın TOPN sorgu görünümünde ORDER BY sorgu için DAX ve DAX nasıl kullanılacağını gösteren ekran görüntüsü.

START AT (İsteğe bağlı)

İsteğe bağlı START AT anahtar sözcüğü bir ORDER BY yan tümcesi içinde kullanılır. Sorgu sonuçlarının başladığı değeri tanımlar.

START AT Söz Dizimi

EVALUATE <table>
[ORDER BY {<expression> [{ASC | DESC}]}[, …]
[START AT {<value>|<parameter>} [, …]]]

START AT Parametreler

Terim Tanım
value Sabit bir değer. İfade olarak kullanılamaz.
parameter @ karakteri ön ekli XMLA ifadesindeki parametrenin adı.

START AT Açıklamalar

START AT bağımsız değişkenlerin ORDER BY yan tümcesindeki sütunlarla birebir karşılığı vardır. START AT yan tümcesinde, ORDER BY yan tümcesine eşit sayıda bağımsız değişken olabilir, ancak daha fazla olamaz. START AT ilk bağımsız değişkeni, ORDER BY sütunlarının 1. sütunundaki başlangıç değerini tanımlar. START AT'nin ikinci bağımsız değişkeni, 1. sütun için ilk değeri karşılayan satırlardaki ORDER BY sütunlarının 2. sütunundaki başlangıç değerini tanımlar.

START AT Örneği

EVALUATE
	'Sales Order'
	ORDER BY 'Sales Order'[Sales Order] ASC
	// Start at this order, orders before this order will not be displayed
	START AT "SO43661"

Satış Siparişi tablosundaki tüm sütunları satış siparişine göre artan düzende, SO43661 başlayarak döndürür. Bu satış siparişinden önceki satırlar sonuç tablosuna dahil değildir.

Power BI Desktop'ın ORDER BY sorgu görünümünde START AT sorgu için DAX ve DAX nasıl kullanılacağını gösteren ekran görüntüsü.

DEFINE (İsteğe bağlı)

İsteğe bağlı DEFINE anahtar sözcüğü, yalnızca sorgu süresi boyunca var olan bir veya daha fazla hesaplanan varlık tanımını tanıtır. EVALUATEaksine, bir DEFINE sorgusunda bir veya daha fazla tanımı olan yalnızca bir DAX bloğu olabilir. DEFINE ilk EVALUATE deyiminden önce olmalıdır ve sorgudaki tüm EVALUATE deyimleri için geçerlidir. Tanımlar değişkenler, ölçüler, tablolar1ve sütunlar1olabilir. Tanımlar, geçerli tanımdan önce veya sonra görünen diğer tanımlara başvurabilir. DEFINE anahtar sözcüğü bir sorguya dahil edilirse en az bir tanım gereklidir.

DEFINE MEASURE, anlamsal modelde yeni ölçüler oluşturmaya veya mevcut ölçüleri düzenlemeye yönelik yaygın bir senaryodur. Ölçü modelde zaten mevcut olduğunda, DAX sorgusu sorguda tanımlanan ölçü DAX formülünü kullanır. Bu, modeli güncelleştirmeden önce ölçüleri DAX sorguyla test etme konusunda yararlıdır.

Belirli bir DEFINE MEASURE sorgusu için model ölçüsü ekleme izninizin olmadığı veya modelde bulunmasına gerek duyulmadığı durumlarda DAX formüllerle ek analizler oluşturmak için DAX da yararlıdır.

DEFINE Söz Dizimi

[DEFINE 
    (
     (MEASURE <table name>[<measure name>] = <scalar expression>) | 
     (VAR <var name> = <table or scalar expression>) |
     (TABLE <table name> = <virtual table definition>) | 
     (COLUMN <table name>[<column name>] = <scalar expression>) | 
    ) + 
]

(EVALUATE <table expression>) +

DEFINE Parametreler

Terim Tanım
Entity MEASURE, VAR, TABLE1veya COLUMN1.
name Ölçü, var, tablo veya sütun tanımının adı. Bu bir ifade olamaz. Adın benzersiz olması gerekmez. Ad yalnızca sorgunun süresi boyunca var olur.
expression Tablo veya skaler değer döndüren herhangi bir DAX ifadesi. İfade tanımlı varlıklardan herhangi birini kullanabilir. Skaler ifadeyi tablo ifadesine dönüştürmeniz gerekiyorsa, ifadeyi {}küme ayracı içeren bir tablo oluşturucusunun içine sarmalama veya tek satırlı tablo döndürmek için ROW() işlevini kullanın.

[1]Dikkat: Sorgu kapsamlı TABLE ve COLUMN tanımları yalnızca iç kullanım içindir. Söz dizimi hatası olmayan bir sorgu için TABLE ve COLUMN ifadeleri tanımlayabilirsiniz ancak bunlar çalışma zamanı hataları oluşturabilir ve önerilmez.

DEFINE Açıklamalar

  • DAX sorguda birden çok EVALUATE deyimi olabilir, ancak yalnızca bir DEFINE deyimi olabilir. DEFINE deyimindeki tanımlar sorgudaki tüm EVALUATE deyimlerine uygulanabilir.

  • DEFINE deyiminde en az bir tanım gereklidir.

  • Sorgu için ölçü tanımları aynı ada sahip model ölçülerini geçersiz kılar, ancak yalnızca sorgu içinde kullanılır. Bunlar model ölçüsünü etkilemez.

  • VAR adların özgün kısıtlamaları vardır. Daha fazla bilgi için bkz. VAR - Parametreler.

DEFINE Örneği

DEFINE
	VAR _firstyear = MIN('Date'[Fiscal Year])
	VAR _lastyear = MAX('Date'[Fiscal Year])
	TABLE 'Unbought products' = FILTER('Product', [Orders] + 0 = 0)
	COLUMN 'Unbought products'[Year Range] = _firstyear & " - " & _lastyear
	MEASURE 'Unbought products'[Unbought products] = COUNTROWS('Unbought products')
	
EVALUATE
	'Unbought products'
	
EVALUATE
	{[Unbought products]}

DAX sorgusunda tanımlanan tabloyu döndürerek, satın alınmamış ürünleri tanımlı değişkenlere göndermede bulunan ek bir sütunla gösterir. Ölçü ayrıca tanımlanır ve satın alınmamış ürünlerin satırlarını saymak için değerlendirilir.

Power BI Desktop'ın DEFINE sorgu görünümünde DAX sorgu için DAX nasıl kullanılacağını gösteren ekran görüntüsü.

DEFINE
	MEASURE 'Pick a sales measure'[Orders] = DISTINCTCOUNT('Sales Order'[Sales Order])
	MEASURE 'Pick a sales measure'[Customers] = CALCULATE(
			COUNTROWS(Customer),
			FILTER(
				'Sales',
				[Orders] > 0
			)
		)
	MEASURE 'Pick a sales measure'[Orders per Customer] = DIVIDE(
			[Orders],
			[Customers],
			0
		)

EVALUATE
	SUMMARIZECOLUMNS(
		'Date'[Fiscal Year],
		"Orders", [Orders],
		"Customers", [Customers],
		"Orders per Customer", [Orders per Customer]
	)

Mali yıla göre sonuçları göstermek için üç tanımlı ölçüleri değerlendiren bir tablo döndürür. Tüm ölçüler modelde de bulunur ve müşteri başına siparişler DAX sorgusunda değiştirilir.

Power BI Desktop'ın DEFINE sorgu görünümünde MEASURE sorgu için DAXDAX nasıl kullanılacağını gösteren ekran görüntüsü.

DAX sorgulardaki parametreler

İyi tanımlanmış bir DAX sorgu deyimi parametrelendirilebilir ve ardından yalnızca parametre değerlerindeki değişikliklerle tekrar tekrar kullanılabilir.

Execute Metodu (XMLA) yönteminde, parametrelerin tanımlanmasına ve bir değer atanmasına izin veren bir Parameters Öğesi (XMLA) koleksiyon öğesi vardır. Koleksiyonda, her Parametre Öğesi (XMLA) öğesi parametrenin adını ve buna bir değeri tanımlar.

Parametrenin adını bir @ karakteriyle ön ekleyerek XMLA parametrelerine başvurun. Söz diziminde bir değere izin verilen herhangi bir yerde, değer parametre çağrısıyla değiştirilebilir. Tüm XMLA parametreleri metin olarak yazılır.

Önemli

Parametreler bölümünde tanımlanan ve <STATEMENT> öğesinde kullanılmayan parametreler XMLA'da hata yanıtı oluşturur. <Parameters> öğesinde kullanılan ve tanımlanmayan parametreler XMLA'da bir hata yanıtı oluşturur.

DAX ifadeleriSUMMARIZECOLUMNS