如何在计算列中计算power bi中过滤表的行数

时间:2021-05-10 18:25:01

标签: powerbi dax

我想计算表中特定列的出现次数。我认为这样做的最好方法是计算过滤表的行数。因此,我的 WorkOrders 表如下所示:

WO#  Date       CompCode  Serial#
001  1/1/2021   100       A
001  1/1/2021   101       A
002  1/2/2021   100       B
003  2/1/2021   100       A
004  2/2/2021   100       B
005  2/15/2021  101       A
006  3/1/2021   102       A
006  3/1/2021   100       A

我想创建一个新列,通过 Serial# 计算 CompCode 上的出现次数。不保证数据按日期排序。因此,我尝试使用以下公式计算过滤表的行数:

COMP_OCCURANCE = 
CALCULATE(
    COUNTROWS(WorkOrders), 
    Serial# = Serial#, 
    Date <= Date, 
    CompCode = CompCode
)

我认为这会起作用,但它不起作用。所需的结果如下所示:

WO#  Date       CompCode  Serial#  COMP_OCCURANCE
001  1/1/2021   100       A        1
001  1/1/2021   101       A        1
002  1/2/2021   100       B        1
003  2/1/2021   100       A        2
004  2/2/2021   100       B        2
005  2/15/2021  101       A        2
006  3/1/2021   102       A        1
006  3/1/2021   100       A        3

预先感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

试试这个:

COMP_OCCURANCE = 
VAR CurrentSerial = WorkOrders[Serial #]
VAR CurrentDate = WorkOrders[Date]
VAR CurrentCode = WorkOrders[CompCode]
VAR Result =
    CALCULATE (
        COUNTROWS ( WorkOrders ),
        WorkOrders[Serial #] = CurrentSerial,
        WorkOrders[CompCode] = CurrentCode,
        WorkOrders[Date] <= CurrentDate,
        REMOVEFILTERS ( WorkOrders )
    )
RETURN
    Result

屏幕截图 - https://ibb.co/Bj5xrFS

答案 1 :(得分:0)

对于这种类型的计算,您必须依赖一列来对数据进行排序/排序。由于在这种情况下您不能使用 Date,因此我认为您可以在这种情况下使用“WO#”列。如果这是可以接受的,您可以尝试以下措施来获得预期的输出-

COMP_OCCURANCE = 
CALCULATE(
    COUNT(your_table_name[WO#]),
    FILTER(
        ALL(your_table_name),
        your_table_name[WO#] <= MIN(your_table_name[WO#])
            && your_table_name[CompCode] = MIN(your_table_name[CompCode])
            && your_table_name[Serial#] = MIN(your_table_name[Serial#])
    )
)

输出-

enter image description here