<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Excel用戶如何學(xué)習(xí)數(shù)據(jù)分析語(yǔ)言DAX?

          共 3782字,需瀏覽 8分鐘

           ·

          2021-05-01 21:29

          以下內(nèi)容節(jié)選自《DAX權(quán)威指南:運(yùn)用Power BI、SQL Server Analysis Services和Excel實(shí)現(xiàn)商業(yè)智能分析》一書!



          --正文--

          DAX(Data Analysis eXpressions),即數(shù)據(jù)分析表達(dá)式,是Microsoft Power BI、Microsoft SQL Server Analysis Services(SSAS)和Microsoft Power Pivot for Excel中使用的編程語(yǔ)言。

          它創(chuàng)建于2010年,是隨PowerPivot的第一個(gè)版本PowerPivot for Excel 2010一起發(fā)布的(在2010年,PowerPivot的拼寫還沒有空格;空格是在2013年引入的)。

          隨著時(shí)間的推移,DAX在那些討論P(yáng)ower Pivot數(shù)據(jù)模型的Excel社區(qū)和討論P(yáng)ower BI與SSAS數(shù)據(jù)模型的商業(yè)智能(BI)社區(qū)中逐漸流行起來(lái)。

          DAX是一門跨多產(chǎn)品的分析語(yǔ)言,這些產(chǎn)品使用同一個(gè)名為Tabular的內(nèi)部引擎。

          出于這個(gè)原因,我們經(jīng)常用表格模型(Tabular Model)作為這些產(chǎn)品的共同特征。

          DAX是一門容易理解的語(yǔ)言

          也就是說(shuō),DAX和大多數(shù)編程語(yǔ)言不同,它更容易入門,但熟悉它的一些新概念可能需要一些時(shí)間。

          如果你具有Microsoft Excel編程語(yǔ)言經(jīng)驗(yàn),想要學(xué)習(xí)DAX,卻不知如何開始,那么下面就給出一些Excel用戶學(xué)習(xí)DAX的建議



          你可能已經(jīng)知道DAX與Excel公式有些相似。畢竟DAX脫胎于Excel Power Pivot,其開發(fā)團(tuán)隊(duì)試圖保持這兩種語(yǔ)言的相似性,這使得用戶向這種新語(yǔ)言的過(guò)渡更加容易。

          然而,它們?nèi)杂幸恍┓浅V匾膮^(qū)別。

          01
          單元格和智能表格


          Excel對(duì)單元格執(zhí)行計(jì)算,單元格通過(guò)坐標(biāo)引用。因此,你可以這樣編寫公式:

          = (A1 * 1.25) - B2
          DAX則不同,單元格和坐標(biāo)的概念在DAX中不存在。

          DAX處理的是表和列,而不是單元格。

          所以,當(dāng)你寫DAX表達(dá)式時(shí),只能引用表和列。

          表和列的概念在Excel中司空見慣。實(shí)際上,如果將Excel中的某個(gè)范圍定義為智能表格(使用創(chuàng)建表功能),那么你可以在Excel中編寫引用表和列的表達(dá)式。

          在下圖中,你會(huì)看到為SalesAmount列計(jì)算的表達(dá)式引用了同一個(gè)表中的列,而不是工作簿中的單元格。

          在Excel中,你可以使用[@ColumnName]格式引用表中的列,其中ColumnName是要引用的列的名稱,@符號(hào)表示“獲取當(dāng)前行的值”。

          雖然語(yǔ)法直觀,但通常不會(huì)這樣編寫表達(dá)式,你只需要單擊目標(biāo)單元格,Excel負(fù)責(zé)插入正確的代碼。

          你可能認(rèn)為Excel有兩種不同的計(jì)算方式:使用標(biāo)準(zhǔn)單元格引用(在這種情況下,單元格F4中的公式應(yīng)該是E4*D4),或者使用列引用(如果在智能表格中計(jì)算)。

          使用列引用的優(yōu)點(diǎn)是,可以在列的所有單元格中使用相同的表達(dá)式,而Excel為每行使用不同的值來(lái)計(jì)算公式。

          與Excel不同,DAX只適用于表結(jié)構(gòu),所有表達(dá)式都必須引用表中的列。例如,在DAX中編寫這樣一個(gè)乘法公式:

          Sales[SalesAmount] =
          Sales[ProductPrice] * Sales[ProductQuantity]
          如你所見,每個(gè)列都以表名為前綴。

          在Excel中,不需要提供表名,因?yàn)镋xcel公式在單個(gè)表中計(jì)算。

          但是在DAX中,則需要指定表名,因?yàn)镈AX在包含多個(gè)表的數(shù)據(jù)模型中工作,來(lái)自不同表的兩列可能具有相同的名稱。

          DAX中的許多函數(shù)與其在Excel中的同名函數(shù)工作原理相同。

          例如,IF函數(shù)在 DAX和Excel中是一樣的:

          Excel IF ( [@SalesAmount] > 10,1,0)
          DAX IF ( Sales[SalesAmount] > 10,1,0)
          Excel函數(shù)的語(yǔ)法和DAX的一個(gè)不同之處是引用整列的方式。你可能已經(jīng)注意到,[@ ProductQuantity]中的@表示“當(dāng)前行中的值”。

          當(dāng)使用DAX時(shí),你不需要刻意指定當(dāng)前行,DAX的默認(rèn)行為是獲取當(dāng)前行中的值。

          在Excel中,如果需要引用整列的值,即該列中的所有行,則可以通過(guò)刪除@符號(hào)來(lái)實(shí)現(xiàn),如下圖所示。

          AllSales列在所有行中的值都是相同的,因?yàn)樗荢alesAmount列的總計(jì)。

          換句話說(shuō),引用當(dāng)前行中的值與引用整列的值之間存在語(yǔ)法差異。

          DAX則不同。

          在DAX中,你可以這樣寫上圖所示的AllSales表達(dá)式:

          [AllSales]:= SUM ( Sales[SalesAmount] )

          獲取列中特定行的值與將列作為一個(gè)整體使用,這兩種用法之間沒有語(yǔ)法差異。

          DAX知道你想要對(duì)列的所有值求和,因?yàn)槟阍诰酆虾瘮?shù)(在本例中是SUM函數(shù))中使用了列名作為參數(shù)。因此,雖然Excel在檢索數(shù)據(jù)時(shí)需要用明確的語(yǔ)法來(lái)區(qū)分這兩種類型的數(shù)據(jù),但DAX以一種自動(dòng)的方式消除了歧義。對(duì)于初學(xué)者來(lái)說(shuō),這可能會(huì)讓人困惑。

          02
          Excel函數(shù)和DAX:兩種函數(shù)式語(yǔ)言


          Excel函數(shù)和DAX這兩種語(yǔ)言非常相似的地方是,它們都是函數(shù)式語(yǔ)言。

          函數(shù)式語(yǔ)言是由基礎(chǔ)函數(shù)調(diào)用的表達(dá)式組成的。

          在Excel函數(shù)和DAX中都沒有語(yǔ)句、循環(huán)和跳轉(zhuǎn)的概念,而這些概念在許多編程語(yǔ)言中都很常見。

          在DAX中,一切都是函數(shù)表達(dá)式。

          對(duì)于使用不同語(yǔ)言的程序員來(lái)說(shuō),DAX的這種特性通常是一個(gè)挑戰(zhàn),但對(duì)于Excel用戶來(lái)說(shuō),這一點(diǎn)也不奇怪。

          03
          使用迭代器


          迭代器可能是你遇到的一個(gè)新概念。

          在Excel中,你可能習(xí)慣于一步步地執(zhí)行計(jì)算。

          在前面的示例中,為了計(jì)算總銷售額,創(chuàng)建了一列,求價(jià)格乘以數(shù)量的結(jié)果,然后將其求和以計(jì)算總銷售額。這個(gè)結(jié)果很有用,例如,它可以作為計(jì)算每個(gè)產(chǎn)品銷售額百分比的分母。

          使用DAX,可以通過(guò)使用迭代器在單個(gè)步驟中執(zhí)行相同的操作。迭代器完全按照其名字表示的意思來(lái)執(zhí)行:迭代整個(gè)表,并對(duì)表的每一行執(zhí)行計(jì)算,最后聚合結(jié)果以生成所需的單個(gè)值。

          在前面的示例中,可以使用SUMX迭代器計(jì)算總銷售額:

          [AllSales]:=
          SUMX (
          Sales,
          Sales[ProductQuantity] * Sales[ProductPrice]
          )
          這種方法既有優(yōu)點(diǎn)也有缺點(diǎn)。
          • 優(yōu)點(diǎn)是,可以在單個(gè)步驟中執(zhí)行許多復(fù)雜的計(jì)算,而不必為此添加許多列,這對(duì)某些特定的公式有用。

          • 缺點(diǎn)是,使用DAX編程的直觀性不如Excel。實(shí)際上,你觀察不到那個(gè)將價(jià)格和數(shù)量相乘的虛擬列,它只是短暫地存在于公式運(yùn)行的時(shí)候。

          你仍然可以選擇創(chuàng)建一個(gè)計(jì)算列來(lái)計(jì)算價(jià)格和數(shù)量的乘積。

          然而,這不是一個(gè)好的做法,因?yàn)樗褂昧烁嗟膬?nèi)存,并可能會(huì)降低計(jì)算速度,除非你使用了DirectQuery和聚合表。

          03
          DAX相關(guān)理論

          需要明確的是,學(xué)習(xí)DAX需要先從理論開始,這并非不同編程語(yǔ)言之間的區(qū)別,而是思維方式的不同。

          你可能已經(jīng)習(xí)慣于通過(guò)網(wǎng)絡(luò)搜索來(lái)找到解決某個(gè)具體問(wèn)題的復(fù)雜公式或方案。

          當(dāng)你使用Excel時(shí),很可能會(huì)發(fā)現(xiàn)有一個(gè)公式幾乎能滿足你的需求。

          于是,你復(fù)制這個(gè)公式,稍做修改就解決了問(wèn)題,而不必考慮它的工作原理。

          該方法適用于Excel,但不適用于DAX。在能夠?qū)懗龊玫腄AX表達(dá)式之前,你需要學(xué)習(xí)一些理論并徹底理解計(jì)值上下文是如何工作的。

          如果沒有一定的理論基礎(chǔ),你會(huì)覺得DAX像變魔術(shù)一樣得到了正確的結(jié)果,或者得到?jīng)]有意義的奇怪?jǐn)?shù)字。但問(wèn)題不在于DAX,而是你還沒有完全理解DAX是如何工作的。

          幸運(yùn)的是,DAX的理論只限于幾個(gè)重要的概念,《DAX權(quán)威指南》一書中會(huì)進(jìn)行詳細(xì)介紹。

          一旦你掌握了原理,DAX對(duì)你來(lái)說(shuō)就不再神秘了,學(xué)習(xí)DAX主要是積累經(jīng)驗(yàn)。

          然而,請(qǐng)不要試圖走得太遠(yuǎn),除非你很好地吸收并掌握了計(jì)值上下文。

          記住:了解原理只是成功的一半。



          ▊《DAX權(quán)威指南

          [意] Marco,Russo(馬爾·科魯索),Alberto,F(xiàn)errari(阿爾貝托·拉里) 著

          高飛 譯


          • DAX里程碑式經(jīng)典教材,亞馬遜4.8分(總分5分)

          • 本書的目的,讓你真正掌握DAX!

          • 微軟MVP,Power BI極客 翻譯

          • 原書作者、DAX之父、ExcelHome 創(chuàng)始人、Power BI MVP力薦


          本書是微軟DAX語(yǔ)言在商業(yè)智能分析、數(shù)據(jù)建模和數(shù)據(jù)分析方面的指南。

          通過(guò)對(duì)本書的學(xué)習(xí),你將了解如何使用DAX語(yǔ)言進(jìn)行商業(yè)智能分析、數(shù)據(jù)建模和數(shù)據(jù)分析;你將掌握從基礎(chǔ)表函數(shù)到高級(jí)代碼,以及模型優(yōu)化的所有內(nèi)容;你將確切了解在運(yùn)行DAX表達(dá)式時(shí),引擎內(nèi)部所執(zhí)行的操作,并利用這些知識(shí)編寫可以高速運(yùn)行且健壯的代碼。

          京東限時(shí)5折,4月30日最后一天!

          趕快掃碼下單吧~~





          如果喜歡本文
          歡迎 在看留言分享至朋友圈 三連


           熱文推薦  





          ▼點(diǎn)擊閱讀原文,獲取本書詳情~
          瀏覽 25
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  操逼播放| 色婷婷基地伊人 | 国产无码AV毛片 | 在线观看无码高清 | 奇米无码在线 |