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

Табличные функции

Табличные функции — это способы создания таблиц.

СтраницаОписание
azureBlobStorageПредоставляет табличный интерфейс для выбора и вставки файлов в Azure Blob Storage. Аналогична функции s3.
azureBlobStorageClusterПозволяет обрабатывать файлы из Azure Blob Storage параллельно на нескольких узлах в указанном кластере.
clusterAllReplicasПозволяет обращаться ко всем шардам кластера (настроенным в секции remote_servers) без создания распределённой таблицы (Distributed).
deltaLakeПредоставляет табличный интерфейс только для чтения к таблицам Delta Lake в Amazon S3.
deltaLakeClusterЭто расширение для табличной функции deltaLake.
dictionaryОтображает данные словаря как таблицу ClickHouse. Работает аналогично движку Dictionary.
executableТабличная функция executable создает таблицу на основе вывода пользовательской функции (UDF), определенной в скрипте, который выводит строки в stdout.
fileТабличный движок, который предоставляет интерфейс, подобный таблице, для выполнения SELECT из файлов и INSERT в файлы, аналогичный табличной функции s3. Используйте file() при работе с локальными файлами и s3() при работе с бакетами в объектном хранилище, таком как S3, GCS или MinIO.
fileClusterОбеспечивает одновременную обработку файлов, путь к которым соответствует заданному шаблону, на нескольких узлах кластера. Инициатор устанавливает соединения с узлами-исполнителями, разворачивает glob‑шаблоны в пути к файлам и делегирует им задачи чтения файлов. Каждый узел-исполнитель запрашивает у инициатора следующий файл для обработки и повторяет это до завершения всех задач (пока не будут прочитаны все файлы).
formatРазбирает данные из переданных аргументов в соответствии с указанным входным форматом. Если аргумент структуры не задан, структура определяется по данным.
gcsПредоставляет табличный интерфейс для выполнения операций SELECT и INSERT с данными в Google Cloud Storage. Требуется роль IAM Storage Object User.
fuzzQueryВносит случайные изменения в заданную строку запроса.
fuzzJSONВносит случайные искажения в JSON-строку.
generateRandomГенерирует случайные данные по заданной схеме. Позволяет заполнять тестовые таблицы этими данными. Поддерживаются не все типы данных.
mergeTreeProjectionПредставляет содержимое проекции в таблицах MergeTree. Может использоваться для анализа.
mergeTreeIndexПредставляет содержимое файлов индекса и меток таблиц MergeTree. Может использоваться для анализа внутреннего устройства.
hdfsСоздаёт таблицу из файлов в HDFS. Эта табличная функция аналогична табличным функциям url и file.
hdfsClusterПозволяет параллельно обрабатывать файлы из HDFS на нескольких узлах указанного кластера.
hudiПредоставляет табличный интерфейс только для чтения к таблицам Apache Hudi в Amazon S3.
ytsaurusТабличная функция позволяет считывать данные из кластера YTsaurus.
Табличная функция hudiClusterРасширение табличной функции hudi. Позволяет обрабатывать файлы из таблиц Apache Hudi в Amazon S3 параллельно на многих узлах заданного кластера.
icebergПредоставляет табличный интерфейс только для чтения к таблицам Apache Iceberg, размещённым в Amazon S3, Azure, HDFS или в локальном хранилище.
paimonПредоставляет табличный интерфейс только для чтения к таблицам Apache Paimon, размещённым в Amazon S3, Azure, HDFS или в локальном хранилище.
icebergClusterРасширение табличной функции iceberg, которое позволяет обрабатывать файлы Apache Iceberg параллельно на нескольких узлах указанного кластера.
paimonClusterРасширение табличной функции paimon, позволяющее параллельно обрабатывать файлы Apache Paimon на множестве узлов заданного кластера.
inputТабличная функция, позволяющая эффективно преобразовывать и вставлять данные, отправленные на сервер с заданной структурой, в таблицу с другой структурой.
jdbcВозвращает таблицу, подключённую через JDBC-драйвер.
mergeСоздаёт временную таблицу типа Merge. Её структура будет определена на основе подлежащих таблиц путём объединения их столбцов и вывода общих типов.
mongodbПозволяет выполнять запросы SELECT к данным, хранящимся на удалённом сервере MongoDB.
mysqlПозволяет выполнять запросы SELECT и INSERT к данным, хранящимся на удалённом MySQL-сервере.
nullСоздаёт временную таблицу указанной структуры с табличным движком Null. Функция используется для удобства при написании тестов и проведении демонстраций.
timeSeriesMetricstimeSeriesMetrics возвращает таблицу метрик, используемую таблицей db_name.time_series_table с движком TimeSeries.
timeSeriesSelectorСчитывает временные ряды из таблицы TimeSeries, отфильтрованные селектором и с метками времени, попадающими в указанный интервал.
timeSeriesTagsТабличная функция timeSeriesTags возвращает таблицу тегов, используемую таблицей db_name.time_series_table с движком TimeSeries.
prometheusQueryRangeВыполняет запрос Prometheus по данным из таблицы TimeSeries.
zerosИспользуется для тестирования как самый быстрый способ сгенерировать большое количество строк. Аналогична системным таблицам system.zeros и system.zeros_mt.
timeSeriesDatatimeSeriesData возвращает таблицу данных, используемую таблицей db_name.time_series_table с движком TimeSeries.
numbersВозвращает таблицы с одним столбцом number, содержащим задаваемые пользователем целые числа.
prometheusQueryВыполняет запрос Prometheus с использованием данных из таблицы TimeSeries.
generate_series (generateSeries)Возвращает таблицу с единственным столбцом generate_series (UInt64), содержащим целые числа от start до stop включительно.
odbcВозвращает таблицу, подключённую по ODBC.
postgresqlПозволяет выполнять запросы SELECT и INSERT к данным, хранящимся на удалённом сервере PostgreSQL.
redisЭта табличная функция позволяет интегрировать ClickHouse с Redis.
remote, remoteSecureТабличная функция remote позволяет получать доступ к удалённым серверам «на лету», то есть без создания распределённой таблицы. Табличная функция remoteSecure аналогична функции remote, но использует защищённое соединение.
Табличная функция S3Предоставляет табличный интерфейс для выбора и вставки файлов в Amazon S3 и Google Cloud Storage. Эта табличная функция аналогична функции hdfs, но поддерживает дополнительные возможности, специфичные для S3.
s3ClusterРасширение табличной функции s3, позволяющее обрабатывать файлы из Amazon S3 и Google Cloud Storage параллельно на множестве узлов в заданном кластере.
sqliteПозволяет выполнять запросы к данным, хранящимся в базе данных SQLite.
arrowFlightПозволяет выполнять запросы к данным, доступным через сервер Apache Arrow Flight.
urlСоздает таблицу из данных по заданному URL с указанными format и structure
urlClusterПозволяет параллельно обрабатывать файлы по URL на множестве узлов указанного кластера.
viewПреобразует подзапрос в таблицу. Эта функция реализует механизм представлений.
valuesсоздаёт временное хранилище, в котором столбцы заполняются значениями.
loopТабличная функция loop в ClickHouse используется для бесконечного вывода результатов запроса в цикле.

