DAX查詢?nèi)腴T:DAX Studio介紹

DAX除了進(jìn)行計(jì)算外携兵,更可以直接作為一門查詢語言疾掰,如果說SQL是IT的數(shù)據(jù)庫查詢語言,那么DAX就可以認(rèn)為是分析師的查詢語言徐紧。理解了DAX查詢静檬,意味著開始真正駕馭DAX哪怔。

你知道透視表就是等效的DAX查詢嗎

DAX在使用上画切,分成兩大類糙麦,一類以DAX計(jì)算為核心嬉橙,另一類以DAX查詢?yōu)楹诵墓杓薄1疚氖菍笳哌M(jìn)行介紹的芳撒。
在之前的篇章禀梳,我們提到過:DAX計(jì)算就是在建立了關(guān)系的多個表構(gòu)成的數(shù)據(jù)模型上覆致,DAX通過篩選愈涩,找到需要進(jìn)行計(jì)算的一個數(shù)據(jù)模型的子集望抽,然后進(jìn)行迭代處理后,完成聚合型計(jì)算履婉。所以煤篙,一般而言,分析師用DAX計(jì)算關(guān)注某個值(度量值)谐鼎,而分析師常辰Ⅲ。可能需要的不僅僅是一個值趣惠,而是一個結(jié)果表。例如:不同類別及子類別下的銷售額身害。

當(dāng)然這個需求味悄,可以用透視表實(shí)現(xiàn),那相當(dāng)于借助了Excel界面的拖拽來生成一個表塌鸯,在具體的值位置侍瑟,使用了DAX的度量值,這讓我們得到了透視表結(jié)果丙猬。

如下所示:

這是Excel透視表默認(rèn)的視圖涨颜,它很簡潔,稍加變化該透視表等效于:

可以使用如下的DAX查詢實(shí)現(xiàn)等效的結(jié)果:

EVALUATE
FILTER (
    ADDCOLUMNS (
        SELECTCOLUMNS (
            GENERATE ( DimProductCategory, RELATEDTABLE ( DimProductSubcategory ) ),
            "Category", [ProductCategoryName],
            "SubCategory", [ProductSubCategoryName]
        ),
        "銷售額", [銷售額]
    ),
    [銷售額] <> BLANK ()
)

結(jié)果如下:

可以看到這與透視表的結(jié)果是完全等效一致的茧球。

注:在Excel中使用透視表對數(shù)據(jù)模型進(jìn)行操作時庭瑰,實(shí)際使用的是MDX查詢。但由于 MDX查詢 和 DAX查詢 具有等效性抢埋,相當(dāng)于 透視表操作 等效于 MDX查詢 等效于 DAX查詢弹灭。關(guān)于MDX查詢不在這里討論的范圍。

不難發(fā)現(xiàn):

  • 透視表可以實(shí)現(xiàn)的數(shù)據(jù)視圖揪垄,使用DAX查詢都可以做到穷吮。
  • 一些更復(fù)雜的數(shù)據(jù)視圖,很難用透視表實(shí)現(xiàn)饥努,而DAX查詢也可以做到捡鱼。
  • 就使用難度而言,透視表是拖拽式的酷愧,而DAX查詢則要學(xué)習(xí)DAX語言驾诈。
  • 透視表面向普通辦公場景,而DAX查詢則是分析師專屬伟墙。

作為數(shù)據(jù)分析師翘鸭,我們必然是要掌握DAX查詢的,以便獲得DAX的全部能力戳葵,當(dāng)然就乓,這不是拖拖拽拽就能實(shí)現(xiàn)的,讓我們一起開始學(xué)習(xí)吧拱烁。

進(jìn)入DAX查詢前的準(zhǔn)備

要學(xué)習(xí)DAX查詢生蚁,首先應(yīng)該做好如下準(zhǔn)備:

  • 了解并能初步使用Power Pivot。
  • 了解并能初步使用Power BI Desktop戏自。
  • 大致了解Power Pivot與Power BI Desktop在DAX方面的共性邦投。

更準(zhǔn)確地說,需要理解DAX計(jì)算并至少在Excel Power Pivot或Power BI Desktop中實(shí)踐過至少以下一種:

  • 自行創(chuàng)建度量值擅笔,并在Excel Power Pivot中借助透視表工具和度量值進(jìn)行結(jié)合實(shí)踐志衣。
  • 自行創(chuàng)建度量值屯援,并在Power BI Desktop中借助可視化化工具和度量值進(jìn)行結(jié)合實(shí)踐。

