Перейти к основному содержанию

Вопрос

Как импортировать JSON-массивы и как выполнять запросы к вложенным объектам?

Ответ

Сохраните этот однострочный JSON-массив в sample.json
Проверьте данные:
Создайте таблицу для приема строк JSON:
Вставьте данные:
Проверьте, как сработал вывод данных для типа объекта JSON:
Events — это Array из Tuple, каждый из которых содержит поля eventType типа String и time типа String. Последний тип не самый удачный (лучше было бы использовать DateTime). Давайте посмотрим на данные:
Давайте выполним несколько запросов: _id и channel событий, у которых значение eventTypeclose
Мы хотим выполнять запросы по time, например получать все события в заданном временном диапазоне, но видим, что оно было импортировано как String:
Итак, чтобы работать с ними как с датами, сначала нужно преобразовать их в тип DateTime. Чтобы преобразовать массив, используем функцию map:
мы можем увидеть различия, используя toTypeName для обоих массивов:
теперь давайте получим id строк, в которых time попадает в заданный интервал. мы используем arrayCount, чтобы проверить, есть ли в массиве, возвращаемом функцией map, хотя бы один элемент, который соответствует условию x BETWEEN toDateTime('2021-06-18 11:46:00', 'Europe/Rome') AND toDateTime('2021-06-18 11:50:00', 'Europe/Rome')
⚠️ Обратите внимание: на момент написания этой статьи текущая реализация JSON является экспериментальной и не подходит для продакшена. Этот пример показывает, как быстро импортировать JSON и начать выполнять запросы, и демонстрирует компромисс между удобством использования и корректным моделированием данных: здесь мы импортируем объекты JSON в типе JSON, не задавая схему заранее. Это удобно для быстрой проверки, однако для долгосрочного использования данных в рамках этого примера лучше сохранять их в наиболее подходящих типах: например, для поля time следует использовать DateTime вместо String, чтобы избежать преобразований после ингестии, как показано выше. Подробнее об обработке JSON см. в документации.
Последнее изменение 3 июля 2026 г.