Использование

Табличные функции можно использовать в предложении FROM оператора SELECT. Например, вы можете выбрать данные из файла на локальном компьютере с помощью табличной функции file.

echo "1, 2, 3" > example.csv
./clickhouse client
:) SELECT * FROM file('example.csv')
┌─c1─┬─c2─┬─c3─┐
│  1 │  2 │  3 │
└────┴────┴────┘

Вы также можете использовать табличные функции для создания временной таблицы, доступной только в текущем запросе. Например:

SELECT * FROM generateSeries(1,5);
┌─generate_series─┐
│               1 │
│               2 │
│               3 │
│               4 │
│               5 │
└─────────────────┘

Таблица удаляется после завершения запроса.

Функции таблиц можно использовать для создания таблиц со следующим синтаксисом:

CREATE TABLE [IF NOT EXISTS] [db.]table_name AS table_function()

Например:

CREATE TABLE series AS generateSeries(1, 5);
SELECT * FROM series;
┌─generate_series─┐
│               1 │
│               2 │
│               3 │
│               4 │
│               5 │
└─────────────────┘

Наконец, табличные функции можно использовать для выполнения INSERT в таблицу. Например, мы можем записать содержимое таблицы, которую создали в предыдущем примере, в файл на диске, повторно используя табличную функцию file:

INSERT INTO FUNCTION file('numbers.csv', 'CSV') SELECT * FROM series;
cat numbers.csv
1
2
3
4
5
Примечание

Нельзя использовать табличные функции, если настройка allow_ddl отключена.