第3章 使用基本表函數(shù)
3.1 表函數(shù)簡介
3.2 EVALUATE語法簡介
3.3 理解FILTER
3.4 ALL和ALLEXCEPT
3.5 了解VALUES,DISTINCT和空行
3.6 將表用作標(biāo)量值
3.7 ALLSELECTED介紹
EVALUATE語法簡介
查詢工具(例如DAX Studio)對于編寫復(fù)雜的表表達(dá)式很有用。在這種情況下,用于檢查表表達(dá)式結(jié)果的公共語句是EVALUATE:
EVALUATE
FILTER (
'Product',
'Product'[Unit Price] > 3000
)
可以在任何執(zhí)行DAX查詢的工具(DAX Studio,Microsoft Excel,SQL Server Management Studio,Reporting Services等)中執(zhí)行上述DAX查詢。DAX查詢是返回表的DAX表達(dá)式,該表與EVALUATE語句一起使用。EVALUATE具有復(fù)雜的語法,我們將在第13章中全面介紹。這里,我們僅介紹常用的EVALUATE語法,如下所示:
[DEFINE { MEASURE <tableName>[<name>] = <expression> }]
EVALUATE <table>
[ORDER BY {<expression> [{ASC | DESC}]} [, ...]]
開頭的DEFINE MEASURE部分可用于定義查詢本地的度量值。當(dāng)我們調(diào)試公式時(shí),它變得很有用,因?yàn)槲覀兛梢远x局部度量值,對其進(jìn)行測試,在達(dá)到預(yù)期效果時(shí)將其部署到模型中。大多數(shù)語法是可選的,最簡單的查詢可以取得一個(gè)現(xiàn)有表中的所有行和列,如圖3-1所示:
ORDER BY子句控制排序順序:
EVALUATE
FILTER (
'Product',
'Product'[Unit Price] > 3000
)
ORDER BY
'Product'[Color],
'Product'[Brand] ASC,
'Product'[Class] DESC
請注意,模型中定義的“按列排序”屬性不會影響DAX查詢中的排序。EVALUATE指定的排序列只能使用結(jié)果中包含的列。因此,生成動態(tài)DAX查詢的客戶端應(yīng)讀取模型元數(shù)據(jù)中的“按列排序”屬性及查詢中的排序列,然后生成相應(yīng)的ORDER BY條件。
評估本身并不是一個(gè)強(qiáng)大的語句。使用DAX進(jìn)行查詢的功能來自使用該語言提供的許多DAX表函數(shù)的功能。在下一部分中,您將學(xué)習(xí)如何通過使用和組合不同的表函數(shù)來創(chuàng)建高級計(jì)算。