You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用DAX的EVALUATE函数合并SSAS-Tabular多表的Source.Name列?

合并多表Source.Name列的DAX实现方案

要将SSAS Tabular模型中多个表的Source.Name列值合并为统一的列表/数组,可通过DAX的UNION、SELECTCOLUMNS等函数实现,以下是几种常用场景的代码:

1. 返回去重后的Source.Name值表

如果需要去除重复的文件名,使用DISTINCT配合UNION:

EVALUATE
DISTINCT (
    UNION (
        SELECTCOLUMNS ( Table1, "Source.Name", Table1[Source.Name] ),
        SELECTCOLUMNS ( Table2, "Source.Name", Table2[Source.Name] ),
        SELECTCOLUMNS ( Table3, "Source.Name", Table3[Source.Name] )
    )
)
  • SELECTCOLUMNS:提取单表的Source.Name列并统一列名,确保UNION可以正常合并
  • UNION:将多个表的单列数据合并为一张表
  • DISTINCT:剔除合并结果中的重复值

2. 返回包含所有重复值的Source.Name值表

如果需要保留所有原始数据(包括重复文件名),去掉DISTINCT即可:

EVALUATE
UNION (
    SELECTCOLUMNS ( Table1, "Source.Name", Table1[Source.Name] ),
    SELECTCOLUMNS ( Table2, "Source.Name", Table2[Source.Name] ),
    SELECTCOLUMNS ( Table3, "Source.Name", Table3[Source.Name] )
)

3. 返回逗号分隔的字符串形式列表

如果需要生成类似数组的字符串(便于直接查看或后续处理),使用CONCATENATEX拼接结果:

EVALUATE
ROW (
    "SourceNamesList",
    CONCATENATEX (
        DISTINCT (
            UNION (
                SELECTCOLUMNS ( Table1, "Source.Name", Table1[Source.Name] ),
                SELECTCOLUMNS ( Table2, "Source.Name", Table2[Source.Name] ),
                SELECTCOLUMNS ( Table3, "Source.Name", Table3[Source.Name] )
            )
        ),
        [Source.Name],
        ", "
    )
)
  • CONCATENATEX:遍历合并去重后的表,将每个Source.Name值用逗号连接成字符串
  • ROW:将拼接后的字符串放在一个自定义列中返回

以上代码可直接在DAX Studio中执行,也可通过Pyadomd库执行DAX查询获取结果。

内容的提问来源于stack exchange,提问作者solid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 05:45:35