powerbi - DAX-Power BI:如何避免计算列中的循环依赖
问题描述
我在 PowerBi Desktop 中处理报告,我有多个表,有些表有一个包含值的期间列,但其中一对没有。我可以根据记录日期和另一个包含期间名称和数据范围的表来计算期间。当我试图建立基于周期的表之间的关系时,问题就出现了,因为计算的周期和关系的主表之间存在循环依赖关系。关系的想法是能够根据期间过滤报告。
为了简化数据,这就是问题所在:我有一个问题(循环依赖)试图在表Periods[PeriodName]和Income[CalculatedPeriod]之间添加关系
我需要能够在报告视图中对收入和结果使用单个过滤器。通常,这是使用关联所有表的键来完成的。我在处理Periods和Outcome (1 : *)之间的关系时没有问题,因为在表结果中,PeriodName 不是计算列。但是,当我尝试添加与收入列 (1 : *) 的关系时,会检测到循环依赖。我知道是因为[CalculatedPeriod]是使用Periods表计算的,但我不知道如何解决这个问题
时期
PeriodName StartDate FinishDate
Period1 2020-Jan-01 2020-Jan-15
Period2 2020-Jan-15 2020-Jan-31
Period3 2020-Feb-01 2020-Feb-28
Period4 2020-Mar-01 2020-Mar-15
Period5 2020-Mar-15 2020-Abr-2
收入
Date Value [CalculatedPeriod]
2020-Jan-09 25000 Period1
2020-Jan-11 5000 Period1
2020-Jan-28 3000 Period2
2020-Feb-14 18000 Period3
2020-Mar-14 12000 Period4
CalculatedPeriod= CALCULATE(VALUES(Periods[PeriodName]),FILTER(Periods,[Date]>=Periods[StartDate] && [Date] <= Periods[FinishDate]))
结果
Date Value Period
2020-Jan-07 16000 Period1
2020-Jan-17 11000 Period2
2020-Jan-31 5000 Period3
2020-Feb-14 13000 Period3
2020-Mar-14 9000 Period4
数据有很多其他列,并且周期列应该用作过滤器,但如果我无法与所有表创建关系,则过滤器将仅适用于相关表,并将始终显示来自的总数不相关的表。
(Filter: No filters)
Income Outcome
63000 54000
(Filter: Periods[PeriodName:"Period3"])
Income Outcome
63000 18000
(Filter: Periods[PeriodName:"Period5"])
Income Outcome
63000
我怎么解决这个问题?
到目前为止,我可能认为的唯一解决方法是复制周期表。
谢谢
解决方案
如果有 2 个表 A 和 B,您可以使用 DISTINCT,以一个非常简单的模型为例。假设 B 是使用 VALUES ( A[Column] ) 创建的,然后您在 A 和 B 之间建立关系,那么这是不允许的因为 VALUES 取决于由于无效的关系(由于缺少值而导致)而添加到关系一侧的自动空白行,这意味着 A 可能包含由于无效关系而添加的空白行,所以如果关系是可能使用 VALUES,那么 B 将依赖于 A,而 A 将依赖于 B。
CalculatedPeriod =
CALCULATE (
DISTINCT ( Periods[PeriodName] ),
FILTER (
Periods,
[Date] >= Periods[StartDate]
&& [Date] <= Periods[FinishDate]
)
)
推荐阅读
- android - 滑动占位符不显示图像
- java - 如何配置 spring 以使用两个不同的数据源。为 PlatformTransactionManger 错误获取 NoUniqueBeanDefinitionException
- jquery - Jquery Class Increment on append div
- timezone - 谷歌日历在日历的时区中包含 timeMin 的事件列表
- c++ - C++中移动赋值运算符的继承
- c++ - 使用 gcc 解决模棱两可的函数重载问题。为什么?
- reactjs - 如何使用 OnsenUI 和 react-router 进行导航?
- angularjs - Microsoft Edge 问题 - 请求的资源需要用户身份验证
- c# - 实体框架。添加到任何集合类型的通用实体方法
- ruby-on-rails - form_with 客户端验证