原數據
要求:
通過重量及分區表來計算相對應的運費。
(一) 分析需求:
要計算運費,需要有2個條件,一個是重量所對應的報價表的行,另外一個就是分區所對應的報價表的列。所以要計算運費,首先得計算這2個條件符合。
(二) 導入報價表數據
導入後的基本樣式如圖,這裡我們沒有再次處理1&2區這個字段,我可以看下做不做對于後面的公式寫法影響大不大,這裡先以不處理這列為例。
(三) 執行逆透視
選擇重量列,執行逆透視其他列的操作,得到一個一維的數據表後直接加載到Power Pivot中當中。
(四) Power Pivot計算列書寫
var fq=if ('表1'[分區] in {"1","2"},"1 & 2",Format('表1'[分區],"0"))var fqb=Filter(G,'G'[屬性]=fq && 'G'[G]>='表1'[重量])var yf=minx(fqb,ROUNDUP([值],1))return yf
解釋:
G表代表的是報價表,表1代表的是我們需要計算清單(重量和分區清單)。
首先得計算分區,1,2都是屬于"1 & 2"這個分區的,所以我們得進行判斷并轉換。
因為在清單數據導入的時候,因為分區都是數字樣子,所以可能會産生數字格式和文本格式的差異,所以這裡使用Format全部進行格式化。
篩選出我們要計算的表,分區一緻,因為是有重量段往上進位的影響,所以我們篩選了2個條件。
最後通過獲得最小重量段的價格來反應實際的運費。
(五) Power Pivot度量值書寫
SumX('表1',var fq=if ('表1'[分區] in {"1","2"},"1 & 2",FORMAT('表1'[分區],"0"))var fqb=filter(G,'G'[屬性]=fq && 'G'[G]>='表1'[重量])var yf=minx(fqb,ROUNDUP([值],1))return yf)
隻需要在外面嵌套一層SumX即可。
我們再回過頭來講數據清洗,把1&2這個分區給處理,通過重複列然後更改标題即可。
這樣表就相對比較幹淨統一了。
MinX(Filter('G副本', 'G副本'[屬性]='表1'[分區] && 'G副本'[G]>='表1'[重量]), RoundUp('G副本'[值],1) )
而且相對代碼也簡單一點。
如果覺得有幫助,那麻煩您進行轉發,讓更多的人能夠提高自身的工作效率。
,