groupby的PowerBI DAX问题或其他可能的问题

groupby的PowerBI DAX问题或其他可能的问题,powerbi,dax,powerbi-desktop,daxstudio,Powerbi,Dax,Powerbi Desktop,Daxstudio,我有一个如下的样品表 任何相同的ID都有列M Name和A(以“Ann”开头)和B,然后我希望得到所需的解决方案,如A,B 然后我考虑将任何单词“Ann”和B计算为1,因此当任何相同ID的列计算为2或大于2时,给我“A,B”。否则,只需在“M name”列中返回原始名称 有人能帮我使用PowerBI DAX吗?或者有什么建议吗?有多种方法可以做到这一点: 使用过滤器计算的列: Column 1 = VAR CurrentID = rjap[ID] VAR CurrentName = rjap

我有一个如下的样品表

任何相同的ID都有列M Name和A(以“Ann”开头)和B,然后我希望得到所需的解决方案,如A,B

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


有人能帮我使用PowerBI DAX吗?或者有什么建议吗?

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

使用过滤器计算的列:

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 )
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计算的列

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 )
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 )

使用过滤器测量:

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 )
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 )

用可计算的方法测量

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 )
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的结果


您是在寻找计算列还是度量值?在这个场景中,无论哪一个是最好的,我认为最好是有计算列,因为我可以再次检查