为啥我不能将 clickhouse json 函数应用于“FORMAT JSON”查询结果?

Posted

技术标签:

【中文标题】为啥我不能将 clickhouse json 函数应用于“FORMAT JSON”查询结果?【英文标题】:Why I can't apply clickhouse json functions for "FORMAT JSON" query results?为什么我不能将 clickhouse json 函数应用于“FORMAT JSON”查询结果? 【发布时间】:2020-08-21 10:50:13 【问题描述】:

我做了一个简单的查询来测试 JSONExtractRaw 函数,但没有运气:

select JSONExtractRaw(j, 'data') from (select * from devices 格式 JSON) 为 j;

但由于“语法错误”,它不起作用。这是一个错误还是预期的?

【问题讨论】:

这是预期行为 - FORMAT 子句只能应用于外部 SELECT 查询。 【参考方案1】:

在 v20.7.2.30 中添加了格式化 SQL 输出的函数 - formatRow 和 formatRowNoNewline:

SELECT JSONExtractRaw(j, 'data') AS json
FROM 
(
    SELECT formatRow('JSONEachRow', *) AS j
    FROM 
    (
        SELECT *
        FROM 
        (
            /* emulate the test dataset */
            SELECT 
                1 AS id,
                '["a": 8]' AS data
            UNION ALL
            SELECT 
                2 AS id,
                '["a": 2]' AS data
        )
    )
)

┌─json───────────┐
│ "[\"a\": 8]" │
│ "[\"a\": 2]" │
└────────────────┘

【讨论】:

以上是关于为啥我不能将 clickhouse json 函数应用于“FORMAT JSON”查询结果?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我们不能在 clickhouse 的另一个视图之上制作物化视图?

为啥 const char* 不能与 boost 的 stringstream 和 read_json 一起使用?

为啥将 OFFSET 添加到 clickhouse 查询会增加执行时间?

为啥clickhouse写批记录慢?

为啥修改表格列clickhouse时出现错误

ClickHouse存储解析JSON数据