Dax Measure Count 每个订单的最后一个条目
Dax Measure Count Last Entry for each Order
我有两个 table:
销售额 Header
Order Nr Date Value
258 01.01.2021 50
98 01.01.2021 40
此 table 包含每个订单的一些基本信息。
然后我有一个交易 table,每个订单的路由:
Order Nr Step Quantity
258 01 50
258 02 50
258 03 50
258 04 50
98 01 50
现在我想要一个矩阵,显示每个步骤有多少订单作为最后一个条目对应的步骤。类似于:
Order 01 02 03 04
258 1
98 1
Total 1 0 0 1
你会怎么做?
这是一个示例文件:
https://www.file-upload.net/download-14585836/LastEntry.pbix.html
要获得所需的矩阵,您需要执行以下步骤:
创建一个计算列,returns最高步号。对于给定的订单号。
Path Length =
VAR order_no = 'Table'[order no]
RETURN
MAXX (
FILTER ( ALL ( 'Table' ), 'Table'[order no] = order_no ),
'Table'[Step]
)
创建另一个计算列,当路径长度与给定订单号的最高步长值相同时,returns 1。否则,它 returns 一个空白值。
Comp =
IF ( 'Table'[Step] = 'Table'[Path Length], 1, BLANK () )
现在创建一个矩阵,其中 order no 作为 Rows,Step 作为 Columns 和 measure Comp as Values in it.
右键单击列中的步骤并启用显示没有数据的项目选项。您应该会得到想要的结果。
作为替代解决方案,这是一个纯 DAX 解决方案。
步骤:
- 找出每个订单的最大步数
- 存储在
SelectedStep
来自当前过滤器上下文的步骤。
- 如果上面的两个相同,则取 1,否则取 0。
Count =
VAR MaxStep =
MAXX ( CALCULATETABLE ( 'Table', REMOVEFILTERS ( 'Table'[Step] ) ), [Step] )
VAR SelectedStep =
SELECTEDVALUE ( 'Table'[Step] )
VAR Result =
IF ( SelectedStep = MaxStep, 1, 0 )
RETURN
Result
输出
Table
Order Nr
Step
Quantity
258
1
50
258
2
50
258
3
50
258
4
50
98
1
50
我有两个 table: 销售额 Header
Order Nr Date Value
258 01.01.2021 50
98 01.01.2021 40
此 table 包含每个订单的一些基本信息。 然后我有一个交易 table,每个订单的路由:
Order Nr Step Quantity
258 01 50
258 02 50
258 03 50
258 04 50
98 01 50
现在我想要一个矩阵,显示每个步骤有多少订单作为最后一个条目对应的步骤。类似于:
Order 01 02 03 04
258 1
98 1
Total 1 0 0 1
你会怎么做?
这是一个示例文件: https://www.file-upload.net/download-14585836/LastEntry.pbix.html
要获得所需的矩阵,您需要执行以下步骤:
创建一个计算列,returns最高步号。对于给定的订单号。
Path Length = VAR order_no = 'Table'[order no] RETURN MAXX ( FILTER ( ALL ( 'Table' ), 'Table'[order no] = order_no ), 'Table'[Step] )
创建另一个计算列,当路径长度与给定订单号的最高步长值相同时,returns 1。否则,它 returns 一个空白值。
Comp = IF ( 'Table'[Step] = 'Table'[Path Length], 1, BLANK () )
现在创建一个矩阵,其中 order no 作为 Rows,Step 作为 Columns 和 measure Comp as Values in it.
右键单击列中的步骤并启用显示没有数据的项目选项。您应该会得到想要的结果。
作为替代解决方案,这是一个纯 DAX 解决方案。
步骤:
- 找出每个订单的最大步数
- 存储在
SelectedStep
来自当前过滤器上下文的步骤。 - 如果上面的两个相同,则取 1,否则取 0。
Count =
VAR MaxStep =
MAXX ( CALCULATETABLE ( 'Table', REMOVEFILTERS ( 'Table'[Step] ) ), [Step] )
VAR SelectedStep =
SELECTEDVALUE ( 'Table'[Step] )
VAR Result =
IF ( SelectedStep = MaxStep, 1, 0 )
RETURN
Result
输出
Table
Order Nr | Step | Quantity |
---|---|---|
258 | 1 | 50 |
258 | 2 | 50 |
258 | 3 | 50 |
258 | 4 | 50 |
98 | 1 | 50 |