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

要获得所需的矩阵,您需要执行以下步骤:

  1. 创建一个计算列,returns最高步号。对于给定的订单号。

    Path Length =
    VAR order_no = 'Table'[order no]
    RETURN
        MAXX (
            FILTER ( ALL ( 'Table' ), 'Table'[order no] = order_no ),
            'Table'[Step]
            )
    
  2. 创建另一个计算列,当路径长度与给定订单号的最高步长值相同时,returns 1。否则,它 returns 一个空白值。

    Comp = 
        IF ( 'Table'[Step] = 'Table'[Path Length], 1, BLANK () )
    
  3. 现在创建一个矩阵,其中 order no 作为 RowsStep 作为 Columnsmeasure Comp as Values in it.

  4. 右键单击列中的步骤并启用显示没有数据的项目选项。您应该会得到想要的结果。

作为替代解决方案,这是一个纯 DAX 解决方案。

步骤:

  1. 找出每个订单的最大步数
  2. 存储在 SelectedStep 来自当前过滤器上下文的步骤。
  3. 如果上面的两个相同,则取 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