PowerBI之DAX神功:第1卷第13回 嵌套多個表的行上下文
上節(jié)課我們了解到,迭代函數(shù)可以創(chuàng)建行上下文,現(xiàn)在就來深入學習創(chuàng)建的方法:


無論你有多少張表,要遵循《DAX神功》第1課講的表關(guān)系,表與表之間都是1對多的關(guān)系
配合我們的關(guān)系函數(shù):
Related函數(shù):(多端找一端)
Relatedtable函數(shù):(一端找多端)
【新建列】實際得分 = CALCULATE(sumx('成績表','成績表'[分數(shù)]+RELATED('學生表'[加分])))

【度量值】實際得分 = sumx('成績表','成績表'[分數(shù)]+RELATED('學生表'[加分]))
無論有多少張表連線,只要是符合一對多關(guān)系,我們創(chuàng)建行上下文時,都這樣做。

現(xiàn)在回答網(wǎng)友問題:
網(wǎng)友在一端表中,新建列,公式如下:
列 = CALCULATE(sumx('學生表','學生表'[加分]+Relatedtable('成績表'[分數(shù)])))


很明顯語法錯了:
Related(表[列]):(多端找一端)
Relatedtable(表):(一端找多端)
知道為什么這兩個函數(shù)參數(shù)不一樣嗎?因為多端可以向一端獲取某列的值類似Vlookup,而一端可以篩選多端表。
如果我想在一端表上新建列實現(xiàn)這個功能應(yīng)該怎么做?
列 = CALCULATE(sum('成績表'[分數(shù)]))+'學生表'[加分]
解讀:CALCULATE(sum('成績表'[分數(shù)])) 就是一個度量值,也可以看成是一個行上下文套了Calculate,具備了篩選功能,將他放在一端表中自然可以篩選,再與加分字段生成行上下文。

這件事正確的姿勢是什么?
答:寫一個度量值,放到矩陣或表
【度量值】最終得分 = sumx('成績表','成績表'[分數(shù)]+Related('學生表'[加分]))


現(xiàn)在回答網(wǎng)友第2個問題:
sumx第1參數(shù),為什么必須是多端表,為什么不能是一端表?
答:sumx第一參數(shù)并沒有規(guī)定必須使用哪端表,sumx只是一個迭代函數(shù)逐行計算。
以這個度量值為例:
最終得分 = sumx('成績表','成績表'[分數(shù)]+Related('學生表'[加分]))
如果你將sumx第一參數(shù)改為1端表,請問,你一端如何找多端的列進行相加呢?
因為:
Related(表[列]):(多端找一端)
Relatedtable([表]):(一端找多端)
除了以上問題你要考慮,你還要考慮1端篩選多端的問題
假設(shè):
【度量值】加分上升 = sumx('學生表','學生表'[加分]*2)

我在自己表里篩選肯定沒問題
