我正在为基于MySQL的SugarCRM应用程序构建SSAS表格模型。令人不快的SugarCRM功能之一是在真实关系仅为many-to-many
的情况下创建桥接表(即实际上one-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函数?
答案 0 :(得分:0)
看起来我找到了解决方案,而且我之前想到的似乎有点简单:
=
CALCULATE (
VALUES ( 'BridgeTable'[OneTableID] ),
FILTER (
RELATEDTABLE ( 'BridgeTable' ),
'BridgeTable'[deleted] = 0
)
)
注意使用'BridgeTable'[deleted] = 0
过滤规则以避免获取与非活动相关的OneTableID。这是与SugarCRM相关的特殊功能。