Excel中有個宏表函數EVALUATE在DAX中也有一個相同名稱的函數EVALUATE,這個函數是DAX查詢必須要用到的,其意義就是生成一個查詢表格。
下面是如何建立查詢:
DAX這個查詢編寫框很弱智,所以要認真才行,輸錯标點符号都不行。
我們開始編寫
第一個查詢:FILTER篩選查詢産品1的銷售記錄
1、FILTER的第一參數是一個表,表的名稱是"銷售記錄";
2、FILTER的第二個參數是一個表達式,銷售記錄表裡産品列裡産品名稱等于"産品1"。
第二個查詢:CALCULATETABLE多條件篩選查詢
1、 CALCULATETABLE的第一參數與FILTER相同,也是"銷售記錄"表;
2、 CALCULATETABLE的第二、三參數是表達式,兩個條件。
篩選姓名=姓名1并且銷售大于等于90的銷售記錄
CALCULATETABLE與FILTER的區别就是可以輸入多條件查詢。
當然,FILTER也能實現多條查詢,不過是要在第二參數中寫複雜一點的表達式:
第三個查詢:ADDCOLUMNS添加列查詢
1、 ADDCOLUMNS第一參數仍然是"銷售記錄"表;
2、 ADDCOLUMNS第二參數是要添加的列的名稱"記錄";
3、 ADDCOLUMNS第三參數是新添加列的計算公式。
ADDCOLUMNS也可以創建多列像這樣:
第四個查詢:SUMMARIZE唯一值查詢或笛卡爾集查詢
看起來有點複雜,我來解釋一下:
1、 SUMMARIZE的第一參數仍然是一張表,隻不過這個表先被處理了一下,本來用"銷售記錄"表就可以查詢,這裡增加了一個要求用TOPN先查詢了一下,排名前十的"銷售記錄"表,就變成了SUMMARIZE的第一參數
2、 SUMMARIZE的第二、三參數是兩列,"姓名"和"産品",産生了一個笛卡爾集;
3、 後面的參數是成對出現的,有點像ADDCOLUMNS的二參和三參,即列名稱和列表達式;
4、 最後ORDER BY排序 DESC:降序/ASC:升序。
第五個查詢:CROSSJOIN笛卡爾集查詢
功能和SUMMARIZE是一樣的,這裡的笛卡爾集使用CROSSJOIN來建立的。
第六個查詢:GENERATE查詢封裝
1、 GENERATE的第一參數是日期唯一值表,VALUES會生成一個日期的唯一值表格;
2、 GENERATE的第二參數是TOPN産生的産品銷售總量前三的一個表格。
GENERATE将這個查詢表格封裝在一起。
第七個查詢:DEFINE MEASURE定義查詢過程中的度量值
定義度量值"銷售彙總",然後用這個度量值替換掉查詢過程中的計算表達式。
這篇介紹了DAX查詢的大部分内容,這個DAX查詢可以直接生成報表,也可以作為中間數據再次被添加到數據模型當中作為數據源,最重要的是這個中間數據是可以随着原始數據變化自動變化的數據源。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!