1. 程式人生 > >Building Data Models with PowerPivot_進階篇2

Building Data Models with PowerPivot_進階篇2

5.1 使用 Userelationship 建立兩表之間的多個關係
USERELATIONSHIP(多端,一端)
Measure_送貨數量 = CALCULATE(SUM([數量])),USERELATIONSHIP('銷售記錄'[實際送貨日期],'日曆年'[日期])


5.2 使用多對多關係
[多 <-> 多] 可變為 [多 <- 一 -> 多]
現在'銷售記錄'表 & '圖書分類'表是多對多關係,兩表在Power BI中無法正常關聯
在'圖書分類'表中新建計算列求分類銷售總計值
= SUMX(FILTER('銷售記錄','圖書分類'[圖書編號]='銷售記錄'[圖書編號]),'銷售記錄'[數量])
問題1) 此時可以求得分類後的彙總值,但無法據此在'圖書分類'下,求得準確的總計值
問題2) 此時分類銷售總計值列將無法根據'銷售記錄'表中的日期切片


現在構建[多 <- 一 -> 多]關係
在圖書分類表下新建列
1) SUMX1 = SUMX(FILTER('銷售記錄',COUNTROWS(RELATEDTABLE('圖書分類'))>0),'銷售記錄'[數量])
2) Measure = SUM([數量])
CAL = CALCULATE('銷售記錄'[銷售數量],FILTER('銷售記錄',COUNTROWS(RELATEDTABLE('圖書分類'))>0))
3) CAL2 = CALCULATE('銷售記錄'[銷售數量],'圖書分類')


6 經典企業高階分析案例
6.1 產品/客戶分類分析(ABC分析)
80/20分析(帕累託分析) 只抓關鍵
Pareto Analysis/ Pareto distributions [pɑ'rɛtɔ] 額
20%的產品帶來80%的收入


ABC分析(70/20/10分析) 抓主次
Activity Based Classification
A類產品帶來70%的收入
B類產品帶來20%的收入
C類產品帶來10%的收入
注:本例主要根據不同分類的產品進行計算的
1)步 在產品分類表中建立 新建列 銷售金額
Column_銷售金額 = CALCULATE(SUM('銷售記錄'[金額]))
2)步 不同分類的產品按銷售額大小求銷售額累積和
Column_累積金額 = SUMX(FILTER('產品分類','產品分類'[銷售金額]>=EARLIER('產品分類'[銷售金額])),'產品分類'[銷售金額])
3)步 求累積百分比
累積百分比 = [Column_累積金額]/SUM('產品分類'[銷售金額])
注意: 此時的SUM函式中不受行上下文的影響
4)步 求產品ABC分類
產品ABC分類 = IF([累積百分比]<=0.7,"A",IF([累積百分比]<=0.9,"B","C"))


此時可在頁面上生成ABC分類切片器,生成產品名稱列表以及ABC分類銷售額彙總表


按不同客戶進行ABC分析
首先生成一個從銷售記錄表中生成一個客戶表
SUMMARIZE('銷售記錄','銷售記錄'[客戶ID],'銷售記錄'[客戶名稱])


6.2 建立引數表
貨幣表不需要和其他錶鏈接構成關係
'銷售記錄'[銷售額] 是一個Measure
Measure_新銷售額=IF(HASONEVALUE('匯率'[貨幣]),'銷售記錄'[銷售額]/VALUES('匯率'[匯率]),'銷售記錄'[銷售額])
注:HASONEVALUE與VALUES構成了一個篩選組合


http://www.cnblogs.com/lizardbi/tag/PowerBI/