问题描述
我正在尝试构建一个计算表,其中包含不同数据集之间的映射。我用于查找的键可以重复,我想生成所有可能组合的列表。在SQL中,这将是一个联接,它将生成其他行。我正在使用计算所得的表在DAX中进行相同的操作,但是LOOKUPVALUE只能返回一行,并且如果找到多个匹配项,则会出错。
提供了多个值的表,其中期望有一个值
我觉得使用摘要列和虚拟关系是可能的,但是尝试此操作时,我也会遇到错误
=SUMMARIZECOLUMNS (
Label[LabelText],User[Dim_CustomerUser_Skey],Computer[Dim_Computer_Skey],FILTER ( Computer,Label[Device] = Computer[Device name]),FILTER ( User,Label[UserName] =User[UserName])
)
但这还给出:
计算表'CalculatedTable 1':无法确定表'Label'中'Device'列的单个值。当度量公式引用包含许多值的列而未指定诸如最小值,最大值,计数或总和之类的聚合以获得单个结果时,会发生这种情况
如何为多对多生成计算表?
解决方法
在SQL中,有联接。幸运的是,DAX提供了表之间的联接。
但是首先,要使用什么功能?在这里:
- 左外:一般,自然LEFTOUTERJOIN
- 右外层:GENERATEALL,NATURALLEFTOUTERJOIN
- 全部外部:Crossjoin,Generate,GENERATEALL
- 内部:生成,NATURALINNERJOIN
- 左防:除
- 反右:除
访问:https://www.sqlbi.com/articles/from-sql-to-dax-joining-tables/