我的模型包含事实表和维度。该维度包含全名、登录名、访问权限、域。域是一个数字,用作事实表的键。这是一些虚拟数据:
全名 | 登录 | 访问 | 域名 |
---|---|---|---|
约翰·多伊 | NET\JDOE | 用户 | 3000454 |
约翰·多伊 | NET\JDOE | 用户 | 3002656 |
约翰·多伊 | NET\JDOE | 用户 | 3000454 |
拉拉·多伊 | NET\LDOE | 用户 | 3000454 |
拉拉·多伊 | NET\LDOE | 用户 | 3000001 |
该维度没有具有唯一值的字段,并且如您所见,用户可以具有相同的域。我尝试了两种部分有效的方法。 我直接创建了多对多关系。在表格视觉中使用时,它可以快速且正确地工作。当我转移度量中的逻辑并将度量添加到同一视觉效果时,我得到的结果就好像关系有问题一样。我尝试的另一种方法是复制维度,删除除键列(域)之外的所有列并删除重复项。这样,我在事实和维度之间创建了桥梁关系(具有 1:* 基数),并设置了这两种关系来过滤两种方式。
然而,结果是:
此视觉对象具有来自维度的 FullName、来自事实的字段的 SUM 以及一个度量。在视觉层面上,我在 FullName 列上有一个过滤器,用于排除某个人,并在事实中设置一个 Year 字段,仅包含 2024 年。该度量基本上是计算事实字段的总和,并将过滤器应用于视觉效果。
我之前多次尝试过桥接技术,而且很有效。但在目前的情况下,我看不出问题出在哪里。怎么可能简单地拖动字段并使用视觉级别过滤器就可以工作,而使用度量却不起作用呢?也许我没有完全理解多对多关系和双过滤方向的局限性?
如果没有明显的解决方案,我可以提供事实表或 pbix 中的示例。
保持原始表之间的多对多关系,我创建了此度量以获得所需的结果:
Result2 =
VAR thisValue = MAXX('Dimension', 'Dimension'[FullName]) //gets current full name
VAR thisDomain = FILTER('Dimension', [FullName] = thisValue) //gets all domains for full name
VAR thisFact = FILTER('Fact', CONTAINS(thisDomain, [Domain], [Domain])) //filters fact for the name's domains
RETURN //sums all the results given criteria
CALCULATE(SUMX(thisFact, [Result])
, 'Fact'[Year] = 2024
, 'Dimension'[FullName] <> "Jamie Jackson"
)
输出示例: