COMBINEVALUES

适用于:计算列计算表度量值视觉计算

将两个或多个文本字符串联接到一个文本字符串中。 此函数的主要用途是在 DirectQuery 模型中支持多列关系。 有关详细信息,请参阅 备注

语法

COMBINEVALUES(<delimiter>, <expression>, <expression>[, <expression>]…)

参数

术语 定义
delimiter 连接期间要使用的分隔符。 必须是常量值。
expression 一个 DAX 表达式,其值将联接到单个文本字符串中。

返回值

串联字符串。

言论

  • COMBINEVALUES 函数假定输入值不同时,输出字符串也不同,但不会验证。 根据此假设,当 COMBINEVALUES 用于创建计算列以生成从两个 DirectQuery 表联接多个列的关系时,将在查询时生成优化的联接条件。 例如,如果用户想要在 Table1(Column1、Column2)和 Table2(Column1、Column2)之间创建关系,则可以在每个表中创建两个计算列,如下所示:

    Table1[CalcColumn] = COMBINEVALUES(",", Table1[Column1], Table1[Column2])
    

    Table2[CalcColumn] = COMBINEVALUES(",", Table2[Column1], Table2[Column2])
    

    然后,在 Table1[CalcColumn]Table2[CalcColumn]之间建立关系。 与其他 DAX 函数和运算符不同,这些函数和运算符在文本上转换为相应的 SQL 运算符和函数,上述关系生成 SQL 联接谓词:

    (Table1.Column1 = Table2.Column1 OR Table1.Column1 IS NULL AND Table2.Column1 IS NULL)
    

    (Table1.Column2 = Table2.Column2 OR Table1.Column2 IS NULL AND Table2.Column2 IS NULL)
    
  • 联接谓词可能会提供比涉及复杂 SQL 运算符和函数的查询性能更好的查询性能。

  • COMBINEVALUES 函数依赖于用户选择适当的分隔符,以确保输入值的唯一组合产生不同的输出字符串,但不验证假设是否为 true。 例如,如果用户选择 "| " 作为分隔符,但 Table1 中的一行具有 Table1[Column1] = "| "Table2 [Column2] = " ",而 Table2 中的一行 Table2[Column1] = " "Table2[Column2] = "| ",则两个串联的输出将相同 "|| ",这似乎指示这两行在联接操作中是匹配的。 如果两个表都来自同一 DirectQuery 源,则这两行不会联接在一起,尽管如果导入这两个表,则它们将联接在一起。

以下 DAX 查询:

EVALUATE
DISTINCT (
    SELECTCOLUMNS ( Date, "Month", COMBINEVALUES ( ", ", [MonthName], [CalendarYear] ) )
)

返回以下单列表:

[Month]
2020 年 1 月
2020 年 2 月
2020 年 3 月
2020 年 4 月
2020 年 5 月
2020 年 6 月
2020 年 7 月
2020 年 8 月
2020 年 9 月
2020 年 10 月
2020 年 11 月
2020 年 12 月
2021 年 1 月
2021 年 1 月
2021 年 2 月
2021 年 3 月
2021 年 4 月
2021 年 5 月
2021 年 6 月
2021 年 7 月
2021 年 8 月
2021 年 9 月
2021 年 10 月
2021 年 11 月
2021 年 12 月