




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
項目四建立數(shù)據(jù)模型目錄DAX常用函數(shù)123CONTENTS認識DAX認識模型認識模型小張在前面的學習中已經完成了商品信息表、客戶信息表、銷售訂單表數(shù)據(jù)的預處理,現(xiàn)在想在不改變表的情況下從商品信息表獲取銷售訂單表中的數(shù)據(jù),那應該如何操作呢?任務描述1任務知識建模過程中常使用到字段、度量值、表、關系等,而這些的集合就構成了數(shù)據(jù)模型。101數(shù)據(jù)模型
在實際數(shù)據(jù)分析應用中涉及到的數(shù)據(jù)表往往不僅有一張,通常會有多張,而根據(jù)分析的需求,在多張表之間建立合適的關系,使之可以像一張表一樣靈活使用,這個過程稱為數(shù)據(jù)建模。
PowerBI可以從多個表格、多種來源的數(shù)據(jù)中,根據(jù)不同的維度、不同的邏輯來聚合分析數(shù)據(jù);而提取數(shù)據(jù)的前提是要將這些數(shù)據(jù)表建立關系,這個建立關系的過程就是數(shù)據(jù)建模。在建模過程中常使用到字段、度量值、表、關系等,而這些的集合就構成了數(shù)據(jù)模型。任務知識202建立模型任務知識202編輯模型任務知識203分析模型學習了基本的數(shù)據(jù)模型后大家嘗試一下從“案例數(shù)據(jù)”文件中,將“商品表”、“客戶表”、“訂單表”建立模型,并從商品表中獲取訂單表中的數(shù)據(jù)。任務嘗試3根據(jù)茶葉銷售數(shù)據(jù)文件中的“商品信息表”計算總金額。任務拓展4認識DAX小張想根據(jù)商品信息表中的商品類別求出總額,這時涉及到商品信息表和銷售訂單表中的列,在上文中已經將兩表建立了關系,但是如何對兩表中的列進行計算呢?這就需要先對DAX進行理解。任務描述1任務知識建模過程中常使用到字段、度量值、表、關系等,而這些的集合就構成了數(shù)據(jù)模型。101DAX概念DAX,全稱DataAnalysiseXpressions,稱作編程式數(shù)據(jù)分析語言,是公式或表達式中可用于計算并返回一個或多個值的函數(shù)、運算符或常量的集合。其功能是用于數(shù)據(jù)分析,即查詢和運算。數(shù)據(jù)建模很重要的一個技術是DAX,它是PowerBI數(shù)據(jù)建模的靈魂,使用DAX可以輕松的從已建立關系的表間獲取數(shù)據(jù)建立模型。DAX也可以直接作用于一張表,其實一張表本身也是一個模型。任務知識202計算列和度量值
當數(shù)據(jù)加載到PowerBI后,使用DAX來創(chuàng)建計算列或者度量值方式來進行數(shù)據(jù)分析。計算列是在表中固有存在的列,類似于Excel中添加的列。而度量值是虛擬列,它本身不存在表中,只是在做可視化圖表的時候可以使用度量值計算相應的結果。
計算列可以創(chuàng)建表與表間的關系,可作為參數(shù)被其它函數(shù)使用。但度量值不能用來創(chuàng)建表間關系,他不是真實的列,度量值無法在切片器中使用,不能在矩陣圖中創(chuàng)建行,另外,有些函數(shù)的參數(shù)也不能使用度量值。
度量值只有放到圖表中才會執(zhí)行計算,而計算列在創(chuàng)建后就會把整列數(shù)據(jù)存儲在文件中,增大文件的容量。當行數(shù)較少時可能感覺不到差別,然而如果表有幾百萬行,那就意味著增加了幾百萬行的數(shù)據(jù)。因此,能用度量值的時候盡量用,而不優(yōu)先使用計算列。任務知識203上下文
DAX的運算依賴上下文,上下文分為行上下文(RowContext)和篩選上下文(FilterContext)。
行上下文即指的是當前行的內容,行上下文的應用范圍不只局限于當前一張表。如果兩張表之間建立了關聯(lián)關系,則通過該關聯(lián)關系就形成一個跨表的行上下文。
例如,在銷售訂單表中再創(chuàng)建一列“銷售價格”,其值是從商品信息表中而來。在PowerBIDesktop窗口中選擇“數(shù)據(jù)”視圖,在“主頁”菜單中選擇“新建列”,創(chuàng)建計算列公式:
銷售價格=RELATED('商品信息表'[銷售價格])任務知識204DAX構成
DAX語法包括組成公式的各種元素,即名稱、等號、表達式、函數(shù)構成。例如以下公式:
銷售價格=RELATED('商品信息表'[銷售價格])在此公式中,“銷售價格”為計算列或度量值的名稱?!癛ELATED('商品信息表'[銷售價格])”為函數(shù)構成的表達式,其中RELATED為函數(shù)名,括號里面的內容為參數(shù)。任務知識205DAX運算符任務知識206DAX數(shù)據(jù)類型
在PowerBI中主要使用到數(shù)據(jù)類型有:整數(shù)、小數(shù)、文本、布爾、日期/時間、貨幣、空白/Null類型。
文本:可以是字符串、數(shù)字或文本格式表示的日期。在PowerBI中存儲和查詢數(shù)據(jù)的引擎不區(qū)分大小寫。
日期/時間:表示日期和時間值。實際上,日期/時間值是以十進制數(shù)類型進行存儲的。因此實際上可以在這兩種類型之間進行轉換。
布爾:結果為True或False。
空白/Null類型:結果為空或Null??梢允褂?/p>
BLANK
函數(shù)創(chuàng)建空白,并使用
ISBLANK
邏輯函數(shù)對其進行測試。請同學們從商品表中根據(jù)成本價和銷售價創(chuàng)建“差價”的計算列。任務嘗試3請同學們查閱資料創(chuàng)建度量值使用平均值函數(shù)求出平均銷售價格。任務拓展4DAX常用函數(shù)小張在學習了DAX后,要對商品信息表和銷售訂單表中的列進行計算,求出各品類商品的銷售額,那應該如何計算呢?任務描述1任務知識建模過程中常使用到字段、度量值、表、關系等,而這些的集合就構成了數(shù)據(jù)模型。101數(shù)學函數(shù)1.INT函數(shù)INT函數(shù)將數(shù)值向下取最接近的整數(shù)。語法結構: INT(<數(shù)字>) 說明:<數(shù)字>:要向下取整數(shù)的數(shù)值。如果是正數(shù),則取整數(shù)部分,如果是負數(shù)則取比其小的最接近它的整數(shù)。例如,對數(shù)字“1234.56”向下取整,創(chuàng)建度量值:X=INT(1234.56)任務知識201數(shù)學函數(shù)2.ROUND函數(shù)是將數(shù)值舍入到指定的位數(shù)。語法結構: ROUND(<數(shù)字>,<要舍入的位數(shù)>) 說明:如果要舍入的位數(shù)大于0(零),則將數(shù)值舍入到指定的小數(shù)位數(shù)。如果要舍入的位數(shù)為0,則將數(shù)字舍入為最接近的整數(shù)。如果要舍入的位數(shù)小于0,則將數(shù)字舍入到小數(shù)點左側。相關函數(shù):若要始終向上舍入(遠離零方向),請使用ROUNDUP函數(shù)。若要始終向下舍入(趨向零方向),請使用ROUNDDOWN函數(shù)。若要將數(shù)值舍入到特定倍數(shù)(例如,舍入為0.5的最接近倍數(shù)),請使用MROUND函數(shù)??梢允褂肨RUNC和INT函數(shù)來獲取數(shù)值的整數(shù)部分。例如,要將數(shù)字“1234.56”舍入到1個小數(shù)位。則創(chuàng)建度量為:X=ROUND(1234.56,1)任務知識201數(shù)學函數(shù)3.DIVIDE函數(shù)DIVIDE函數(shù)表示分子分母相除的運算,使用DIVIDE函數(shù)時,必須傳遞分子和分母表達式,或者可傳遞一個表示替代結果的值。 語法結構: DIVIDE
(<分子>,<分母>) 說明:<分子>:進行除法運用的分子部分。<分母>:進行除法運算的分母部分。 DIVIDE函數(shù)可自動處理除數(shù)為零的情況。如果無替代結果傳入且分母為零或BLANK,此函數(shù)返回BLANK。如果已有替代結果傳入,則函數(shù)會返回替代結果而不是BLANK。任務知識201數(shù)學函數(shù)以“銷售訂單表”為例,要根據(jù)“金額”和“銷售單價”求平均銷量,則度量值為:平均銷量=DIVIDE(
SUM(
'銷售訂單表'[金額]
),
SUM(
'銷售訂單表'[銷售價格]
)) 在報表視圖中創(chuàng)建表,將商品編號、金額、銷售價格、任務知識202聚合函數(shù)聚合函數(shù)是通過數(shù)學運算方式合并數(shù)據(jù)中值的函數(shù)。數(shù)學運算有求和、平均值、最大值、計數(shù)等。常見的聚合函數(shù)有:SUM、AVERAGE、MIN、MAX,這些函數(shù)的用法與Excel中的函數(shù)用法一致。例如,在銷售訂單表中求所有商品的銷售總額:
銷售總額=
SUM(
'銷售訂單表'[金額]
)任務知識202聚合函數(shù)在使用聚合函數(shù)時,函數(shù)本身不受行上下文的影響,其運算是對列進行操作,如果需要依據(jù)行上下文內容進行計算,需要在其外面嵌套一個CALCULATE函數(shù),將行上文轉換成篩選上下文,或使用度量值運算。另外還有統(tǒng)計類的聚合函數(shù),其運算方法與上面的聚合函數(shù)一樣。COUNT:計數(shù)COUNTROWS:計算行數(shù)DISTINCTCOUNT:計算不重復值的個數(shù)任務知識203迭代函數(shù)常用的迭代函數(shù)有:SUMX、AVERAGEX、MAXX、MINX、RANKX。這些迭代函數(shù)是與行上下文相關的,可以循環(huán)訪問表的每一行,進行迭代計算。1.SUMXSUMX是擴展的求和函數(shù),返回為表中的每一行計算的表達式的和。語法結構:SUMX(<表名>,<表達式>)說明:<表名>:要進行求和的表。<表達式>:為表的每一行計算的表達式。SUMX函數(shù)受上下文影響,函數(shù)執(zhí)行分三步:第一步,因為是行上下文函數(shù),會對表進行逐行掃描,創(chuàng)造行上下文。第二步,表達式在行上下文中執(zhí)行運算,每一行執(zhí)行表達式的計算,每一行都返回一個值。第三步,SUMX記住了每一行返回的值,最后把所有的值加總起來求和。任務知識203迭代函數(shù)在銷售訂單表中使用SUMX函數(shù)對銷售金額進行運算,則函數(shù)為:銷售金額=SUMX(
'銷售訂單表',
'銷售訂單表'[銷售價格]*'銷售訂單表'[訂購數(shù)量])在這里,SUMX函數(shù)對每一行的銷售價格與訂購數(shù)量進行乘法運算,將計算出來的值計入到銷售金額列中,最后將銷售金額列進行求和任務知識203迭代函數(shù)2.RANKX函數(shù)RANKX函數(shù)是排序函數(shù),針對表參數(shù)中每一行,返回某個數(shù)字在數(shù)字列表中的排名,返回值為一個整數(shù)。語法結構: RANKX(<表>,<表達式>,[<值>],[<排序方式>],[<平局規(guī)則>]) 在銷售訂單表中,創(chuàng)建計算列對銷量進行排序,計算公式為:銷量排序=
RANKX(
'銷售訂單表',
[訂購數(shù)量]
)任務知識204篩選器函數(shù)1.CALCULATE函數(shù)CALCULATE函數(shù)是篩選器中最重要的函數(shù),它的功能是在已修改的篩選器上下文中計算表達式。語法結構:CALCULATE(<表達式>[,<條件1>[,<條件2>[,…]]]) 說明:<表達式>:要進行求值的表達式。<條件1>[,<條件2>[,…]:篩選條件,用于定義篩選器或篩選器修飾符函數(shù)的布爾表達式或表表達式。此項為可選項。所有篩選條件的交集形成最終的篩選數(shù)據(jù)集合。任務知識204篩選器函數(shù)以“銷售訂單表”為例,求各商品的銷量情況,首先創(chuàng)建一個度量值:各商品銷量=SUM('銷售訂單表'[訂購數(shù)量])接著,再使用CALCULATE創(chuàng)建一個度量值“銷量篩選”進行計算。銷量篩選1=CALCULATE([各商品銷量])在這個CALCULATE函數(shù)中只使用了第一個參數(shù),篩選條件為空,因為沒有內部篩選所以完全依賴外部上下文,計算出來的結果也和原度量值一致任務知識204篩選器函數(shù)以”銷售訂單表“為例,要篩選出訂購價格在200以下的數(shù)據(jù)求出各產品的銷量情況。創(chuàng)建度量值“銷量篩選2”:銷量篩選2=CALCULATE([各商品銷量],'銷售訂單表'[銷售價格]<200)任務知識204篩選器函數(shù)2.FILTER函數(shù)FILTER函數(shù)是根據(jù)條件對表進行篩選然后返回張個表,用于表示另一個表或表達式的子集,此函數(shù)不能單獨使用,通過與CALCULATE配合使用。語法結構:FILTER(<表>,<條件>)說明:<表>:是要進行篩選的表,還可以是生成表的表達式。<條件>:要為表的每一行計算的布爾表達式。任務知識204篩選器函數(shù)在上例中的CACULATE函數(shù)中,實現(xiàn)了條件篩選:銷量篩選2=CALCULATE([各商品銷量],'銷售訂單表'[銷售價格]<200)這里可以使用FILTER實現(xiàn)現(xiàn)樣的功能,創(chuàng)建銷量篩選3:銷量篩選3=CALCULATE([各商品銷量],FILTER('銷售訂單表',[銷售價格]<200))任務知識204篩選器函數(shù)4.ALLEXCEPT函數(shù)ALLEXCEPT函數(shù)是刪除表中所有上下文篩選器,已應用于指定列的篩選器除外。 語法結構: ALLEXCEPT(<表>,<列1>[,<列2>[,…]]) 說明:<表>:是要清除篩選條件的表。<列1>[,<列2>[,…]:是要保留篩選條件的列。ALLEXCEPT函數(shù)的第一個參數(shù)必須是對原始表的引用。所有后續(xù)參數(shù)必須是對原始列的引用。不能將表表達式或列表達式用于ALLEXCEPT函數(shù)。任務知識204篩選器函數(shù)以“銷售訂單表“為例,除了“商品編號”和“訂購數(shù)量”外,其也列都要進行清除篩選,創(chuàng)建度量值:銷量篩選4=CALCULATE([各商品銷量],ALLEXCEPT('銷售訂單表','銷售訂單表'[商品編號],'銷售訂單表'[訂購數(shù)量]),'銷售訂單表'[銷售價格]<200)任務知識204篩選器函數(shù)5.EARLIER函數(shù)EARLIER函數(shù)是應用于行上下文的函數(shù),其作用是遍歷某列的每行獲得每行的值。 語法結構:EARLIER(<列>,<數(shù)字>) 說明:<列>:外層要引用的列。<數(shù)字>:定義從外層中的第幾層去引用列。默認是1,表示與使用EARLIER函數(shù)所在上下文緊鄰的第一層。此項為可選項??梢詮漠斍靶猩舷挛闹刑?,到外層行上下文去引用數(shù)據(jù)進行計算。任務知識204篩選器函數(shù)以“銷售訂單表”表為例,要計算每個商品的累計銷量,則創(chuàng)建度量值:累計銷量=CALCULATE(SUM('銷售訂單表'[訂購數(shù)量]),FILTER('銷售訂單表',SUMX(FILTER('銷售訂單表','銷售訂單表'[商品編號]<=EARLIER('銷售訂單 表'[商品編號])),'銷售訂單表'[訂購數(shù)量]))任務知識205日期函數(shù)1.DATE函數(shù)DATE函數(shù)是以日期/時間格式返回指定的日期。語法結構:DATE(<年>,<月>,<日>)返回指定日期,創(chuàng)建度量值為:返回日期=DATE(2024,3,1)任務知識205日期函數(shù)2.DATEVALUE函數(shù)DATEVALUE函數(shù)是將文本格式的日期轉換為日期/時間格式的日期。 語法結構: DATEVALUE(文本日期) 將文本型的日期"2022-1-2"轉換為日期型的日期,創(chuàng)建度量值為:日期轉換=DATEVALUE("2024-3-1")任務知識205日期函數(shù)3.NOW函數(shù)NOW函數(shù)返回當前時間。語法結構: NOW()返回當前時間創(chuàng)建度量值為: 當前時間=NOW()任務知識206時間智能函數(shù)1.TOTALYTD函數(shù) TOTALYTD函數(shù)是年初至今累計計算。 語法結構: TOTALYTD(<表達式>,<日期列>,[<篩選器>],[截止日期]) 說明:<表達式>:返回標量值的表達式<日期列>:包含日期的列<篩選器>:應用于當前上下文的篩選器參數(shù),可以是布爾表達式或表表達式[截止日期]:帶有日期的文本字符串,例如”12-31″,用于定義年末日期.任務知識206時間智能函數(shù)以“銷售訂單表”為例,要計算年初至今每個商品的銷量情況,則創(chuàng)建度量值為: 當前累計銷量=TOTALYTD(SUM('銷售訂單表'[訂購數(shù)量]),'銷售訂單表'[訂單日期])任務知識206時間智能函數(shù)2.SAMEPERIODLASTYEAR函數(shù) SAMEPERIODLASTYEAR函數(shù)是返回一個表,其中包含指定列中的日期在當前上下文中前一年的日期列。 語法結構: SAMEPERIODLASTYEAR(<日期列>) 說明:<日期列>:指含日期的一個列。通常與CACULATE函數(shù)配合使用,返回同期數(shù)據(jù)。任務知識206時間智能函數(shù)以“銷售訂單表”為例,返回同期數(shù)據(jù)值,則創(chuàng)建度量值為:同期銷量=CALCULATE(SUM('銷售訂單表'[訂購數(shù)量]),SAMEPERIODLASTYEAR('銷售訂單表'[訂單日期]))任務知識206時間智能函數(shù)同比=DIVIDE(SUM('銷售訂單表'[訂購數(shù)量])-[同期銷量],[同期銷量])任務知識206時間智能函數(shù)3.DATEADD函數(shù)DATEADD函數(shù)返回一個表,此表包含一列日期,日期從當前上下文中的日期開始按指定的間隔數(shù)向未來推移或者向過去推移。 語法結構: DATEADD(日期列,偏移量,偏移單位)說明:<日期列>:指含日期的一個列。通常與CACULATE函數(shù)配合使用,返回上期數(shù)據(jù)。任務知識206時間智能函數(shù)以“銷售訂單”表為例,要計算環(huán)比,即:(本月銷量-上月銷量)/上月銷量首先,計算上月的銷量數(shù)據(jù),則創(chuàng)建度量值為:上月銷量=CALCULATE('銷售訂單表'[本月銷量],DATEADD('銷售訂單表'[訂單日期],-1,MONTH))任務知識206時間智能函數(shù)計算本月銷量,創(chuàng)建度量值為:本月銷量=SUM('銷售訂單表'[訂購數(shù)量])然后,根據(jù)公式計算環(huán)比。與SAMEPERIODLASTYEAR函數(shù)類似,結合DIVIDE函數(shù)來計算,創(chuàng)建度量值為:環(huán)比=DIVIDE('銷售訂單表'[本月銷量]-'銷售訂單表'[上月銷量],'銷售訂單表'[上月銷量])任務知識206時間智能函數(shù)其他函數(shù)常用的時間智能函數(shù)還有:PREVIOUSQUARTER/MONTH/DAY:上一季/月/日NEXTYEAR/QUARTER/MONTH/DAY:下一季/月/日TOTALQTD/MTD:季/月初至今PARALLELPERIOD:上一期DATESINPERIOD:指定期間的日期任務知識207邏輯函數(shù)1.IF函數(shù) IF函數(shù)是起判斷作用的函數(shù),先檢查條件,如果為真,則返回第一個值,否則返回第二個值。 語法結構: IF(<條件>,<值1>,[<值2>])說明:<條件>:計算結果可以是TRUE或FALSE的任何值或表達式。<值1>:邏輯測試為TRUE時返回的值。<值2>: 邏輯測試為FALSE時返回的值。如果省略,則返回BLANK。此項為可選項。任務知識207邏輯函數(shù)以“銷售訂單表”中各商品的累計銷量為例,當累計銷量大于200000為高,否則為低。創(chuàng)建度量值為:銷量高低=IF([累計銷量]>200000,"高","低")任務知識207邏輯函數(shù)2.AND、OR函數(shù) AND、OR函數(shù)是當有多個條件時使用。當所有條件為真時AND函數(shù)返回值為真,當有一個條件為真時OR函數(shù)返回值為真。 語法結構:AND(<條件1>,<條件2>) OR(<條件1>,<條件2>) 說明:<條件>:要測試的邏輯值。AND和OR函數(shù)通常是配合IF函數(shù)使用,作為IF函數(shù)的條件。當條件間是且的關系時使用AND函數(shù),是或的關系時使用OR函數(shù)。NOT函數(shù)也通常與IF函數(shù)一起使用,NOT函數(shù)是取返,當參數(shù)為真時,結果就為假。任務知識207邏輯函數(shù)以“銷售訂單表”為例,計算累計銷量大于200000,并且銷售金額大于1000000,那么銷量評級為優(yōu),否則如果累計銷量大于100000,并且銷售金額大于500000,否則為銷量評級為“一般”,則度量值為:銷量評級=IF(AND([累計銷量]>200000,[銷售金額]>1000000),"優(yōu)",IF(AND([累計銷量]>100000,[金額]>500000),"良","一般"))任務知識208表操作函數(shù)1.TOPN函數(shù) TOPN函數(shù)返回指定表的前N行。 語法結構: TOPN(<前N行>,<表>,<排序表達式>,[<排序>[,<排序表達式>,[<排序>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司商務用車維修合同范本
- 2025年制動分泵項目合作計劃書
- 2025年麻將涼席合作協(xié)議書
- 個體建材購銷合同范本
- 單位食堂供應合同范例
- 2025年加氣加注設備項目建議書
- 家政公司家政公司加盟合同范本
- 2025年霍爾汽車點火系統(tǒng)合作協(xié)議書
- 農村承包荒地合同范例
- 合同范本面布局
- 2025年湖南鐵道職業(yè)技術學院單招職業(yè)技能測試題庫附答案
- 個人車輛租賃給公司合同5篇
- 2025年上半年中國海油秋季校園招聘易考易錯模擬試題(共500題)試卷后附參考答案
- 云南省勞動合同范本
- 北京市石景山區(qū)2024-2025學年高三上學期期末英語試題【含答案解析】
- 2024-2025年中國鋰電池隔膜行業(yè)未來發(fā)展趨勢分析及投資規(guī)劃建議研究報告
- 2024年南昌健康職業(yè)技術學院高職單招職業(yè)技能測驗歷年參考題庫(頻考版)含答案解析
- 2025浙江中煙招聘高頻重點提升(共500題)附帶答案詳解
- 月子會所護理人員禮儀
- 校園安全隱患排查培訓
- 《化妝品包裝材料相容性試驗評估指南》
評論
0/150
提交評論