1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

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

        共 3782字,需瀏覽 8分鐘

         ·

        2021-05-01 21:29

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



        --正文--

        DAX(Data Analysis eXpressions),即數(shù)據(jù)分析表達(dá)式,是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在那些討論P(yáng)ower Pivot數(shù)據(jù)模型的Excel社區(qū)和討論P(yáng)ower 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é)習(xí)DAX,卻不知如何開始,那么下面就給出一些Excel用戶學(xué)習(xí)DAX的建議。



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

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

        01
        單元格和智能表格


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

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

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

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

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

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

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

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

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

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

        與Excel不同,DAX只適用于表結(jié)構(gòu),所有表達(dá)式都必須引用表中的列。例如,在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]中的@表示“當(dāng)前行中的值”。

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

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

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

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

        DAX則不同。

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

        [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)用的表達(dá)式組成的。

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

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

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

        03
        使用迭代器


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

        在Excel中,你可能習(xí)慣于一步步地執(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ù)量相乘的虛擬列,它只是短暫地存在于公式運(yùn)行的時候。

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

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

        03
        DAX相關(guān)理論

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

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

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

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

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

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

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

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

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

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



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

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

        趕快掃碼下單吧~~





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


         熱文推薦  





        ▼點擊閱讀原文,獲取本書詳情~
        瀏覽 25
        點贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

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

        手機(jī)掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            中国黄色三级 | 日本黄色性爱视频 | 韩国青草最新无码自慰GIF | 亚洲精品久久久久999中文字幕 | 欧美老妇人XXXX一区二区三区 | 做爱视频网站免费观看 | 黄色成人网站视频在线观看 | 青娱乐男人天堂 | 亚洲AV无码成人网 | 欧美超碰在线观看 |