arrayJoin函数

这是一个非常有用的函数。

普通函数不会更改结果集的行数,而只是计算每行中的值(map)。
聚合函数将多行压缩到一行中(fold或reduce)。
’arrayJoin’函数获取每一行并将他们展开到多行(unfold)。

此函数将数组作为参数,并将该行在结果集中复制数组元素个数。
除了应用此函数的列中的值之外,简单地复制列中的所有值;它被替换为相应的数组值。

查询可以使用多个arrayJoin函数。在这种情况下,转换被执行多次。

请注意SELECT查询中的ARRAY JOIN语法,它提供了更广泛的可能性。

示例:

  1. SELECT arrayJoin([1, 2, 3] AS src) AS dst, 'Hello', src
  1. ┌─dst─┬─\'Hello\'─┬─src─────┐
  2. 1 Hello [1,2,3]
  3. 2 Hello [1,2,3]
  4. 3 Hello [1,2,3]
  5. └─────┴───────────┴─────────┘

来源文章