Powerbi 如何在计算列中计算power bi中筛选表的行数

Powerbi 如何在计算列中计算power bi中筛选表的行数,powerbi,dax,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

我想计算表中特定列的发生次数。我认为最好的方法是计算过滤表的行数。因此,我的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
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
我想创建一个新列,用串行#计算CompCode上的发生次数。不存在按日期排序的数据。因此,我尝试使用以下公式计算筛选表的行数:

COMP_OCCURANCE = 
CALCULATE(
    COUNTROWS(WorkOrders), 
    Serial# = Serial#, 
    Date <= Date, 
    CompCode = CompCode
)
提前感谢您的帮助。

试试这个:

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
COMP\u发生率=
VAR CurrentSerial=工作顺序[序列号]
VAR CurrentDate=工作订单[日期]
VAR CurrentCode=工单[CompCode]
VAR结果=
算计(
计数行(工作顺序),
工单[序列号#]=当前序列号,
工单[CompCode]=当前代码,

WorkOrders[Date]对于这种类型的计算,您必须依赖一列来对数据进行排序/排序。在这种情况下,您不能使用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#])
    )
)
COMP\u发生率=
算计(
计数(您的表名[WO]),
滤器(
全部(您的表格名称),
您的表格名称[WO]