【问题标题】:ClickHouse: how to select some fields as JSON-objectClickHouse:如何选择一些字段作为 JSON 对象
【发布时间】:2020-09-27 17:58:14
【问题描述】:

ClickHouse 查询:

select ( select 1 as c11, 'ab' as c12, 78 as c13 ) as c1, 'ooo' as c2
format JSONEachRow

返回:

{"c1":[1,"ab",78],"c2":"ooo"}

是否可以将 c1 作为对象而不是数组? :

{"c1":{"c11":1,"c12":"ab","c13":78},"c2":"ooo"}

格式 JSONEachRow 是强制性的。

【问题讨论】:

  • 您应该使用代码块来显示您的代码片段以获得更好的可读性。

标签: json clickhouse


【解决方案1】:

很遗憾,这是不可能的。 select-subquery的结果被解释为一个元组,并作为一个数组输出。

作为一种解决方法,可以将结果展平,并在需要时应用一些后处理。

SELECT c1.1 AS "c1.c11", c1.2 AS "c1.c12", c1.3 AS "c1.c13", c2
FROM (
  SELECT     
      (SELECT 1, 'ab', 78) AS c1, 
      'ooo' AS c2)
FORMAT JSONEachRow
/* result
{"c1.c11":1,"c1.c12":"ab","c1.c13":78,"c2":"ooo"}
*/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-08
    • 2018-12-17
    • 1970-01-01
    • 1970-01-01
    • 2013-05-03
    • 2019-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多