理解DAX查詢的對象

所謂查詢念脯,那么一定具體指的是用戶從A處按照某需求查詢出結(jié)果B的過程狞洋。例如,我們熟知的SQL查詢是用戶從數(shù)據(jù)庫(兼容SQL查詢標(biāo)準(zhǔn))按照業(yè)務(wù)需求(如:select * from user t where t.age > 20)查詢出結(jié)果(大于20歲的用戶)绿店。
DAX查詢從這個意義上講吉懊,是完全一致的。DAX查詢假勿,是分析師從數(shù)據(jù)模型(內(nèi)置DAX引擎)按照業(yè)務(wù)需求查詢出結(jié)果的過程借嗽。

具備內(nèi)置DAX引擎的數(shù)據(jù)模型目前有:

  • Excel 數(shù)據(jù)模型(歸并在Power Pivot主題下)
  • Power BI / Power BI Desktop 數(shù)據(jù)模型
  • SSAS服務(wù)

關(guān)于SSAS服務(wù)的內(nèi)容超過自助商務(wù)智能的范疇,不在討論范圍之內(nèi)转培。

下面分別說明如何在Excel及Power BI Desktop下展開DAX查詢恶导。

DAX Studio:DAX查詢的專屬工具

DAX Studio是一個專門編寫DAX查詢的免費(fèi)工具”ぞ啵可以在這里獲燃孜:http://daxstudio.codeplex.com/
下載安裝啟動后,可以看到:


這里提示要連接到的數(shù)據(jù)模型羽戒,有三種選擇,這與之前介紹的內(nèi)置DAX引擎的三種數(shù)據(jù)模型相一致虎韵。

需要注意的是:

  • DAX Studio與Excel 數(shù)據(jù)模型的連接需要從Excel里啟動DAX Studio易稠,第一項(xiàng)可用。
  • 如果當(dāng)前本地打開了Power BI Destop包蓝,則第二項(xiàng)可用驶社。

連接后DAX Studio顯示主界面如下:

各主要板塊大致如下:

借助DAX Studio,我們可以完成:

  • DAX查詢編寫
  • DAX查詢/DAX代碼格式化
  • 數(shù)據(jù)模型元數(shù)據(jù)查看
  • 當(dāng)前DAX引擎支持函數(shù)查看
  • 當(dāng)前DAX引擎DMV
  • DAX查詢結(jié)果查看
  • DAX查詢結(jié)果數(shù)據(jù)導(dǎo)出
  • DAX引擎運(yùn)行監(jiān)控(為代碼優(yōu)化做準(zhǔn)備)
  • DAX引擎時間跟蹤
  • DAX代碼性能優(yōu)化

也就是說测萎,編寫DAX查詢僅僅是DAX Studio支持的基礎(chǔ)功能亡电,這也是本文要介紹的主題,由于DAX Studio的深度使用硅瞧,將在后續(xù)的文章中單獨(dú)說明份乒。

在Excel中使用DAX查詢

在Excel中使用DAX查詢必須滿足一個前提,那就是:Excel已經(jīng)使用了數(shù)據(jù)模型腕唧。

安裝DAX Stuido以后或辖,Excel會出現(xiàn)一個新的選項(xiàng)卡,如下:

必須在這里點(diǎn)擊DAX Studio才能打開DAX Studio與Excel數(shù)據(jù)模型的連接枣接。

注:DAX引擎內(nèi)置在Excel進(jìn)程里颂暇,所以必須從Excel中打開DAX Studio以匹配該進(jìn)程。

如下所示:

可以看到但惶,連接的Excel數(shù)據(jù)模型顯示為:Microsoft_SQLServer_AnalysisService耳鸯,這進(jìn)一步說明Excel內(nèi)置了SSAS引擎湿蛔。

DAX查詢的語法是以 EVALUATE 開頭的返回表的DAX表達(dá)式。那最簡單的可以直接用一個已有的表县爬,如下:

為了把這個結(jié)果返回到Excel阳啥,可以設(shè)置DAX查詢的輸出位置,如下:

這個加載到Excel中的表與其他表的不同在于捌省,它是DAX查詢返回的表苫纤,如下:

可以看到這個表格帶有【編輯DAX】的菜單,如下:

看到這里纲缓,你應(yīng)該意識到卷拘,這基本上屬于開啟了Excel的一個隱藏功能,而且是一個威力非常巨大的隱藏功能祝高,你可以在這里編寫任意的DAX查詢以駕馭Excel數(shù)據(jù)模型栗弟。而編寫DAX的任務(wù)可以完全在DAX Studio中完成,只需要把結(jié)果鏈接輸出到這里或者把測試滿足預(yù)期的DAX查詢代碼粘貼至此即可工闺。

