CLICKHOUSE函数使用经验(arrayJoin与arrayMap函数应用场景)

文章介绍了ClickHouse数据库中的arrayJoin和arrayMap函数用法,通过示例展示了如何进行数组操作,如行转列、数据转换和聚合计算。强调了arrayJoin在处理复杂数据结构和减少SQL冗余中的优势,以及处理数字精度问题时decimal类型的使用。同时提到了arrayMap在创建元组和自定义数组操作中的应用。
摘要由CSDN通过智能技术生成

1.函数简介

   (1)arrayJoin函数

        先把官方的文档贴上来

        Array JOIN 子句允许在数据表的内部,与数组或者嵌套的字段进行JOIN操作,从而将一行数据变多行。适用于行转列操作

       示例:

CREATE TABLE arrays_test
(
    s String,
    arr Array(UInt8)
) ENGINE = Memory;

INSERT INTO arrays_test
VALUES ('Hello', [1,2]), ('World', [3,4,5]), ('Goodbye', []);
┌─s───────────┬─arr─────┐
│ Hello       │ [1,2]   │
│ World       │ [3,4,5] │
│ Goodbye     │ []      │
└─────────────┴─────────┘

     array join

SELECT s, arr
FROM arrays_test
ARRAY JOIN arr;
┌─s─────┬─arr─┐
│ Hello │   1 │
│ Hello │   2 │
│ World │   3 │
│ World │   4 │
│ World │   5 │
└───────┴─────┘

       left array join

SELECT s, arr
FROM arrays_test
LEFT ARRAY JOIN arr;
┌─s───────────┬─arr─┐
│ Hello       │   1 │
│ Hello       │   2 │
│ World       │   3 │
│ World       │   4 │
│ World       │   5 │
│ Goodbye     │   0 │
└─────────────┴─────┘

    (2)arrayMap函数

          arrayMap(fun1,arr1)

          参数1:这是一个高阶函数,您必须将 lambda 函数作为第一个参数传递给它,并且不能省略它,它规定了对于数组中元素的操作

          参数2:要执行的数组

          示例:对数组中每个元素+2

SELECT arrayMap(x -> (x + 2), [1, 2, 3]) as arr;
┌─res─────┐
│ [3,4,5] │
└─────────┘

          从不同的数组创建元素元组:     
 

SELECT arrayMap((x, y) -> (x, y), [1, 2, 3], [4, 5, 6]) AS res
┌─res─────────────────┐
│ [(1,4),(2,5),(3,6)] │
└─────────────────────┘

2.使用场景

      先看数据:

┌─dept──┬─budget_name─┬─type──┬────money─┬─posting_date─┐
│ 部门1 │ 主营收入    │ type1 │  3654.32 │   2023-04-10 │
│ 部门1 │ 所得税      │ type1 │      300 │   2023-04-10 │
│ 部门1 │ 成本      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万山数据@风中追风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值