




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
項目四建立數據模型目錄DAX常用函數123CONTENTS認識DAX認識模型認識模型小張在前面的學習中已經完成了商品信息表、客戶信息表、銷售訂單表數據的預處理,現在想在不改變表的情況下從商品信息表獲取銷售訂單表中的數據,那應該如何操作呢?任務描述1任務知識建模過程中常使用到字段、度量值、表、關系等,而這些的集合就構成了數據模型。101數據模型
在實際數據分析應用中涉及到的數據表往往不僅有一張,通常會有多張,而根據分析的需求,在多張表之間建立合適的關系,使之可以像一張表一樣靈活使用,這個過程稱為數據建模。
PowerBI可以從多個表格、多種來源的數據中,根據不同的維度、不同的邏輯來聚合分析數據;而提取數據的前提是要將這些數據表建立關系,這個建立關系的過程就是數據建模。在建模過程中常使用到字段、度量值、表、關系等,而這些的集合就構成了數據模型。任務知識202建立模型任務知識202編輯模型任務知識203分析模型學習了基本的數據模型后大家嘗試一下從“案例數據”文件中,將“商品表”、“客戶表”、“訂單表”建立模型,并從商品表中獲取訂單表中的數據。任務嘗試3根據茶葉銷售數據文件中的“商品信息表”計算總金額。任務拓展4認識DAX小張想根據商品信息表中的商品類別求出總額,這時涉及到商品信息表和銷售訂單表中的列,在上文中已經將兩表建立了關系,但是如何對兩表中的列進行計算呢?這就需要先對DAX進行理解。任務描述1任務知識建模過程中常使用到字段、度量值、表、關系等,而這些的集合就構成了數據模型。101DAX概念DAX,全稱DataAnalysiseXpressions,稱作編程式數據分析語言,是公式或表達式中可用于計算并返回一個或多個值的函數、運算符或常量的集合。其功能是用于數據分析,即查詢和運算。數據建模很重要的一個技術是DAX,它是PowerBI數據建模的靈魂,使用DAX可以輕松的從已建立關系的表間獲取數據建立模型。DAX也可以直接作用于一張表,其實一張表本身也是一個模型。任務知識202計算列和度量值
當數據加載到PowerBI后,使用DAX來創建計算列或者度量值方式來進行數據分析。計算列是在表中固有存在的列,類似于Excel中添加的列。而度量值是虛擬列,它本身不存在表中,只是在做可視化圖表的時候可以使用度量值計算相應的結果。
計算列可以創建表與表間的關系,可作為參數被其它函數使用。但度量值不能用來創建表間關系,他不是真實的列,度量值無法在切片器中使用,不能在矩陣圖中創建行,另外,有些函數的參數也不能使用度量值。
度量值只有放到圖表中才會執行計算,而計算列在創建后就會把整列數據存儲在文件中,增大文件的容量。當行數較少時可能感覺不到差別,然而如果表有幾百萬行,那就意味著增加了幾百萬行的數據。因此,能用度量值的時候盡量用,而不優先使用計算列。任務知識203上下文
DAX的運算依賴上下文,上下文分為行上下文(RowContext)和篩選上下文(FilterContext)。
行上下文即指的是當前行的內容,行上下文的應用范圍不只局限于當前一張表。如果兩張表之間建立了關聯關系,則通過該關聯關系就形成一個跨表的行上下文。
例如,在銷售訂單表中再創建一列“銷售價格”,其值是從商品信息表中而來。在PowerBIDesktop窗口中選擇“數據”視圖,在“主頁”菜單中選擇“新建列”,創建計算列公式:
銷售價格=RELATED('商品信息表'[銷售價格])任務知識204DAX構成
DAX語法包括組成公式的各種元素,即名稱、等號、表達式、函數構成。例如以下公式:
銷售價格=RELATED('商品信息表'[銷售價格])在此公式中,“銷售價格”為計算列或度量值的名稱。“RELATED('商品信息表'[銷售價格])”為函數構成的表達式,其中RELATED為函數名,括號里面的內容為參數。任務知識205DAX運算符任務知識206DAX數據類型
在PowerBI中主要使用到數據類型有:整數、小數、文本、布爾、日期/時間、貨幣、空白/Null類型。
文本:可以是字符串、數字或文本格式表示的日期。在PowerBI中存儲和查詢數據的引擎不區分大小寫。
日期/時間:表示日期和時間值。實際上,日期/時間值是以十進制數類型進行存儲的。因此實際上可以在這兩種類型之間進行轉換。
布爾:結果為True或False。
空白/Null類型:結果為空或Null。可以使用
BLANK
函數創建空白,并使用
ISBLANK
邏輯函數對其進行測試。請同學們從商品表中根據成本價和銷售價創建“差價”的計算列。任務嘗試3請同學們查閱資料創建度量值使用平均值函數求出平均銷售價格。任務拓展4DAX常用函數小張在學習了DAX后,要對商品信息表和銷售訂單表中的列進行計算,求出各品類商品的銷售額,那應該如何計算呢?任務描述1任務知識建模過程中常使用到字段、度量值、表、關系等,而這些的集合就構成了數據模型。101數學函數1.INT函數INT函數將數值向下取最接近的整數。語法結構: INT(<數字>) 說明:<數字>:要向下取整數的數值。如果是正數,則取整數部分,如果是負數則取比其小的最接近它的整數。例如,對數字“1234.56”向下取整,創建度量值:X=INT(1234.56)任務知識201數學函數2.ROUND函數是將數值舍入到指定的位數。語法結構: ROUND(<數字>,<要舍入的位數>) 說明:如果要舍入的位數大于0(零),則將數值舍入到指定的小數位數。如果要舍入的位數為0,則將數字舍入為最接近的整數。如果要舍入的位數小于0,則將數字舍入到小數點左側。相關函數:若要始終向上舍入(遠離零方向),請使用ROUNDUP函數。若要始終向下舍入(趨向零方向),請使用ROUNDDOWN函數。若要將數值舍入到特定倍數(例如,舍入為0.5的最接近倍數),請使用MROUND函數。可以使用TRUNC和INT函數來獲取數值的整數部分。例如,要將數字“1234.56”舍入到1個小數位。則創建度量為:X=ROUND(1234.56,1)任務知識201數學函數3.DIVIDE函數DIVIDE函數表示分子分母相除的運算,使用DIVIDE函數時,必須傳遞分子和分母表達式,或者可傳遞一個表示替代結果的值。 語法結構: DIVIDE
(<分子>,<分母>) 說明:<分子>:進行除法運用的分子部分。<分母>:進行除法運算的分母部分。 DIVIDE函數可自動處理除數為零的情況。如果無替代結果傳入且分母為零或BLANK,此函數返回BLANK。如果已有替代結果傳入,則函數會返回替代結果而不是BLANK。任務知識201數學函數以“銷售訂單表”為例,要根據“金額”和“銷售單價”求平均銷量,則度量值為:平均銷量=DIVIDE(
SUM(
'銷售訂單表'[金額]
),
SUM(
'銷售訂單表'[銷售價格]
)) 在報表視圖中創建表,將商品編號、金額、銷售價格、任務知識202聚合函數聚合函數是通過數學運算方式合并數據中值的函數。數學運算有求和、平均值、最大值、計數等。常見的聚合函數有:SUM、AVERAGE、MIN、MAX,這些函數的用法與Excel中的函數用法一致。例如,在銷售訂單表中求所有商品的銷售總額:
銷售總額=
SUM(
'銷售訂單表'[金額]
)任務知識202聚合函數在使用聚合函數時,函數本身不受行上下文的影響,其運算是對列進行操作,如果需要依據行上下文內容進行計算,需要在其外面嵌套一個CALCULATE函數,將行上文轉換成篩選上下文,或使用度量值運算。另外還有統計類的聚合函數,其運算方法與上面的聚合函數一樣。COUNT:計數COUNTROWS:計算行數DISTINCTCOUNT:計算不重復值的個數任務知識203迭代函數常用的迭代函數有:SUMX、AVERAGEX、MAXX、MINX、RANKX。這些迭代函數是與行上下文相關的,可以循環訪問表的每一行,進行迭代計算。1.SUMXSUMX是擴展的求和函數,返回為表中的每一行計算的表達式的和。語法結構:SUMX(<表名>,<表達式>)說明:<表名>:要進行求和的表。<表達式>:為表的每一行計算的表達式。SUMX函數受上下文影響,函數執行分三步:第一步,因為是行上下文函數,會對表進行逐行掃描,創造行上下文。第二步,表達式在行上下文中執行運算,每一行執行表達式的計算,每一行都返回一個值。第三步,SUMX記住了每一行返回的值,最后把所有的值加總起來求和。任務知識203迭代函數在銷售訂單表中使用SUMX函數對銷售金額進行運算,則函數為:銷售金額=SUMX(
'銷售訂單表',
'銷售訂單表'[銷售價格]*'銷售訂單表'[訂購數量])在這里,SUMX函數對每一行的銷售價格與訂購數量進行乘法運算,將計算出來的值計入到銷售金額列中,最后將銷售金額列進行求和任務知識203迭代函數2.RANKX函數RANKX函數是排序函數,針對表參數中每一行,返回某個數字在數字列表中的排名,返回值為一個整數。語法結構: RANKX(<表>,<表達式>,[<值>],[<排序方式>],[<平局規則>]) 在銷售訂單表中,創建計算列對銷量進行排序,計算公式為:銷量排序=
RANKX(
'銷售訂單表',
[訂購數量]
)任務知識204篩選器函數1.CALCULATE函數CALCULATE函數是篩選器中最重要的函數,它的功能是在已修改的篩選器上下文中計算表達式。語法結構:CALCULATE(<表達式>[,<條件1>[,<條件2>[,…]]]) 說明:<表達式>:要進行求值的表達式。<條件1>[,<條件2>[,…]:篩選條件,用于定義篩選器或篩選器修飾符函數的布爾表達式或表表達式。此項為可選項。所有篩選條件的交集形成最終的篩選數據集合。任務知識204篩選器函數以“銷售訂單表”為例,求各商品的銷量情況,首先創建一個度量值:各商品銷量=SUM('銷售訂單表'[訂購數量])接著,再使用CALCULATE創建一個度量值“銷量篩選”進行計算。銷量篩選1=CALCULATE([各商品銷量])在這個CALCULATE函數中只使用了第一個參數,篩選條件為空,因為沒有內部篩選所以完全依賴外部上下文,計算出來的結果也和原度量值一致任務知識204篩選器函數以”銷售訂單表“為例,要篩選出訂購價格在200以下的數據求出各產品的銷量情況。創建度量值“銷量篩選2”:銷量篩選2=CALCULATE([各商品銷量],'銷售訂單表'[銷售價格]<200)任務知識204篩選器函數2.FILTER函數FILTER函數是根據條件對表進行篩選然后返回張個表,用于表示另一個表或表達式的子集,此函數不能單獨使用,通過與CALCULATE配合使用。語法結構:FILTER(<表>,<條件>)說明:<表>:是要進行篩選的表,還可以是生成表的表達式。<條件>:要為表的每一行計算的布爾表達式。任務知識204篩選器函數在上例中的CACULATE函數中,實現了條件篩選:銷量篩選2=CALCULATE([各商品銷量],'銷售訂單表'[銷售價格]<200)這里可以使用FILTER實現現樣的功能,創建銷量篩選3:銷量篩選3=CALCULATE([各商品銷量],FILTER('銷售訂單表',[銷售價格]<200))任務知識204篩選器函數4.ALLEXCEPT函數ALLEXCEPT函數是刪除表中所有上下文篩選器,已應用于指定列的篩選器除外。 語法結構: ALLEXCEPT(<表>,<列1>[,<列2>[,…]]) 說明:<表>:是要清除篩選條件的表。<列1>[,<列2>[,…]:是要保留篩選條件的列。ALLEXCEPT函數的第一個參數必須是對原始表的引用。所有后續參數必須是對原始列的引用。不能將表表達式或列表達式用于ALLEXCEPT函數。任務知識204篩選器函數以“銷售訂單表“為例,除了“商品編號”和“訂購數量”外,其也列都要進行清除篩選,創建度量值:銷量篩選4=CALCULATE([各商品銷量],ALLEXCEPT('銷售訂單表','銷售訂單表'[商品編號],'銷售訂單表'[訂購數量]),'銷售訂單表'[銷售價格]<200)任務知識204篩選器函數5.EARLIER函數EARLIER函數是應用于行上下文的函數,其作用是遍歷某列的每行獲得每行的值。 語法結構:EARLIER(<列>,<數字>) 說明:<列>:外層要引用的列。<數字>:定義從外層中的第幾層去引用列。默認是1,表示與使用EARLIER函數所在上下文緊鄰的第一層。此項為可選項。可以從當前行上下文中跳出,到外層行上下文去引用數據進行計算。任務知識204篩選器函數以“銷售訂單表”表為例,要計算每個商品的累計銷量,則創建度量值:累計銷量=CALCULATE(SUM('銷售訂單表'[訂購數量]),FILTER('銷售訂單表',SUMX(FILTER('銷售訂單表','銷售訂單表'[商品編號]<=EARLIER('銷售訂單 表'[商品編號])),'銷售訂單表'[訂購數量]))任務知識205日期函數1.DATE函數DATE函數是以日期/時間格式返回指定的日期。語法結構:DATE(<年>,<月>,<日>)返回指定日期,創建度量值為:返回日期=DATE(2024,3,1)任務知識205日期函數2.DATEVALUE函數DATEVALUE函數是將文本格式的日期轉換為日期/時間格式的日期。 語法結構: DATEVALUE(文本日期) 將文本型的日期"2022-1-2"轉換為日期型的日期,創建度量值為:日期轉換=DATEVALUE("2024-3-1")任務知識205日期函數3.NOW函數NOW函數返回當前時間。語法結構: NOW()返回當前時間創建度量值為: 當前時間=NOW()任務知識206時間智能函數1.TOTALYTD函數 TOTALYTD函數是年初至今累計計算。 語法結構: TOTALYTD(<表達式>,<日期列>,[<篩選器>],[截止日期]) 說明:<表達式>:返回標量值的表達式<日期列>:包含日期的列<篩選器>:應用于當前上下文的篩選器參數,可以是布爾表達式或表表達式[截止日期]:帶有日期的文本字符串,例如”12-31″,用于定義年末日期.任務知識206時間智能函數以“銷售訂單表”為例,要計算年初至今每個商品的銷量情況,則創建度量值為: 當前累計銷量=TOTALYTD(SUM('銷售訂單表'[訂購數量]),'銷售訂單表'[訂單日期])任務知識206時間智能函數2.SAMEPERIODLASTYEAR函數 SAMEPERIODLASTYEAR函數是返回一個表,其中包含指定列中的日期在當前上下文中前一年的日期列。 語法結構: SAMEPERIODLASTYEAR(<日期列>) 說明:<日期列>:指含日期的一個列。通常與CACULATE函數配合使用,返回同期數據。任務知識206時間智能函數以“銷售訂單表”為例,返回同期數據值,則創建度量值為:同期銷量=CALCULATE(SUM('銷售訂單表'[訂購數量]),SAMEPERIODLASTYEAR('銷售訂單表'[訂單日期]))任務知識206時間智能函數同比=DIVIDE(SUM('銷售訂單表'[訂購數量])-[同期銷量],[同期銷量])任務知識206時間智能函數3.DATEADD函數DATEADD函數返回一個表,此表包含一列日期,日期從當前上下文中的日期開始按指定的間隔數向未來推移或者向過去推移。 語法結構: DATEADD(日期列,偏移量,偏移單位)說明:<日期列>:指含日期的一個列。通常與CACULATE函數配合使用,返回上期數據。任務知識206時間智能函數以“銷售訂單”表為例,要計算環比,即:(本月銷量-上月銷量)/上月銷量首先,計算上月的銷量數據,則創建度量值為:上月銷量=CALCULATE('銷售訂單表'[本月銷量],DATEADD('銷售訂單表'[訂單日期],-1,MONTH))任務知識206時間智能函數計算本月銷量,創建度量值為:本月銷量=SUM('銷售訂單表'[訂購數量])然后,根據公式計算環比。與SAMEPERIODLASTYEAR函數類似,結合DIVIDE函數來計算,創建度量值為:環比=DIVIDE('銷售訂單表'[本月銷量]-'銷售訂單表'[上月銷量],'銷售訂單表'[上月銷量])任務知識206時間智能函數其他函數常用的時間智能函數還有:PREVIOUSQUARTER/MONTH/DAY:上一季/月/日NEXTYEAR/QUARTER/MONTH/DAY:下一季/月/日TOTALQTD/MTD:季/月初至今PARALLELPERIOD:上一期DATESINPERIOD:指定期間的日期任務知識207邏輯函數1.IF函數 IF函數是起判斷作用的函數,先檢查條件,如果為真,則返回第一個值,否則返回第二個值。 語法結構: IF(<條件>,<值1>,[<值2>])說明:<條件>:計算結果可以是TRUE或FALSE的任何值或表達式。<值1>:邏輯測試為TRUE時返回的值。<值2>: 邏輯測試為FALSE時返回的值。如果省略,則返回BLANK。此項為可選項。任務知識207邏輯函數以“銷售訂單表”中各商品的累計銷量為例,當累計銷量大于200000為高,否則為低。創建度量值為:銷量高低=IF([累計銷量]>200000,"高","低")任務知識207邏輯函數2.AND、OR函數 AND、OR函數是當有多個條件時使用。當所有條件為真時AND函數返回值為真,當有一個條件為真時OR函數返回值為真。 語法結構:AND(<條件1>,<條件2>) OR(<條件1>,<條件2>) 說明:<條件>:要測試的邏輯值。AND和OR函數通常是配合IF函數使用,作為IF函數的條件。當條件間是且的關系時使用AND函數,是或的關系時使用OR函數。NOT函數也通常與IF函數一起使用,NOT函數是取返,當參數為真時,結果就為假。任務知識207邏輯函數以“銷售訂單表”為例,計算累計銷量大于200000,并且銷售金額大于1000000,那么銷量評級為優,否則如果累計銷量大于100000,并且銷售金額大于500000,否則為銷量評級為“一般”,則度量值為:銷量評級=IF(AND([累計銷量]>200000,[銷售金額]>1000000),"優",IF(AND([累計銷量]>100000,[金額]>500000),"良","一般"))任務知識208表操作函數1.TOPN函數 TOPN函數返回指定表的前N行。 語法結構: TOPN(<前N行>,<表>,<排序表達式>,[<排序>[,<排序表達式>,[<排序>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高考勵志感人演講稿(4篇)
- 安全主題班會演講稿范文(15篇)
- 家長會家長代表發言稿集錦(16篇)
- 企業租賃合同范文(16篇)
- 圖形的運動(二)(教學設計)-2024-2025學年二年級下冊數學人教版
- “空氣質量與日常生活”教學的PBL項目設計
- 2025清明節活動總結開頭(5篇)
- 辦公寫字樓出租標準合同(15篇)
- 工傷保險上半年工作總結范文(4篇)
- 《手術室進入指南》課件
- 學校食堂日管控周排查月調度樣表
- 劍橋英語PET真題校園版
- 土方開挖及基坑支護工程安全監理實施細則
- 2023年新高考英語復習:讀后續寫專題練習10篇(含答案范文)
- 土木工程施工現場安全控制措施
- 農業銀行反洗錢知識競賽培訓試題及答案
- JJF 1101-2019環境試驗設備溫度、濕度參數校準規范
- 第4章 毒作用機制毒作用影響因素
- GB/T 10295-2008絕熱材料穩態熱阻及有關特性的測定熱流計法
- GA/T 1433-2017法庭科學語音同一認定技術規范
- 固體酸催化劑的發展及應用文獻綜述
評論
0/150
提交評論