0

我有一个如下示例表

强文本

任何相同的IDM 名称为 A(以“Ann”开头)和 B,然后我希望将所需的解决方案作为 A,B

然后我考虑将任何单词“Ann”和 B 计为 1,所以当任何相同的 ID 的列Calculation为 2 或大于 2 时,给我“A,B”。否则,只需在“M Name”列中返回原始名称

有人可以帮助 PowerBI DAX 或有任何建议吗?

4

1 回答 1

1

有多种方法可以做到这一点:

使用 FILTER 计算的列:

Column 1 = 
VAR CurrentID = rjap[ID]
VAR CurrentName = rjap[M Name]
VAR RowsWithSameID =
    FILTER ( rjap, rjap[ID] = CurrentID )
VAR Result =
    FILTER (
        RowsWithSameID,
        LEFT ( rjap[M Name], 3 ) = "Ann"
            || LEFT ( rjap[M Name], 1 ) = "B"
    )
RETURN
    IF ( COUNTROWS ( Result ) >= 2, "A, B", CurrentName )

在此处输入图像描述

使用 CALCULATETABLE 计算的列

Column 2 =
VAR CurrentID = rjap[ID]
VAR CurrentName = rjap[M Name]
VAR Result =
    CALCULATETABLE (
        rjap,
        LEFT ( rjap[M Name], 3 ) = "Ann"
            || LEFT ( rjap[M Name], 1 ) = "B",
        rjap[ID] = CurrentID,
        REMOVEFILTERS ( rjap )
    )
RETURN
    IF ( COUNTROWS ( Result ) >= 2, "A, B", CurrentName )

在此处输入图像描述

使用 FILTER 测量:

Measure 1 = 
VAR CurrentID = SELECTEDVALUE ( rjap[ID] )
VAR CurrentName = SELECTEDVALUE ( rjap[M Name] )
VAR RowsWithSameID =
    FILTER ( 
        ALLSELECTED ( rjap ), 
        rjap[ID] = CurrentID
    )
VAR Result =
    FILTER (
        RowsWithSameID,
        LEFT ( rjap[M Name], 3 ) = "Ann"
            || LEFT ( rjap[M Name], 1 ) = "B"
    )
RETURN
    IF ( COUNTROWS ( Result ) >= 2, "A, B", CurrentName )

在此处输入图像描述

使用 CALCULATETABLE 测量

Measure 2 = 
VAR CurrentID = SELECTEDVALUE ( rjap[ID] )
VAR CurrentName = SELECTEDVALUE ( rjap[M Name] )
VAR Result =
    CALCULATETABLE ( 
        rjap,
        LEFT ( rjap[M Name], 3 ) = "Ann"
            || LEFT ( rjap[M Name], 1 ) = "B",
        rjap[ID] = CurrentID,
        ALLSELECTED ( rjap ) 
    )
RETURN
    IF ( COUNTROWS ( Result ) >= 2, "A, B", CurrentName )

在此处输入图像描述

我使用了 ALLSELECTED,因此如果您在切片器上进行选择,您将只能看到所选 ID 的结果

在此处输入图像描述

于 2021-04-16T07:30:59.597 回答