作為Excel透視表用戶乍赫,也應(yīng)該能意識到此時你將擺脫以前Excel數(shù)據(jù)透視表給你帶來的任何限制,你可以實(shí)現(xiàn)任何你想象到的任務(wù)只有你具有這方面的數(shù)據(jù)即可陆蟆。

我們完成本文開頭的代碼雷厂,填入:

這就得到了本文一開始等效于透視表的結(jié)果。

這里我們并不用特別在意該段DAX代碼的叠殷,這需要知道DAX查詢可以實(shí)現(xiàn)的效果改鲫。關(guān)于DAX查詢?nèi)绾沃鸩骄帉憣儆诹硗獾莫?dú)立話題。

如果沒有安裝DAX Studio林束,在Excel中其實(shí)還有一種打開DAX查詢這項(xiàng)隱藏技術(shù)的門像棘,操作步驟如下:
【步驟一】從外部獲取數(shù)據(jù),一般是Power Query獲取數(shù)據(jù)并加載到數(shù)據(jù)模型壶冒。(如:表DimProductCategory)缕题。
【步驟二】從【現(xiàn)有連接】打開表,如下:


下一步:

點(diǎn)擊【打開】:

選擇數(shù)據(jù)在工作簿的顯示方式為【表】以及數(shù)據(jù)放置位置為【新工作表】胖腾,如下:

這種表就是使用DAX查詢得到的表烟零,如下:

此時便可以自由地編寫DAX查詢了。

注意:盡量用剛才的方式加載一個小表作為占位符表胸嘁,然后再修改DAX查詢瓶摆。如果選擇了一個FactSales這樣幾百萬行的表,Excel是無法加載進(jìn)工作表的性宏,當(dāng)然大表也會占據(jù)更多時間群井。

至此,已經(jīng)借助DAX Studio或從Excel原生開啟了DAX查詢的序幕毫胜。接下來就完全是DAX查詢的階段了书斜。

在Power BI Desktop中使用DAX查詢

在Power BI Desktop中使用DAX查詢相比在Excel使用DAX查詢更加簡單诬辈,因?yàn)槭紫饶憧吹降囊磺性赑ower BI Desktop拖拽生成的圖形元素背后,都是DAX查詢的結(jié)果荐吉,類似于本文開篇透視表的結(jié)果焙糟。

也就是說,不管是餅圖样屠,條形圖或是地圖等穿撮,背后用到的數(shù)據(jù)都是DAX查詢的結(jié)果,當(dāng)然Power BI Desktop做了數(shù)據(jù)量級的限制以確保圖形的合理顯示痪欲。

Power BI Desktop圖形元素自動生成DAX查詢不在本文討論范圍之內(nèi)悦穿,后續(xù)再說明。

首先Power BI Desktop直接給出了可以返回表的機(jī)會业踢,也就是直接可以編寫DAX查詢?nèi)缦拢?/p>

當(dāng)然栗柒,Power BI Desktop也可以與DAX Studio相連接,如下:

只要Power BI Desktop是打開的知举,隨后再打開DAX Studio就可以選擇Power BI Desktop進(jìn)行連接瞬沦。連接后如下所示:

略加觀察不難發(fā)現(xiàn),這里的連接是具體的Power BI Desktop文件名稱雇锡」渥辏回憶前述的DAX Studio連接Excel的方式是不顯示具體文件名稱的。因?yàn)槊烫幔琍ower BI Desktop會開啟獨(dú)立的SSAS進(jìn)程绣的。

強(qiáng)調(diào)這兩點(diǎn)是在引導(dǎo)一種對于分析師更強(qiáng)大的組合使用模式,那就是:分析師可以直接使用Power BI Desktop作為本機(jī)的分析服務(wù)器欲账。而DAX查詢將最大化地發(fā)揮分析師的能力。

分析師可以在DAX Studio中完成DAX 查詢的調(diào)試后芭概,放入Power BI Desktop構(gòu)建獨(dú)立的表赛不。

開始在DAX Studio中編寫DAX查詢

在DAX Studio中編寫DAX查詢是以EVALUATE開始的,可以在DAX Studio中實(shí)現(xiàn)對任意DAX表達(dá)式的測試罢洲,這不僅有利于完全理解DAX表達(dá)式的運(yùn)行以深入學(xué)習(xí)DAX踢故,也可以完成非常復(fù)雜的表達(dá)式的編寫和調(diào)試工作。

