<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>

          DAX 權(quán)威指南(第二版)中文版

          共 3875字,需瀏覽 8分鐘

           ·

          2021-06-03 23:22

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



          --正文--

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

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

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

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

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

          DAX是一門容易理解的語言

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

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



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

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

          01
          單元格和智能表格


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

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

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

          所以,當你寫DAX表達式時,只能引用表和列。

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

          在下圖中,你會看到為SalesAmount列計算的表達式引用了同一個表中的列,而不是工作簿中的單元格。

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

          雖然語法直觀,但通常不會這樣編寫表達式,你只需要單擊目標單元格,Excel負責插入正確的代碼。

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

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

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

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

          在Excel中,不需要提供表名,因為Excel公式在單個表中計算。

          但是在DAX中,則需要指定表名,因為DAX在包含多個表的數(shù)據(jù)模型中工作,來自不同表的兩列可能具有相同的名稱。

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

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

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

          當使用DAX時,你不需要刻意指定當前行,DAX的默認行為是獲取當前行中的值。

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

          AllSales列在所有行中的值都是相同的,因為它是SalesAmount列的總計。

          換句話說,引用當前行中的值與引用整列的值之間存在語法差異。

          DAX則不同。

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

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

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

          DAX知道你想要對列的所有值求和,因為你在聚合函數(shù)(在本例中是SUM函數(shù))中使用了列名作為參數(shù)。因此,雖然Excel在檢索數(shù)據(jù)時需要用明確的語法來區(qū)分這兩種類型的數(shù)據(jù),但DAX以一種自動的方式消除了歧義。對于初學(xué)者來說,這可能會讓人困惑。

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


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

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

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

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

          對于使用不同語言的程序員來說,DAX的這種特性通常是一個挑戰(zhàn),但對于Excel用戶來說,這一點也不奇怪。

          03
          使用迭代器


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

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

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

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

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

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

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

          你仍然可以選擇創(chuàng)建一個計算列來計算價格和數(shù)量的乘積。

          然而,這不是一個好的做法,因為它使用了更多的內(nèi)存,并可能會降低計算速度,除非你使用了DirectQuery和聚合表。

          03
          DAX相關(guān)理論

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

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

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

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

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

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

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

          一旦你掌握了原理,DAX對你來說就不再神秘了,學(xué)習DAX主要是積累經(jīng)驗。

          然而,請不要試圖走得太遠,除非你很好地吸收并掌握了計值上下文。

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



          ▊《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è)智能分析、數(shù)據(jù)建模和數(shù)據(jù)分析方面的指南。

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

          現(xiàn)在本書已經(jīng)國內(nèi)市場上市

          您可以直接購買







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

          2021.06.06 周日 24點前在下面留言,就問題:
          為何業(yè)務(wù)人員應(yīng)該學(xué)習 Power BI 尤其是 DAX
          談?wù)勀愕母邢耄S富點,有點感情。
          我們將選出:
          - 最有價值答案:2人(由編輯主觀選出,后和大家分享)
          - 獲贊數(shù)最高者:3人
          - 內(nèi)容長度必須大于50字,如果地方不夠可以貼鏈接,或私信
          贈送價值 188元 的正版《DAX 權(quán)威指南(第二版)》中文版一書
          2021.06.07 將聯(lián)系獲獎?wù)甙l(fā)送圖書。


          獲獎或投稿聯(lián)系

          瀏覽 492
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <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>
                  91美女扣逼 | 国产精品人成A片一区二区 | 大香蕉久操视频 | 男女性爱视频免费观看 | 欧美一区二不卡视频 |