我想计算表中特定列的出现次数。我认为这样做的最好方法是计算过滤表的行数。因此,我的 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
预先感谢您的帮助。
答案 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#])
)
)
输出-