Power BI-计算两个日期之间的活动项目

时间:2019-11-26 15:36:08

标签: powerbi dax

我有一个尝试解决的查询,但是我失败了。

我有一张桌子,上面有物品,想每天计算活动物品。我是在excel中完成的,在过去的7天中我创建了另一列,并使用了countifs。

所以我的excel公式是

=COUNTIFS($A$3:$A$30001,"<="&F3,$B$3:$B$30001,">="&F3)

但是我在Power BI中需要同样的功能。

我的数据表称为ADW_DEFECTS,其中有两列包含打开和关闭日期。

ISSUE_DTTM  CLOSE_DTTM
26/11/2019  
26/11/2019  
26/11/2019  
26/11/2019  
26/11/2019  
25/11/2019  
25/11/2019  
25/11/2019  
24/11/2019  25/11/2019
24/11/2019  25/11/2019
24/11/2019  25/11/2019
24/11/2019  26/11/2019
23/11/2019  24/11/2019
23/11/2019  24/11/2019
23/11/2019  25/11/2019
22/11/2019  22/11/2019

现在,我发现在过去7天的计算中我需要转到另一个表(我使用了一个名为NEW.DEFECTS_ACTIVE的表)。

这是excel的结果

Dates       Active
26/11/2019  1
25/11/2019  5
24/11/2019  7
23/11/2019  3
22/11/2019  1
21/11/2019  0
20/11/2019  0

因此,Power BI中所需的结果是与excel相同的表。

2 个答案:

答案 0 :(得分:3)

您也可以像这样展开表,尽管最终会得到第二个表:

Expanded_ADW = 
GENERATE(
    CALCULATETABLE(
        ADW_DEFECTS;
        ADW_DEFECTS[CLOSE_DTTM] <> BLANK()
    );
    SELECTCOLUMNS(
        GENERATESERIES(
            ADW_DEFECTS[ISSUE_DTTM];
            ADW_DEFECTS[CLOSE_DTTM]
        );
        "Expanded_Date"; [Value]
    )
)

然后有一个与[Expanded_Date]具有1:*关系的日历。在日历表格中带有日期的可视表中,添加以下度量:

Active = COUNTROWS('Expanded_ADW')+0

然后您有一个这样的表:

enter image description here

答案 1 :(得分:2)

首先,我将创建一个日期表。有很多方法可以执行此操作-对于更复杂的要求,我更喜欢Power Query,但对于简单的演示,您可以转到 Modeling 功能区,选择 New table 并输入:< / p>

Dates = CALENDARAUTO(1)

接下来查看模型视图,并确保新的日期表与您现有的 ADW_DEFECTS 表之间没有任何关系。

然后,我将转到建模功能区,然后选择新度量,并使用以下DAX公式进行复制:

Active =
SUMX (
    Dates,
    CALCULATE (
        COUNTROWS ( ADW_DEFECTS ),
        FILTER (
            ADW_DEFECTS,
            [Date] >= ADW_DEFECTS[ISSUE_DTTM]
                && [Date] <= ADW_DEFECTS[CLOSE_DTTM]
        )
    )
)

这基本上表示对于日期中的每一行,计算ADW_DEFECTS中有多少行是“活动的”。您必须想象Measure公式在输出视觉的每个单元格中运行。外部SUMX将通过汇总日期级别的结果来计算所有日期的总计-例如多少天?

最后将视觉效果添加到“报告”视图。从“日期”表和“活动”度量中添加“日期”列。如果您不想显示总计,请关闭总计。

它不会产生带有零的多余行,例如20/11/2019,但它们似乎是任意的。如果确实需要它们,只需在度量公式中添加+ 0并过滤Table视觉上的Date列。