通过过滤 DAX 中的第二列对一列的值进行排名

Rank Values of one column by filtering on 2nd column in DAX

我正在尝试使用 RANKX 公式对一列的值进行排名,但过滤第二列的值。在这个例子中,col2 是一个简单的计数器 运行 的递增值。我正在尝试查找 item_id 相对于 col1.

的排名值
col1    col2
1001    8001
1001    8002
1002    8003
1002    8004
1002    8005

我想找出一个 col3 可以这样写:

col1    col2    col3
1001    8001    1
1001    8002    2
1002    8003    1
1002    8004    2
1002    8005    3

因为那将是 col2 相对于 col1 的排名。

您根本不需要使用 RANKX。请参阅精湛 http://www.daxpatterns.com/ 中有关 EARLIER 的部分。在 table:

中添加一个新的计算列
=
COUNTROWS (
    FILTER (
        MyTable,
        [col2] <= EARLIER ( [col2] )
            && [col1] = EARLIER ( [col1] )
    )
)

如果您确实想使用 RANKX,您可以按如下方式调整公式:

=
RANKX (
    FILTER ( MyTable, [col1] >= EARLIER ( [col1] ) ),
    [Col2],
    ,
    1
)