使用 DAX 计算列计算连续值,其中值根据条件重新启动

问题描述 投票:0回答:1

我有一个 Power BI 计算表,设置如下,其中包含客户、项目、周和削减案例。我希望添加另一列,该列对削减案例 > 0 的连续周数进行求和。最重要的是,即使客户/项目分组保持不变,我也需要在削减案例 = 0 的任何一周后,将该索引重新启动到 1 (参见“目标”栏)

一些错综复杂的问题 - 周开始日期有时会跳过几周,这很好,我只需要知道连续出现的任何周的连续剪切周。我不关心没有削减的任何周或这些周的排名中显示的值。

客户 项目 客户项目切割 切案例 当前指数(错误) 目标
客户1 A 客户1_A_切 7/29/24 1 1 1
客户1 A 客户1_A_切 8/26/24 2 2 2
客户1 A 客户1_A_NoCut 9/2/24 0 0 0
客户1 A 客户1_A_NoCut 9/9/24 0 0 0
客户1 A 客户1_A_NoCut 9/16/24 0 0 0
客户1 A 客户1_A_切 10/7/24 3 3 1
客户1 A 客户1_A_切 10/14/24 2 4 2
客户1 A 客户1_A_切 10/21/24 6 5 3
客户2 B 客户2_B_切 9/9/24 2 1 1
客户2 B 客户2_B_NoCut 9/16/24 0 0 0
客户2 B 客户2_B_切 9/23/24 2 2 1
客户2 B 客户2_B_切 9/30/24 2 3 2
客户2 B 客户2_B_切 10/7/24 3 4 3
客户2 B 客户2_B_NoCut 10/14/24 0 0 0
客户2 B 客户2_B_切 10/21/24 2 5 1

我当前使用 Rankx 的尝试不起作用,因为这些值不会重新启动,这是因为我无法弄清楚如何为重新启动条件创建唯一标识符。

IF(Table1[Cut Cases]<=0,0,Rankx(Filter(Table1,EARLIER(Table1[CustomerItemCut]) = Table1[CustomerItemCut]),Table1[Week Begin Date],,ASC,Dense))

我试图了解如何A.创建一个唯一标识符,显示该组所在的“剪切实例”(如下所示),以便rankx可以工作或

客户项目切割
客户1_A_Cut1
客户1_A_Cut1
客户1_A_NoCut
客户1_A_Cut2
客户1_A_Cut2
客户1_A_Cut2
客户1_A_NoCut

B.用我现有的方法找出另一种方法

powerbi dax powerbi-desktop calculated-columns
1个回答
0
投票

你可以尝试创建一个专栏

column=
VAR _last =
    MAXX (
        FILTER (
            'Table',
            'Table'[Customer] = EARLIER ( 'Table'[Customer] )
                && 'Table'[CustomerItemCut] <> EARLIER ( 'Table'[CustomerItemCut] )
                && 'Table'[Week] < EARLIER ( 'Table'[Week] )
        ),
        'Table'[Week]
    )
VAR _start =
    MINX (
        FILTER (
            'Table',
            'Table'[CustomerItemCut] = EARLIER ( 'Table'[CustomerItemCut] )
                && 'Table'[Week] > _last
        ),
        'Table'[Week]
    )
RETURN
    IF (
        CONTAINSSTRING ( 'Table'[CustomerItemCut], "No" ),
        0,
        CALCULATE (
            COUNTROWS ( 'Table' ),
            FILTER (
                'Table',
                'Table'[CustomerItemCut] = EARLIER ( 'Table'[CustomerItemCut] )
                    && 'Table'[Week] >= _start
                    && 'Table'[Week] <= EARLIER ( 'Table'[Week] )
            )
        )
    )

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.