首页 文章

通过DAX中的桥接表模拟相关

提问于
浏览
0

我正在为基于MySQL的SugarCRM应用程序构建SSAS表格模型 . 令人不快的SugarCRM功能之一是在 real 关系仅为 one-to-many 的情况下创建桥接表(即事实上 many-to-many 关系) . 当我需要从 one 侧的表中获取值到 many 侧的表中的计算列时,此冗余桥表会导致问题 .

我在 many 方面尝试了类似于计算列的内容:

=
CALCULATE (
    VALUES ( 'OneSideTable'[field_i_need] ),
    FILTER (
        'OneSideTable',
        CALCULATE (
            COUNTROWS (
                FILTER (
                    'BridgeTable',
                    'BridgeTable'[ManyTableID] = ManyTable[ID]
                )
            )
        )
            = 1
    )
)

但它抛出一个错误:

无法在当前上下文中确定表'ManyTable'中列'ID'的值 . 检查计算表达式中引用的所有列是否存在,并且没有循环依赖项 . 当度量的公式直接引用列而不对该列执行任何聚合(例如求和,平均值或计数)时,也会发生这种情况 . 该列没有单个值;它有许多值,每个表对应一行,并且没有指定任何行 .

在这种特殊情况下,有没有办法模仿RELATED函数?

1 回答

  • 0

    看起来我找到了解决方案,它似乎有点简单,我以前想过:

    =
    CALCULATE (
        VALUES ( 'BridgeTable'[OneTableID] ),
        FILTER (
            RELATEDTABLE ( 'BridgeTable' ),
            'BridgeTable'[deleted] = 0
        )
    )
    

    注意使用 'BridgeTable'[deleted] = 0 过滤规则以避免获取与非活动相关的OneTableID . 这是与SugarCRM相关的特殊功能 .

相关问题