我必须在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
答案 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]
)
它产生:
细分逻辑
在我看来,最简单的方法是在表格中创建一个计算列,以生成组合值列:
Combined Value =
CONCATENATEX (
FILTER (
SUMMARIZE ( 'Table', 'Table'[ID], [Value] ),
[ID] = EARLIER ( 'Table'[ID] )
),
'Table'[Value],
"|"
)
然后,您可以使用先前创建的计算列基于您的表创建汇总表。要创建计算表,请转到“建模”选项卡,然后单击New Table
图标。
使用此表达式:
Resumed Table =
SUMMARIZE ( 'Table', [ID], 'Table'[Combined Value] )
你会得到一张这样的表:
虽然这两种方法都运行良好,但是直接来自Power Query或来自您的来源的推荐方法是解决此问题。
如果这有帮助,请告诉我。