Power BI:在给定条件的情况下组合列中的单元格

Power BI: Combining cells from a column where given a condition

我必须在 Power BI (DAX) 中执行一项任务,其中我有一个用户列表及其工作领域。 我得把每个用户对应的所有字段组合起来,找出频率最高的组合。
以下是我打算如何去做。 如何从 "Sample" 文件生成 "Expected Result"?

Sample:
    ID     Value
    a      medicine
    b      automobile
    c      banking
    d      scientist
    a      banking
    a      scientist
    d      banking

Expected Result:
ID      Value Combi
a       medicine|banking|scientist
b       automobile
c       banking
d       scientist|banking

您可以连接多行的值并使用 CONCATENATEX() DAX 函数生成带分隔符的字符串。然后使用 ADDCOLUMNS 和 SUMMARIZE 得到想要的结果。

Expected Table =
SUMMARIZE (
    ADDCOLUMNS (
        'Table',
        "Combined Value", CONCATENATEX (
            FILTER (
                SUMMARIZE ( 'Table', 'Table'[ID], [Value] ),
                [ID] = EARLIER ( 'Table'[ID] )
            ),
            'Table'[Value],
            "|"
        )
    ),
    [ID],
    [Combined Value]
)

它产生:


分解逻辑

我认为最简单的方法是在 table 中创建计算列以生成组合值列:

Combined Value =
CONCATENATEX (
    FILTER (
        SUMMARIZE ( 'Table', 'Table'[ID], [Value] ),
        [ID] = EARLIER ( 'Table'[ID] )
    ),
    'Table'[Value],
    "|"
)

然后您可以根据您的 table 使用之前创建的计算列创建一个汇总 table。要创建计算 table,请转到“建模”选项卡并单击 New Table 图标。

使用这个表达式:

Resumed Table =
SUMMARIZE ( 'Table', [ID], 'Table'[Combined Value] )

你会得到一个 table 这样的:

虽然这两种方法都可以正常工作,但解决此问题的推荐方法是直接从 Power Query 或您的来源。

如果这有帮助,请告诉我。