Power BI根据一定范围内的度量获取记录数

Posted

技术标签:

【中文标题】Power BI根据一定范围内的度量获取记录数【英文标题】:Power BI get count of records based on measure within a certain range 【发布时间】:2021-08-05 02:19:34 【问题描述】:

我可以使用计算列来做到这一点,但我想知道它是否可以通过度量来简化。我有一个包含任务截止日期列的任务表,并创建了一个度量来计算距离截止日期还有多少天:Days to Due Date = sumx('Data Submittals', datediff(TODAY(), 'Data Submittals'[Due Date], DAY));这按预期工作。

我想获取度量值在未来某个日期范围内(0-30 天、30-60 天、60-90 天等)的记录数;这些日期桶在一个表中,每个桶都有一个最小值和最大值。是否可以创建一个单独的度量来标识每个存储桶的计数,然后将日期存储桶名称和计数(新度量)添加到表中?寻找这样的东西:

Date Range Count
0 - 30 Days 1
30 - 60 Days 0
60 - 90 Days 2
90+ Days 2

我尝试调整在CALCULATE 中使用RANKX 的示例:

CALCULATE(count('Data Submittals'[Title]),
    FILTER(VALUES('Data Submittals'[Title]),
        COUNTROWS(FILTER('Date Groups',
            RANKX(ALL('Data Submittals'[Title]), [Days to Due Date],, DESC) > 'Date Groups'[Min] &&
            RANKX(ALL('Data Submittals'[Title]), [Days to Due Date],, DESC) <= 'Date Groups'[Max])
        )
    )
)

这给了我前两组的错误计数(它包括过去截止日期的任务)。我还尝试在COUNTX (COUNTX('Date Groups', if([Days to Due Date] &gt; 'Date Groups'[Min] &amp;&amp; [Days to Due Date] &lt;= 'Date Groups'[Max], 1))) 中使用IF,但这不会返回任何内容。我觉得我可能想多了。

【问题讨论】:

【参考方案1】:

大概是这样的:

Count per day range := 
VAR _min = SELECTEDVALUE ( 'Date Groups'[Min] )
VAR _max = SELECTEDVALUE ( 'Date Groups'[Max] )
RETURN
COUNTROWS ( 
    FILTER (
        ALL ( 'Data Submittals' ) , 
        [Days to Due Date] > _min &&
        [Days to Due Date] <= _max
    )
)

【讨论】:

做到了。你能确认我对这里发生的事情的理解吗? ALL 删除所有过滤器,以便考虑表中的所有记录;如果我在表中有这个,SELECTEDVALUE 仅适用于我有不同的存储桶名称(即,它可以获得存储桶的关联最小值和最大值);并在FILTER 中包含所有这些设置COUNTROWS 的上下文。 你在正确的轨道上。一些细微差别:SELECTEDVALUE 如果它是唯一的,则返回一个值 - 通常在行上下文中,或者如果像 VALUES 这样的函数返回一行。如果无法找到唯一值,您可以在 SELECTEDVALUE 中添加第二个参数以覆盖 BLANK 返回。 FILTER 创建一个过滤表,其中 ALL ( 'Data Submittals' ) 是表参数 - 就像你说的那样。 FILTER 中的另一个参数是实际的过滤器,它将是在过滤器中评估每一行的条件。 COUNTROWS 只计算表格的行数。

以上是关于Power BI根据一定范围内的度量获取记录数的主要内容,如果未能解决你的问题,请参考以下文章

Power BI多个度量值进行动态分析

power bi度量值怎么写?有啥方法吗,求教程!

POWER BI 自定义显示图标

如何根据 Power BI 中的表数据行选择筛选卡片?

Power BI- 矩阵颜色自定义设置

如何在 Power BI 中使用 DAX 获取柱形图的平均列百分比度量?