json 如何在clickHouse中将数组拆分为列

jc3wubiy  于 2023-02-26  发布在  ClickHouse
关注(0)|答案(1)|浏览(666)

我需要使用Kafka Engine解析ClickHouse中Kafka的数据,例如,我在https://fiddle.clickhouse.com/0e89bec6-4e76-410a-9fc4-cf58ace5f34f中创建了一个表,

CREATE TABLE json(name String, data Array(Map(String, String)) ) ENGINE = Memory;

INSERT INTO JSON FORMAT JSONEachRow {"name": "asd", "data":[{"id":"1"},{"id":"2"}]};

我有两列

name  data 
asd   [{'id':'1'},{'id':'2'}]

如何变换得到下面的结果?

name  id 
asd    1
asd    2
ru9i0ody

ru9i0ody1#

mapApplyname列与data列连接,arrayJoin将其应用于data中的每个元素:

SELECT 
   name, 
   arrayJoin(mapValues(mapApply((k,v) -> (name,v), arrayJoin(data)))) AS id 
FROM json;

响应如下所示:

┌─name─┬─id─┐
│ asd  │ 1  │
│ asd  │ 2  │
└──────┴────┘

相关问题