在 Power BI 中查找并标记具有给定成分的项目

Find and mark items with given composition in Power BI

我有几百万行数据如下。

CUSTOMER_NO     SERVICE
11111111        AB
11111111        BC
11111111        XY
11111111        SA
55555555        AB
55555555        BC
55555555        SA
55555555        HG
77777777        WE
77777777        LK
77777777        AS
77777777        GG
22222222        AB
22222222        BC
22222222        SA
99999999        WE
99999999        AS
99999999        GG

我们决定将享受我们部分服务的客户标记为黄金组或白银组。

我需要用下面的方式总结一下。

CUSTOMER_NO SERVICE     **MARKER**
11111111    AB      SILVER +XY
11111111    BC      SILVER +XY
11111111    XY      SILVER +XY
11111111    SA      SILVER +XY
55555555    AB      SILVER +HG
55555555    BC      SILVER +HG
55555555    SA      SILVER +HG
55555555    HG      SILVER +HG
77777777    WE      GOLD + LK
77777777    LK      GOLD + LK
77777777    AS      GOLD + LK
77777777    GG      GOLD + LK
22222222    AB      SILVER
22222222    BC      SILVER
22222222    SA      SILVER
99999999    WE      GOLD
99999999    AS      GOLD
99999999    GG      GOLD

银、金等的成分如下。

GOLD    WE
GOLD    AS
GOLD    GG
SILVER  AB
SILVER  BC
SILVER  SA

由于它的庞大规模,我很难在 Excel 中做到这一点,而且作为 Power Bi 的新手,我正在努力构建网格。

你能帮我在 Power BI 中解决这个问题吗?

将两个 table 加载到 Power BI,并使用关系图标加入客户 table 服务字段和引用 table。这将允许构建一个 table 给你所有三行

尝试以下代码(数据 - 来自 post 的第一个 table,标记 - 最后一个)。注意,例如,如果 Service = XY 出现在其他人之前,那么对于 Customer = 11111111,标记填充为 XY + SILVER,而不是 SILVER + XY.

let
    group = Table.Group(Data, {"CUSTOMER_NO"}, {"MARKER", each _[SERVICE]}),
    transform = Table.TransformColumns(group, {"MARKER", each Text.Combine(
                List.Distinct(List.Transform(_, each try Markers{[SERVICE = _]}[MARKER] otherwise _)),
                " + ")}),
    join = Table.Join(Data,{"CUSTOMER_NO"},transform,{"CUSTOMER_NO"})
in
    join