什么查询会将下面的JSON值转置到多行。嵌套JSON对象的示例是稀疏的。
[{"a":{"b":"val", "c":1}},{"a":{"b":"val", "c":4}}]
已尝试JSONExtract的组合,但在处理嵌套对象时遇到困难
JSONExtract
yiytaume1#
可以使用JSONEachRow格式读取对象数组。嵌套对象(“a”:{...})可以读入:1.字符串,然后使用JSONExtract解析它:
:) select * from format(JSONEachRow, 'a String', '[{"a":{"b":"val", "c":1}},{"a":{"b":"val", "c":4}}]') ┌─a──────────────────┐ │ {"b":"val", "c":1} │ │ {"b":"val", "c":4} │ └────────────────────┘ :) select JSONExtractString(a, 'b') from format(JSONEachRow, 'a String', '[{"a":{"b":"val", "c":1}},{"a":{"b":"val", "c":4}}]') ┌─JSONExtractString(a, 'b')─┐ │ val │ │ val │ └───────────────────────────┘
1.命名元组(如果所有嵌套对象都是已知的,或者只想读取其中的一部分):
avogar-dev :) select * from format(JSONEachRow, 'a Tuple(b String, c UInt32)', '[{"a":{"b":"val", "c":1}},{"a":{"b":"val", "c":4}}]') ┌─a─────────┐ │ ('val',1) │ │ ('val',4) │ └───────────┘
1.使用实验性JSON对象类型:
:) select * from format(JSONEachRow, 'a JSON', '[{"a":{"b":"val", "c":1}},{"a":{"b":"val", "c":4}}]') settings allow_experimental_object_type=1 ┌─a─────────────────┐ │ {"b":"val","c":1} │ │ {"b":"val","c":4} │ └───────────────────┘
注意:JSON类型仍然是实验性的,使用它可能会出现意想不到的错误。
fgw7neuy2#
看看这个https://clickhouse.com/docs/knowledgebase/importing_and_working_with_JSON_array_objects看看能不能帮上忙
2条答案
按热度按时间yiytaume1#
可以使用JSONEachRow格式读取对象数组。嵌套对象(“a”:{...})可以读入:
1.字符串,然后使用JSONExtract解析它:
1.命名元组(如果所有嵌套对象都是已知的,或者只想读取其中的一部分):
1.使用实验性JSON对象类型:
注意:JSON类型仍然是实验性的,使用它可能会出现意想不到的错误。
fgw7neuy2#
看看这个
https://clickhouse.com/docs/knowledgebase/importing_and_working_with_JSON_array_objects
看看能不能帮上忙