Text.Combine

官方说明:

返回将一系列文本值 texts 组合为单个文本值的结果。 可以指定最终组合文本中使用的可选分隔符 separator。
Text.Combine( texts as list, optional separator as nullable text) as text

案例1:

简单的文本合并,此时等价于&。注意,第一参数类型为list,所以需要在最外面套一对{},此种情况一般使用&即可。


= Text.Combine({[列1],[列2]})= [列1]&[列2]

案例2:

合并一整列,此情况单独用到的不多,但是要了解。


= Text.Combine(源[列1])

案例3:

配合Table.Group分组合并,比较常见。分组后,得到每个类别下所有名称的list,使用Text.Combine对list合并,加上第二参数"/"分隔每一项。

= Table.Group(源, "类别", {"名称", each Text.Combine([名称],"/")})

18 Replies to “Text.Combine”

      1. let
        源 = Excel.CurrentWorkbook(){[Name="表6"]}[Content],
        分组的行 = Table.Group(源, {"类别"}, {{"合并", each Text.Combine([名称],"/")}}),
        按分隔符拆分列 = Table.SplitColumn(分组的行, "合并", Splitter.SplitTextByDelimiter("/", QuoteStyle.Csv), {"行转列.1", "行转列.2", "行转列.3"})
        in
        按分隔符拆分列

  1. 案例3:
    = Table.Group(源, "类别", {"名称", each Text.Combine([名称],"/")})中的each Text.Combine([名称],"/"),
    1、根据上下文,[名称]是指源的每一行record的_[名称]的吧?
    2、each为什么不能写成 each {"名称", Text.Combine([名称],"/")},平时不都是先写each吗?
    谢大神

    1. 没有为什么,这是函数的参数要求,第三参数要求就是类型为list,list中第一个元素指定列名,第二个元素为聚合函数。
      如果写成 each {"名称", Text.Combine([名称],"/")},类型就成了function,而不是要求的list。而且list中的第二个元素也不符合语法,因为[名称]没有上下文。
      使用函数时先看看参数说明,要求是什么类型就得是什么类型。

      1. 请大神解释一下,“如果写成 each {"名称", Text.Combine([名称],"/")},类型就成了function“是什么意思?为什么就成了function了。

        1. {"名称", each Text.Combine([名称],"/")}这是list可以理解吧?
          each {"名称", Text.Combine([名称],"/")}这肯定就不是list了,可以改写为(x)=>x{"名称", Text.Combine(x[名称],"/")},显然是个function

  2. 合并时,如何让列表元素按照规定的顺序排序呢?
    我试过先排序后分组combine,但是结果并不是排序后的,而是乱序。

  3. 想到解决方案了。
    直接排序后分组(分组所有行),然后再添加自定义列
    Text.Combine([所有行的列][要合并的所有行的列],",")
    这样combine之后的结果就是排序的顺序了。

  4. 请教,如果Text.Combine的字段中有重复文本,比如合并后的内容 = 苹果/橘子/香蕉/苹果/芒果,
    如何去掉重复的“苹果”,只保留1个? 也就是去重为(苹果/橘子/香蕉/芒果)

  5. 补充:与 去重后合并 相关的问题,在PQ中,如何能做到,只对某一个字段去重,而不删除一整列?

  6. 案例2,我跟着做结果错了,= Table.AddColumn(实操1, "2、合并整列", each Text.Combine(源{[细分]}))

    错误提示:Expression.Error: 无法将值 " = Table.AddColum..." 转换为类型 List。
    详细信息: Value= = Table.AddColumn(实操1, "2、合并整列", each Text.Combine(源,{[细分]})) Type=[Type]

    请问是为啥呢?细分那一列的文字完全不重复,中括号去掉也不行。

    1. 源{[细分]} 这个是啥意思?应该是 源[细分] 取出这个字段的内容后才能再进行文本合并吧

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注