活动
COMBINEVALUES
将两个 or 多个文本字符串联接到一个文本字符串中。 此函数的主要用途是在 DirectQuery 模型中支持多列关系。 有关详细信息,请参阅 备注。
COMBINEVALUES(<delimiter>, <expression>, <expression>[, <expression>]…)
术语 | 定义 |
---|---|
delimiter |
连接期间要使用的分隔符。 必须是常量 value。 |
expression |
一个 DAX 表达式,其 value 将联接到单个文本字符串中。 |
串联字符串。
COMBINEVALUES 函数假定,但 not 验证输入 values 不同时,输出字符串也不同。 根据此假设,当 COMBINEVALUES 用于创建计算列以生成从两个 DirectQuery 表联接多个列的关系时,将在查询 time生成优化联接条件。 例如,if 用户想要在 Table1(Column1, Column2) and Table2(Column1, Column2)之间创建关系,他们可以在每个表中创建两个计算列,如下所示:
DAXTable1[CalcColumn] = COMBINEVALUES(",", Table1[Column1], Table1[Column2])
and
DAXTable2[CalcColumn] = COMBINEVALUES(",", Table2[Column1], Table2[Column2])
然后,And 在
Table1[CalcColumn]
andTable2[CalcColumn]
之间创建关系。 与其他 DAX 函数 and 运算符不同,这些运算符在文本上转换为相应的 SQL 运算符 and 函数,上述关系生成 SQL 联接谓词:DAX(Table1.Column1 = Table2.Column1 OR Table1.Column1 IS NULL AND Table2.Column1 IS NULL)
and
DAX(Table1.Column2 = Table2.Column2 OR Table1.Column2 IS NULL AND Table2.Column2 IS NULL)
联接谓词可能会提供比涉及复杂 SQL 运算符 and 函数的查询性能更好的查询性能。
COMBINEVALUES 函数依赖于用户选择适当的分隔符,以确保输入 values 的唯一组合产生不同的输出字符串,但它确实 not 验证假设是否 true。 例如,if 用户选择
"| "
作为分隔符,但 Table1 中的一行Table1[Column1] = "| "
andTable2 [Column2] = " "
,而 Table2 中的一行Table2[Column1] = " "
andTable2[Column2] = "| "
,则两个串联的输出将是相同的"|| "
,这似乎指示这两行在联接操作中是匹配的。 这两行 not 联接在一起 if 两个表都来自同一 DirectQuery 源,尽管它们联接在一起,if 导入这两个表。
以下 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 月 |