Skip to main content
Позволяет выполнять запросы к данным, хранящимся в базе данных SQLite.

Синтаксис

Аргументы

Возвращаемое значение

  • Объект таблица с теми же столбцами, что и в исходной таблице SQLite.

Передача запроса вместо имени таблицы

Вместо имени таблицы вторым аргументом можно указать SELECT-запрос, который передаётся в SQLite как есть. Структура результирующей таблицы автоматически определяется по результату запроса. Запрос можно записать либо как подзапрос, либо обернуть в функцию query:
Такая таблица доступна только для чтения: операция INSERT для неё недопустима. Тот же синтаксис поддерживается и движком таблицы SQLite.
Форма подзапроса (SELECT ...) разбирается ClickHouse и повторно сериализуется перед отправкой в SQLite. Поэтому она должна быть корректным ClickHouse SQL. Чтобы передать синтаксис, специфичный для SQLite, который ClickHouse не разбирает, используйте форму query('...'), текст которой отправляется в SQLite дословно.Любые внешние WHERE, LIMIT, агрегация и т. п. из окружающего запроса к ClickHouse не переносятся в переданный запрос — они применяются в ClickHouse после получения полного результата запроса. Чтобы ограничить данные, считываемые из SQLite, поместите фильтр внутрь переданного запроса. При external_table_strict_query = 1 внешний фильтр по столбцам табличной функции отклоняется с исключением вместо локального применения, поскольку его нельзя перенести в переданный запрос. Проверка охватывает предикат верхнего уровня WHERE и каждую конъюнкцию верхнего уровня AND. PREWHERE по столбцам этой таблицы не относится к данному параметру: этот движок таблицы не поддерживает PREWHERE, и такой запрос отклоняется с ILLEGAL_PREWHERE независимо от параметра. Проверка выполняется только там, где фильтр вообще может быть перенесён: когда эта таблица является единственной таблицей запроса, находится с любой стороны INNER JOIN или на сохраняющей стороне внешнего JOIN (левой стороне LEFT JOIN, правой стороне RIGHT JOIN). На несохраняющей стороне LEFT/RIGHT JOIN и с любой стороны FULL JOIN ничего не переносится и не проверяется, поэтому фильтр по столбцам этой таблицы применяется локально после JOIN даже в строгом режиме. Там, где выполняется проверка, предикат, ссылающийся на другие таблицы, присоединённые в окружающем запросе, не переносится и исключается из проверки независимо от того, ссылается ли он только на присоединённую сторону или смешивает её с этой таблицей в одном выражении, отличном от AND (например, OR); такой предикат сохраняет обычную точку вычисления в ClickHouse (WHERE после JOIN, PREWHERE перед ним) и не отклоняется.

Пример

Query
Response

См. также

Последнее изменение 26 сентября 2026 г.