https://zhuanlan.zhihu.com/p/64421378
Excel中知名度最高的函數當屬VLOOKUP,它的確很有用,可以在兩個表之間進行匹配數據,使工作效率大大提升,雖然它也有很多局限性。這里不討論VLOOKUP,而是學習一個和VLOOKUP功能很相似的DAX函數:RELATED.
RELATED
RELATED是一個值函數,它的參數是一列,RELATED函數也是把一個表的數據通過匹配到另一個表中,前提是使用前應該在兩個表之間建立關系。
表之間的關系圖如下,
訂單表的數據如下,
如果想在訂單表中加入產品類別,可以在這個表中新建列,輸入,
產品類別 = RELATED('產品'[產品類別])
訂單表中立即出現了產品類別列,
RELATED函數就是這么簡單快捷,它只能用於計算列,根據當前的行上下文返回另一表中對應列的數據,適合把維度表的數據,匹配到事實表中,也就是沿着關系的多端找一端的值。
那么如果我們想把事實表的數據,匹配到維度表,從關系的一端找多端的值,怎么辦呢?這時就要用到RELATEDTABLE函數。
RELATEDTABLE
RELATEDTABLE的功能與RELATED類似,不過它返回的是一個表,它的參數也需要一個表,它也是用於計算列,可以沿着關系的一端找多端的值。
比如把訂單表的數據返回到客戶城市中,新建列,如果直接寫,
訂單數據 = RELATEDTABLE('訂單')
將返回錯誤,
因為RELATEDTABLE函數返回的是一個表,無法直接用於計算列。並且上述表達式也沒有任何意義,不知道它到底想要從訂單表中得到什么數據。
如果要避免錯誤,就要把這個函數返回的表進行聚合,比如統計這個表的行數,計算列表達式改為,
訂單數 = COUNTROWS(RELATEDTABLE('訂單'))
返回結果正常,並且該數據有實際意義,計算出了各個城市的訂單數量。