PowerBI - DAX - 根据条件比较 2 列后删除重复项并返回 YES

PowerBI - DAX - Removing Duplicates and Returning YES after comparing 2 columns based on a condition

您好,我有 table(EmpDetailsail),详细信息如下。

固体 | VDM_Name

AA001 | DS3001

AA002 | DS3002

AA001 | DS3007

AA002 | DS3002

在这里,我有 SOID (AA001),它可以访问 2 个 VDM(DS3001 和 DS3007)。此外,AA002 是 table 中的重复条目。

  1. 我想删除重复的条目(比如从 table 中删除 AA002 的一个条目)。
  2. 删除重复项后,如果 SOID 可以访问超过 1 个 VDM,我想创建一个显示“是”的“访问”列。

固体 | VDM_Name |访问

AA001 | DS3001 |是

AA002 | DS3002 |否

AA001 | DS3007 |是

我如何使用 DAX 或 M 查询实现此目的?请帮助

首先删除幂查询中的重复项

let
    Source = Excel.Workbook(File.Contents("C:\Ashok\Power BI\Stack Overflow\Data_20oct21.xlsx"), null, true),
    Data_Sheet = Source{[Item="Data",Kind="Sheet"]}[Data],
    #"Changed Type" = Table.TransformColumnTypes(Data_Sheet,{{"Column1", type text}, {"Column2", type text}}),
    #"Promoted Headers" = Table.PromoteHeaders(#"Changed Type", [PromoteAllScalars=true]),
    #"Changed Type1" = Table.TransformColumnTypes(#"Promoted Headers",{{"SOID ", type text}, {" VDM_Name", type text}}),
    #"Removed Duplicates" = Table.Distinct(#"Changed Type1")
in
    #"Removed Duplicates"

然后写一个dax实现结果

DAX

_tbl =
SELECTCOLUMNS (
    ADDCOLUMNS (
        SUMMARIZE (
            ADDCOLUMNS (
                'Table',
                "allRank",
                    MAXX (
                        FILTER ( 'Table', [SOID] = EARLIER ( 'Table'[SOID] ) ),
                        RANKX (
                            FILTER ( ALL ( 'Table' ), 'Table'[SOID] = EARLIER ( 'Table'[SOID] ) ),
                            'Table'[VDM],
                            ,
                            ASC,
                            DENSE
                        )
                    )
            ),
            [SOID],
            [VDM],
            [allRank]
        ),
        "Access", IF ( [allRank] > 1, "Yes", "No" )
    ),
    "SOID", [SOID],
    "VDM", [VDM],
    "Access", [Access]
)