看了標(biāo)題,可能很多人會心生疑問,比如……
DAX語言是什么?
答:……說來話長,簡而言之,DAX,即數(shù)據(jù)分析表達式語言,是PowerPivot和SQL Server分析服務(wù)表格式的語言,具有強悍而高效的數(shù)據(jù)處理和挖掘能力……
等會,PowerPivot又是什么?
答:準(zhǔn)確的說,我們這里聊的是PowerPivot for Excel,所以,我們這里說PowerPivot是Excel的一個加載項,它可以實施一個快速而強大的內(nèi)存數(shù)據(jù)庫,可以集成來自不同數(shù)據(jù)源的數(shù)據(jù),通過在數(shù)據(jù)之間建立關(guān)系來構(gòu)建數(shù)據(jù)模型,而且它取消 Excel 中的行和列限制,可以處理千萬條數(shù)據(jù)不費吹灰之力……
聽不懂…………真聽不懂……
打個響指,不懂就不懂吧,概念的東西心里過一下有個大概也就行了。
言歸正傳,我們今天聊DAX語言在Excel列表中的查詢應(yīng)用,外甥打燈籠——照舅,還是用栗子來說事。
假設(shè)我們現(xiàn)在有兩份工作簿,一份名為【數(shù)據(jù)源】,一份名為【我的分析】;
其中【數(shù)據(jù)源】工作簿的【銷售表】中存放了如下圖所示的數(shù)據(jù),我們需要在【我的分析】工作簿中對其進行計算處理。
我們知道Excel函數(shù)在處理跨工作簿數(shù)據(jù)時有很大的局限性,當(dāng)被引用數(shù)據(jù)所在的工作簿關(guān)閉時,除了部分引用類函數(shù),很難從中取值,更不用說進一步的數(shù)據(jù)處理與分析了,所以這個問題并不適合采用函數(shù)處理。
你可以使用SQL,或者VBA,再或者DAX。前兩者的方法我們多少分享過,DAX近乎絕跡,今就分享下DAX的常用數(shù)據(jù)查詢語句。
第1步,獲取外部數(shù)據(jù)。
首先,打開【我的分析】工作簿,單擊【數(shù)據(jù)】選項卡下的【現(xiàn)有連接】,再彈出的對話框中選擇【瀏覽更多】,如下圖所示:
尋找到目標(biāo)工作簿(數(shù)據(jù)源),選取目標(biāo)表格后(銷售表),單擊【確定】按鈕,在彈出的【導(dǎo)入數(shù)據(jù)】對話框中,勾選【將此數(shù)據(jù)添加到數(shù)據(jù)模型】。
【數(shù)據(jù)的放置位置】設(shè)置為現(xiàn)有工作表的A1單元格。單擊【確定】按鈕,銷售表的數(shù)據(jù)將會完全讀入到當(dāng)前工作表中,并以“列表”的形式存在。
第2步,編輯DAX語言
右鍵單擊數(shù)據(jù)列表的任意單元格,在彈出的右鍵快捷菜單中,依次單擊【表格】→【編輯DAX】
在彈出的【編輯DAX】對話框中,命令類型選擇【DAX】,即可根據(jù)實際數(shù)據(jù)分析需求,編輯DAX語言。
常用DAX查詢語句如下:
(1) 字段選取。假設(shè)我們只需要獲取【銷售表】的“產(chǎn)品”和“數(shù)量”兩個字段的數(shù)據(jù)。
EVALUATE
SUMMARIZE('銷售表',[產(chǎn)品],[數(shù)量])
(2) 條件查詢。假設(shè)我們只需產(chǎn)品名為“大花”的銷售記錄。
EVALUATE
FILTER('銷售表',[產(chǎn)品]='大花')
(3) 匯總求和。假設(shè)我們需要獲取每件商品的銷售總數(shù)量。
EVALUATE
SUMMARIZE('銷售表',[產(chǎn)品],'總數(shù)量',SUM('銷售表'[數(shù)量]))
(4) 條件求和。假設(shè)我們只需要獲取“祝洪忠”的銷售總數(shù)量。
EVALUATE
SUMMARIZE(FILTER('銷售表',[產(chǎn)品]='祝洪忠' ),[產(chǎn)品],'總數(shù)量',SUM('銷售表'[數(shù)量]))
(5) 匯總計數(shù)。假設(shè)我們需要獲取每件商品的銷售總次數(shù)。
EVALUATE
SUMMARIZE('銷售表',[產(chǎn)品],'總次數(shù)',COUNTROWS('銷售表'))
(6) 條件計數(shù)。假設(shè)我們只需要獲取“看見星光”的銷售總次數(shù)。
EVALUATE
SUMMARIZE(FILTER('銷售表',[產(chǎn)品]='看見星光' ),[產(chǎn)品],'總次數(shù)',COUNTROWS('銷售表'))
(7) 名次查詢。假設(shè)我們只需要獲取銷售總額前三名的數(shù)據(jù),并按降序排列。
EVALUATE
SUMMARIZE(TOPN(3,'銷售表',CALCULATE(SUM('銷售表'[總價]))),[產(chǎn)品],[總價]) ORDER BY [總價] DESC
(8) 去重查詢。假設(shè)我們只需要提取去重復(fù)的產(chǎn)品名稱。
EVALUATE
SUMMARIZE('銷售表',[產(chǎn)品])
未完,待補,下次再聊。
嗯,我們下次聊DAX語言在POWERPIVOT數(shù)據(jù)建模和分析中的常用語句,哈哈,別緊臟。
拱手再見,祝安康,祝涼爽。
圖文制作:看見星光