powerbi - dax - 计算日期之间的行数
问题描述
我有一张像
Account Open Close
1 01/01/2018 01/01/2019
2 01/01/2018 01/01/2020
3 01/01/2019 01/01/2021
4 01/01/2021
5 01/01/2019 01/01/2020
我有兴趣计算每年年底仍然活跃的帐户数量:
Year Count
2018 2
2019 3
2020 1
2021 1
我不确定这是否可以从Account
表本身推导出来,所以我创建了一个日期跨度多年的日期表。我添加了一列
active_accounts = countrows ( Accounts, FILTER ( Accounts[Open] >= Date_table[Date] && Date_table[Date] < Accounts[Close]
该公式似乎作为一个附加列工作,但由于日期表包含许多日期,因此计算时间非常长。因此,我尝试将该公式用作 DAX 度量,但在比较多个表之间的列时似乎遇到了麻烦:
a single value for column 'Date' in table 'date_table' can't be determined. This can happen when a measure refers to a column containing many values without specifying aggregation
计算特定年份的活跃帐户数量的最简单方法是什么?这可以在没有日期表的情况下完成吗?
编辑:附上and使措施有效date_table[date]
,但数字不正确。-进一步的研究表明这可能需要min()
max()
CROSSJOIN()
编辑:看起来这可以通过创建一个笛卡尔积来完成 b/wdate_table
并且Account
通过FILTERING
whereDate_table.Date
大于Open
但小于Close
解决方案
您已经创建了一个日历表,您可以通过以下措施实现最终目标
_mX:=
VAR _1 =
GENERATEALL (
'fact',
DATESBETWEEN ( 'Calendar'[Calendar_Date], 'fact'[Open], 'fact'[Close]-1 )
)
VAR _2 =
ADDCOLUMNS (
_1,
"Calendar_Year",
CALCULATE (
MAXX (
FILTER ( 'Calendar', 'Calendar'[Calendar_Date] = [Calendar_Date] ),
'Calendar'[Calendar_Year]
) + 0
)
)
VAR _3 =
SUMMARIZE ( _2, [Calendar_Year], [Account] )
VAR _4 =
GROUPBY ( _3, [Calendar_Year], "count", COUNTX ( CURRENTGROUP (), [Account] ) )
VAR _5 =
ADDCOLUMNS (
'Calendar',
"ct",
CALCULATE (
MAXX (
FILTER ( _4, [Calendar_Year] = MAX ( 'Calendar'[Calendar_Year] ) ),
[count]
)
)
)
RETURN
MAXX ( _5, [ct] )
该度量取决于具有最小列的日历表,例如以下,并且日历与事实无关
| Calendar_Date | Calendar_Year |
|---------------|---------------|
| 1/1/2018 | 2018 |
推荐阅读
- java - 如何将数据从一个活动发送到android中的另一个活动
- excel - VBA:通过多列进行vlookup
- node.js - 构建时 /dist 中缺少从 /src 手动创建的子文件夹
- r - R Shiny 中是否有 R 函数来了解跨类别的均值
- php - 在 WordPress 中尝试添加过滤器以在正文中添加类时搜索功能和全局 $post 对象之间的冲突
- python - Reshaping of a tensor with adaptive shape results in unexpected resulting shape
- powershell - 导出不是某些组成员的组的 csv
- php - 统计登录的用户数量
- r - 使用向量的元素与命名列表相交
- c# - 如何从 Azure AD 获取帐户?