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] > 'Date Groups'[Min] && [Days to Due Date] <= '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根据一定范围内的度量获取记录数的主要内容,如果未能解决你的问题,请参考以下文章