【问题标题】:Union by element of two array of array in clickhouse按clickhouse中两个数组的元素联合
【发布时间】:2021-10-19 02:17:57
【问题描述】:

我有以下两列(浮动:

+-------------+-------------+
|col1         |col2         |
+-------------+-------------+
|[0.5,0.6]    |[900,1000]    |
|[0.7,0.8,0.9]|[1100,1200,1300]|
+-------------+-------------+

我想要以下输出:

+-------------+-------------   +----------------------------+
|col1         |col2            |col3                        |
+-------------+-------------   +----------------------------+
|[0.5,0.6]    |[900,1000]      |[0.5 900 , 0.6 1000]        | 
|[0.7,0.8,0.9]|[1100,1200,1300]|[0.7 1100,0.8 1200,0.9 1300]|
+-------------+----------- ----+----------------------------+

我尝试了 ArrayZip,但出现异常“无法从 JDBC 数组中提取数组数据

感谢您的帮助。

【问题讨论】:

    标签: sql clickhouse


    【解决方案1】:

    JDBC驱动不支持Array(Tuple(String)等复杂数据类型,可以在CH中转换成字符串。

    SELECT
        [0.5, 0.6] AS col1,
        [900, 1000] AS col2,
        arrayMap((i, j) -> concat(toString(i), ' ', toString(j)), col1, col2) AS r
    
    ┌─col1──────┬─col2───────┬─r──────────────────────┐
    │ [0.5,0.6] │ [900,1000] │ ['0.5 900','0.6 1000'] │
    └───────────┴────────────┴────────────────────────┘
    
    
    SELECT
        [0.5, 0.6] AS col1,
        [900, 1000] AS col2,
        toString(arrayMap((i, j) -> concat(toString(i), ' ', toString(j)), col1, col2)) AS r
    
    ┌─col1──────┬─col2───────┬─r──────────────────────┐
    │ [0.5,0.6] │ [900,1000] │ ['0.5 900','0.6 1000'] │
    └───────────┴────────────┴────────────────────────┘
    
    
    SELECT
        [0.5, 0.6] AS col1,
        [900, 1000] AS col2,
        concat('[', arrayStringConcat(arrayMap((i, j) -> concat(toString(i), ' ', toString(j)), col1, col2), ', '), ']') AS r
    
    ┌─col1──────┬─col2───────┬─r───────────────────┐
    │ [0.5,0.6] │ [900,1000] │ [0.5 900, 0.6 1000] │
    └───────────┴────────────┴─────────────────────┘
    
    
    SELECT
        [0.5, 0.6] AS col1,
        [900, 1000] AS col2,
        arrayZip(col1, col2)
    
    Query id: 8a7aa26b-71f7-4544-b5c7-79e47f1c6453
    
    ┌─col1──────┬─col2───────┬─arrayZip([0.5, 0.6], [900, 1000])─┐
    │ [0.5,0.6] │ [900,1000] │ [(0.5,900),(0.6,1000)]            │
    └───────────┴────────────┴───────────────────────────────────┘
    
    
    SELECT
        [0.5, 0.6] AS col1,
        [900, 1000] AS col2,
        toString(arrayZip(col1, col2))
    
    ┌─col1──────┬─col2───────┬─toString(arrayZip([0.5, 0.6], [900, 1000]))─┐
    │ [0.5,0.6] │ [900,1000] │ [(0.5,900),(0.6,1000)]                      │
    └───────────┴────────────┴─────────────────────────────────────────────┘
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-29
      • 1970-01-01
      • 2018-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-12
      • 1970-01-01
      相关资源
      最近更新 更多