首页 > 解决方案 > DAX - 计算多对多映射?

问题描述

我正在尝试构建一个计算表,其中包含不同数据集之间的映射。我用来进行查找的键可以重复,我想生成所有可能组合的列表。在 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”:无法确定表“标签”中“设备”列的单个值。当度量公式引用包含许多值但未指定聚合(例如 min、max、count 或 sum)以获得单个结果的列时,可能会发生这种情况

如何为多对多生成计算表?

标签: ssasdaxssas-tabularazure-analysis-services

解决方案


在 SQL 中,有 Join。幸运的是,DAX 提供了表之间的连接。

但首先,要使用什么功能?这里是:

  1. 左外:GENERATEALL、NATURALLEFTOUTERJOIN
  2. 右外:GENERATEALL、NATURALLEFTOUTERJOIN
  3. 全外:交叉连接、生成、生成
  4. 内部:GENERATE、NATURALINNERJOIN
  5. 左反:除了
  6. 右反:除了

访问:https ://www.sqlbi.com/articles/from-sql-to-dax-joining-tables/


推荐阅读