[函数大全] COMBINEVALUES

  [复制链接]
查看181614 | 回复154 | 2021-2-21 21:56:18 | 显示全部楼层 |阅读模式
两个或更多文本字符串联接成一个文本字符串。此函数的主要用途是支持 DirectQuery 模型中的多列关系。

语法
  1. COMBINEVALUES ( <分隔符>, <表达式 1>, <表达式 2>, [<表达式 3>] … )
复制代码
参数属性描述
分隔符要在联接过程中使用的分隔符。 必须为一个常量值
表达式 1一个 DAX 表达式,其值将被联接到单个文本字符串中
表达式 2可重复一个 DAX 表达式,其值将被联接到单个文本字符串中

返回值

标量 单个已联接的字符串

备注

COMBINEVALUES 函数假设当输入值不同时,输出字符串也不同(但不会对此进行验证)。 基于此假设,使用 COMBINEVALUES 创建计算列来建立联接两个 DirectQuery 表中多个列的关系时,将在查询时生成一个优化的联接条件。 例如,如果用户想要创建 Table1(Column1、Column2)和 Table2(Column1、Column2)之间的关系,他们可以创建两个计算列(这些计算列位于各自的表上),如下所示:
  1. Table1[CalcColumn] = COMBINEVALUES ( ",", Table1[Column1], Table1[Column2] )



  2. Table2[CalcColumn] = COMBINEVALUES ( ",", Table2[Column1], Table2[Column2] )
复制代码

然后创建 Table1[CalcColumn] 和 Table2[CalcColumn] 之间的关系。 不同于其他 DAX 函数和运算符(会按字面转换为相应的 SQL 运算符和函数),以上关系将生成一个如下所示的 SQL 联接条件:
  1. (Table1.Column1 = Table2.Column1 OR Table1.Column1 IS NULL AND Table2.Column1 IS NULL)

  2. and

  3. (Table1.Column2 = Table2.Column2 OR Table1.Column2 IS NULL AND Table2.Column2 IS NULL)
复制代码

与包含复杂 SQL 查询性能。


COMBINEVALUES 函数依赖于用户选择适当的分隔符来确保输入值的唯一组合产生不同的输出字符串,但它不会验证此假设是否成立。 例如,如果用户选择 "| " 作为分隔符,但 Table1 中的某一行具有 Table1[Column1] = "|" 和 Table1[Column2] = " ",而 Table2 中的某一行具有 Table2[Column1] = " " 和 Table2[Column2] = "| ",那么两个连接的输出将为同一 "|| ",这可能表明这两行在联接操作中是匹配的。 如果两个表都来自同一 DirectQuery 数据源,那两行则不会联接在一起,但如果导入了两个表,则它们会联接在一起。

示例
  1. EVALUATE
  2. DISTINCT (
  3.     SELECTCOLUMNS (
  4.         DimDate,
  5.         "Month", COMBINEVALUES (
  6.             ",",
  7.             [MonthName],
  8.             [CalendarYear]
  9.         )
  10.     )
  11. )
复制代码



回复

使用道具 举报

wzfwzf | 2021-4-25 11:07:50 来自手机 | 显示全部楼层
太棒了,感谢唐楼主精彩的分享
回复

使用道具 举报

yyfreeliang | 2021-5-22 13:58:42 | 显示全部楼层
支持,赞一个
回复

使用道具 举报

莲子 | 2021-8-8 18:08:40 | 显示全部楼层
我擦!我要沙发!
回复

使用道具 举报

刘文钟 | 2021-9-14 19:35:44 | 显示全部楼层
纯粹路过,没任何兴趣,仅仅是看在老用户份上回复一下
回复

使用道具 举报

ltns | 2021-10-26 14:11:56 来自手机 | 显示全部楼层
太棒了,感谢唐楼主精彩的分享
回复

使用道具 举报

win | 2021-12-8 21:14:37 来自手机 | 显示全部楼层
沙发~支持云发教育
回复

使用道具 举报

NSX | 2022-2-15 12:59:24 | 显示全部楼层
占位编辑
回复

使用道具 举报

椰子郎 | 2022-2-27 23:39:37 来自手机 | 显示全部楼层
报告!别开枪,我就是路过来看看的。。。
回复

使用道具 举报

hua668 | 2022-3-2 19:42:05 | 显示全部楼层
站位支持
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则