Почему я не могу применить функции clickhouse json для результатов запроса «ФОРМАТИРОВАТЬ JSON»?

#clickhouse

#clickhouse

Вопрос:

Я сделал простой запрос для тестирования функции JSONExtractRaw, но безуспешно:

выберите JSONExtractRaw(j, ‘data’) из (выберите * из devices format JSON) в качестве j;

Но это не работает из-за «синтаксической ошибки». Это ошибка или это ожидаемо?

Комментарии:

1. Ожидается, что предложение behavior — FORMAT может быть применено только к внешнему запросу SELECT.

Ответ №1:

В версии 20.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}]" │
└────────────────┘