使用 DAX 度量来过滤枢轴以连接单独的列

问题描述 投票:0回答:1

我正在寻找一种方法,使用度量来根据另一列中的唯一值连接一列字符串值,以显示在数据透视表上,并进行适当的过滤。以下是我最近的尝试,目前返回错误。

我只能在 Excel 中使用 DAX,而不使用 PowerPivot,因为这需要与未安装 PowerPivot 的同事共享。

=VAR Var1 = SELECTCOLUMNS(DISTINCT(Range[Col1]), "UHD", Range[Col2])
  
Return

CONCATENATEX(SUMMARIZE(FILTER(Range, Range[Col2] IN Var1),Range[Col1]),Range[Col1],", ")

我尝试了各种过滤方法,但是当我抓住 Col2 进行连接时,行上下文似乎永远不会粘住,并且它总是在没有过滤器的情况下输出。

第 1 栏 第 2 栏 第 3 栏 第 4 栏
5 5a 到 9 是的 姓名1
5 5b 到 9 没有 姓名1
5 5c 到 9 是的 姓名2
6 6a 到 9 是的 姓名2
6 6b 到 9 是的 姓名2
7 7a 到 9 没有 姓名3
7 7b 到 9 是的 姓名3
8 8a 到 9 没有 姓名3

输出枢轴

第 4 栏 测量输出
姓名1 “5a x 9”
姓名2 “5c x 9,6b x 9”
姓名3 “7b x 9”

Col3上的过滤可以在pivot中完成

excel pivot dax measure
1个回答
0
投票

所以这是我在DAX中的想法,但在我看来我认为这种需求应该在Power Query中实现。我将在 DAX 和 Power Query 中提供解决方案。

使用DAX:

Measure Output = 
VAR CurrentName = MAX('Range'[Col4]) 
VAR FilteredRange = FILTER(
    'Range',
    'Range'[Col4] = CurrentName && 'Range'[Col3] = "Yes"
)
VAR SummaryRange = SUMMARIZE(
    FilteredRange,
    'Range'[Col1],
    'Range'[Col4],
    "UniqueConcatCol2", CONCATENATEX(
        DISTINCT(FILTER(FilteredRange, 'Range'[Col1] = EARLIER('Range'[Col1]))),
        'Range'[Col2], ", "
    )
)
RETURN
CONCATENATEX(
    SummaryRange,
    [UniqueConcatCol2],
    ", "
)

enter image description here

使用电源查询:

所以首先我过滤了数据 Col3 = Yes :

enter image description here

然后对于分组依据,我使用 Col4 作为按数据分组的列:

然后我选择“所有行”来创建共享相同 Col4 的所有行的子表。

enter image description here

然后我使用自定义列将新列添加到子表中:

enter image description here

我删除了原来的第 4 栏,然后删除了重复的行:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.