提问人:mark fitzpatrick 提问时间:8/1/2023 最后编辑:mark fitzpatrick 更新时间:8/2/2023 访问量:56
按当前状态计算订单(用户、设备或员工)
Count orders (users, devices or employees) by current status
问:
我有一个问题,几个星期以来一直困扰着我。我发现了非常相似的问题和相关的解决方案,但没有一个能真正给我必要的洞察力来实现我的目标,所以我正在联系 SO。
这篇文章接近于抓住这个问题,但我需要这个问题的变体。
使用原始 OP 的表,我有一个订单表(库存):
编号 | 时间戳 | 地位 |
---|---|---|
1 | 20/08/2018 | 一个 |
1 | 21/08/2018 | B |
1 | 24/08/2018 | C |
2 | 19/08/2018 | 一个 |
2 | 20/08/2018 | B |
2 | 22/08/2018 | C |
2 | 24/08/2018 | D |
3 | 18/08/2018 | 一个 |
3 | 21/08/2018 | B |
4 | 15/08/2018 | 一个 |
4 | 17/08/2018 | B |
4 | 24/08/2018 | D |
我需要显示每天每个状态中的项目数。输出如下所示:
日期 | 一个 | B | C | D |
---|---|---|---|---|
15/08/2018 | 1 | - | - | - |
16/08/2018 | 1 | - | - | - |
17/08/2018 | - | 1 | - | - |
18/08/2018 | 1 | 1 | - | - |
19/08/2018 | 2 | 1 | - | - |
20/08/2018 | 2 | 2 | - | - |
21/08/2018 | - | 4 | - | - |
22/08/2018 | - | 3 | 1 | - |
23/08/2018 | - | 3 | 1 | - |
24/08/2018 | - | 1 | 1 | 2 |
亚历克西斯·奥尔森(Alexis Olsen)提供的解决方案仅用于计算状态B中的项目。
CountB =
VAR CurrDay = MAX(Inventory[TimeStamp])
VAR Summary = SUMMARIZE(
FILTER(
ALL(Inventory),
Inventory[TimeStamp] <= CurrDay
),
Inventory[ID],
"LastTimeStamp",
MAX(Inventory[TimeStamp])
)
VAR LookupStatus = ADDCOLUMNS(
Summary,
"Status",
LOOKUPVALUE(Inventory[Status],
Inventory[ID], Inventory[ID],
Inventory[TimeStamp], [LastTimeStamp]
)
)
RETURN SUMX(LookupStatus, IF([Status] = "B", 1, 0))
但是,我需要一个可以计算任何可能状态的项目的度量。当然,我可以为每个可能的状态创建单独的度量值,但这永远行不通。
就我而言,我不是试图通过库存状态来跟踪项目:我试图按应用程序版本号按天跟踪用户。因此,当我们看到状态 A、B、C 和 D 时,我会有版本 2.1.1、2.1.2、...2.3.0 无限期,并不断添加新的版本号。我需要知道有多少用户使用最新版本,有多少人仍在使用旧版本。每次用户使用应用时,日志都会记录他们拥有的版本。因此,我的真实表将称为 Log,它将具有 User_ID、Date、App_Version,而不是 ID、TimeStamp 和 Status。
我可以创建一个固定的版本号列表,但显然,我不能为每个版本号创建一个度量值。有什么想法吗?
改用 Power Query 的附录。
我编写了一个 PQ 脚本,将数据转换为如下所示的表:
1 | 2 | 3 | 4 | |
---|---|---|---|---|
15/08/2018 | 一个 | |||
16/08/2018 | 一个 | |||
17/08/2018 | B | |||
18/08/2018 | 一个 | B | ||
19/08/2018 | 一个 | 一个 | B | |
20/08/2018 | 一个 | B | 一个 | B |
21/08/2018 | B | B | B | B |
22/08/2018 | B | C | B | B |
23/08/2018 | B | C | B | B |
24/08/2018 | C | D | B | D |
现在。显然,对于 10 年内的 3k 用户来说,这可能是个问题,所以我想知道 DAX 是否会提供其他东西(当有人向我指出它时,我不会看起来像一个彻头彻尾的小丑)。
答:
尝试透视Power Query中的状态列
评论
如果需要将其作为基表,通常会在 Power Query 中创建它。在 DAX 中,您绝对不会这样做。但是,如果您只需要根据预期结果进行分析,那么以下操作就可以了。
桌子:
创建度量值:
Measure = COUNTROWS('Table')
将字段添加到矩阵中,如下所示:
最终结果:
评论