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

时间:2016-11-30 14:18:07

标签: calculated-columns powerbi dax

我必须在power BI(DAX)中执行任务,其中我有一个用户列表及其工作领域。 我必须结合每个用户对应的所有字段,找到最高频率组合 以下是我计划如何做到这一点。 如何生成"预期结果"来自" Sample"文件?

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

1 个答案:

答案 0 :(得分:2)

您可以使用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]
)

它产生:

enter image description here

细分逻辑

在我看来,最简单的方法是在表格中创建一个计算列,以生成组合值列:

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

然后,您可以使用先前创建的计算列基于您的表创建汇总表。要创建计算表,请转到“建模”选项卡,然后单击New Table图标。

enter image description here

使用此表达式:

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

你会得到一张这样的表:

enter image description here

虽然这两种方法都运行良好,但是直接来自Power Query或来自您的来源的推荐方法是解决此问题。

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