Функции JSON
Типы JSON-функций
Существует два набора функций для парсинга JSON:
simpleJSON*(visitParam*), предназначенные для сверхбыстрого парсинга ограниченного подмножества JSON.JSONExtract*, предназначенные для парсинга обычного JSON.
функции simpleJSON (visitParam)
В ClickHouse есть специальные функции для работы с упрощённым JSON. Все эти JSON-функции основаны на строгих предположениях о том, каким может быть JSON. Они стараются делать как можно меньше, чтобы выполнить задачу как можно быстрее.
Делаются следующие допущения:
- Имя поля (аргумент функции) должно быть константой.
- Имя поля должно быть канонически закодировано в JSON. Например:
simpleJSONHas('{"abc":"def"}', 'abc') = 1, ноsimpleJSONHas('{"\\u0061\\u0062\\u0063":"def"}', 'abc') = 0 - Поля ищутся на любом уровне вложенности, без различия. Если есть несколько совпадающих полей, используется первое вхождение.
- В JSON нет пробелов вне строковых литералов.
Функции JSONExtract
Эти функции основаны на библиотеке simdjson и предназначены для более сложных требований к парсингу JSON.
Регистронезависимые функции JSONExtract
Эти функции выполняют регистронезависимое сопоставление ключей ASCII при извлечении значений из JSON-объектов. Они работают так же, как и их регистрозависимые аналоги, за исключением того, что ключи объектов сопоставляются без учета регистра. Если нескольким ключам соответствуют разные варианты написания, возвращается первое совпадение.
Эти функции могут работать медленнее, чем их регистрозависимые аналоги, поэтому по возможности используйте обычные функции JSONExtract.