測試返回表的表達(dá)式:

DAX查詢可以測試返回表的DAX表達(dá)式

EVALUATE
ADDCOLUMNS ( 'Product Category', "Total", [Sales Amount] )

返回:

只是希望返回類別和銷售額惹苗?如何進(jìn)一步特定化DAX查詢殿较,將在后續(xù)進(jìn)一步說明。

測試返回值的表達(dá)式:

EVALUATE
ROW( "Total", [Sales Amount] )

返回:

由于DAX查詢必須返回表桩蓉,可以用ROW來構(gòu)建一個表淋纲,但實(shí)質(zhì)是為了測試一個值。

總結(jié)

通過本文的介紹院究,我們可以知道:

  • Excel透視表可以用等效的DAX查詢表示
  • DAX查詢可以表示出任意復(fù)雜的查詢結(jié)果洽瞬,這種能力遠(yuǎn)遠(yuǎn)超過Excel透視表本身
  • DAX Studio是編寫DAX查詢的強(qiáng)大武器
  • DAX Studio除了編寫DAX查詢外本涕,還具備其他更多特性
  • 理解如何借助DAX Studio完成DAX查詢與Excel的連接
  • 理解如何直接在原生Excel中實(shí)現(xiàn)DAX查詢
  • 理解如何在Power BI Desktop中進(jìn)行DAX查詢
  • 理解如何借助DAX Studio測試DAX查詢(返回表或返回值)

現(xiàn)在,趕快下載DAX Studio開啟DAX查詢的無限可能吧伙窃。
在你完成一定探索后菩颖,會發(fā)現(xiàn)一些問題,相信在后續(xù)關(guān)于DAX Studio及DAX查詢的文章中會找到你要的答案为障。

如果你喜歡本文晦闰,歡迎在朋友圈進(jìn)行分享。

留言后下載本文使用示例數(shù)據(jù)文件鳍怨。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末呻右,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子京景,更是在濱河造成了極大的恐慌窿冯,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,013評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件确徙,死亡現(xiàn)場離奇詭異醒串,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)鄙皇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評論 2 382
  • 文/潘曉璐 我一進(jìn)店門芜赌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人伴逸,你說我怎么就攤上這事缠沈。” “怎么了错蝴?”我有些...
    開封第一講書人閱讀 152,370評論 0 342
  • 文/不壞的土叔 我叫張陵洲愤,是天一觀的道長。 經(jīng)常有香客問我顷锰,道長柬赐,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,168評論 1 278
  • 正文 為了忘掉前任官紫,我火速辦了婚禮肛宋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘束世。我一直安慰自己酝陈,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,153評論 5 371
  • 文/花漫 我一把揭開白布毁涉。 她就那樣靜靜地躺著沉帮,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上遇西,一...
    開封第一講書人閱讀 48,954評論 1 283
  • 那天馅精,我揣著相機(jī)與錄音,去河邊找鬼粱檀。 笑死洲敢,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的茄蚯。 我是一名探鬼主播压彭,決...
    沈念sama閱讀 38,271評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼渗常!你這毒婦竟也來了壮不?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,916評論 0 259
  • 序言:老撾萬榮一對情侶失蹤皱碘,失蹤者是張志新(化名)和其女友劉穎询一,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體癌椿,經(jīng)...
    沈念sama閱讀 43,382評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡健蕊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,877評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了踢俄。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缩功。...
    茶點(diǎn)故事閱讀 37,989評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖都办,靈堂內(nèi)的尸體忽然破棺而出嫡锌,到底是詐尸還是另有隱情,我是刑警寧澤琳钉,帶...
    沈念sama閱讀 33,624評論 4 322
  • 正文 年R本政府宣布势木,位于F島的核電站,受9級特大地震影響歌懒,放射性物質(zhì)發(fā)生泄漏跟压。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,209評論 3 307
  • 文/蒙蒙 一歼培、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧茸塞,春花似錦躲庄、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至效扫,卻和暖如春倔监,著一層夾襖步出監(jiān)牢的瞬間直砂,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評論 1 260
  • 我被黑心中介騙來泰國打工浩习, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留静暂,地道東北人。 一個月前我還...
    沈念sama閱讀 45,401評論 2 352
  • 正文 我出身青樓谱秽,卻偏偏與公主長得像洽蛀,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子疟赊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,700評論 2 345

推薦閱讀更多精彩內(nèi)容