Power BI-检查事件是否在相关表中的两个日期之间

yaxx0r

假设我有一个项目及其相关公司,日期和成本的表格:

在此处输入图片说明

项目ID是唯一的,但是一个公司可以有多个项目。该表与“公司”表链接(很多):

在此处输入图片说明

然后将其与“状态”表链接(一对多):

在此处输入图片说明

我只是在这里使用颜色,状态类型是任意的。

我正在寻找一种仅在公司处于“绿色”状态时汇总每个公司的项目成本的方法。我认为它可能是Project表上的计算列,也许只是一个True / False标志。查看状态表,按公司过滤,将状态过滤为绿色,如果Project [Date]在开始日期和结束日期之间,则返回True。

在上面的示例中,三个项目将被标记为True:00001、0006和00007。

在DAX中执行此操作的最佳方法是什么?

血清素

由于在样本数据中,同一时期内同一公司的红色和绿色状态重叠,因此我们假设,如果所选日期存在绿色状态,则即使该相同日期也存在红色状态,该状态也是绿色时期和同一家公司。

可能的解决方案是首先添加带有布尔标志IsGreen的计算列。

这是一个简单的公式,它在状态表上进行迭代,检查公司ID,状态和日期间隔。

由于这是计算列,因此仅在刷新期间执行,并且不会影响度量的性能。

IsGreen =
VAR ProjectCompanyID = Project[Company ID]
VAR ProjectDate = Project[Date]
RETURN
    NOT ISEMPTY (
        FILTER (
            'Status',
            RELATED ( Company[Company ID] ) = ProjectCompanyID
                && 'Status'[Status] = "Green"
                && ProjectDate >= 'Status'[Start Date]
                && ProjectDate <= 'Status'[End Date]
        )
    )

然后,我们可以使用IsGreen计算列实现度量SumOfCostIfGreen

SumOfCostIfGreen = 
CALCULATE ( SUMX ( Project, Project[Cost] ), Project[IsGreen] )

这是结果表的视觉效果

桌面视觉

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章