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

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

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

СтраницаОписание
azureBlobStorageПредоставляет табличный интерфейс для выбора и вставки файлов в Azure Blob Storage. Аналогично функции s3.
azureBlobStorageClusterПозволяет выполнять параллельную обработку файлов из Azure Blob Storage на множестве узлов заданного кластера.
clusterAllReplicasПозволяет обращаться ко всем сегментам кластера (сконфигурированным в разделе remote_servers) без создания distributed таблицы.
deltaLakeПредоставляет табличный интерфейс только для чтения к таблицам Delta Lake, хранящимся в Amazon S3.
deltaLakeClusterЭто расширение функции таблицы deltaLake.
словарьОтображает данные словаря в виде таблицы 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.
fuzzJSONВносит случайные изменения в строку JSON.
fuzzQueryВносит случайные изменения в заданную строку запроса.
generateRandomГенерирует случайные данные на основе заданной схемы. Позволяет заполнять тестовые таблицы этими данными. Поддерживаются не все типы данных.
mergeTreeIndexПредставляет содержимое файлов индексов и меток таблиц MergeTree. Может использоваться для анализа внутреннего состояния.
mergeTreeProjectionОтражает содержимое проекций в таблицах MergeTree. Может использоваться для интроспекции.
hdfsСоздаёт таблицу из файлов в HDFS. Эта табличная функция похожа на табличные функции url и file.
hdfsClusterПозволяет параллельно обрабатывать файлы из HDFS на многих узлах заданного кластера.
hudiПредоставляет интерфейс в виде таблицы только для чтения к таблицам Apache Hudi в Amazon S3.
ytsaurusТабличная функция позволяет считывать данные из кластера YTsaurus.
Табличная функция hudiClusterРасширение табличной функции Hudi. Позволяет обрабатывать файлы из таблиц Apache Hudi в 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. Функция предназначена для удобства при написании тестов и проведении демонстраций.
numbersВозвращает таблицы с единственным столбцом number, содержащим задаваемые целые числа.
prometheusQueryВычисляет результат запроса Prometheus на основе данных из таблицы TimeSeries.
prometheusQueryRangeВычисляет запрос Prometheus на основе данных таблицы TimeSeries.
timeSeriesDatatimeSeriesData возвращает таблицу данных, которую использует таблица db_name.time_series_table, движок таблицы — TimeSeries.
timeSeriesMetricstimeSeriesMetrics возвращает таблицу метрик, используемую таблицей db_name.time_series_table, табличный движок которой — TimeSeries.
timeSeriesSelectorСчитывает временные ряды из таблицы TimeSeries, отфильтрованные по селектору и имеющие временные метки в указанном интервале.
timeSeriesTagsТабличная функция timeSeriesTags возвращает таблицу тегов, используемую таблицей db_name.time_series_table с движком TimeSeries.
zerosИспользуется для тестовых целей как наиболее быстрый способ сгенерировать большое число строк. Аналогична системным таблицам system.zeros и system.zeros_mt.
generate_series (generateSeries)Возвращает таблицу с единственным столбцом generate_series (UInt64), который содержит целые числа от start до stop включительно.
odbcВозвращает таблицу, подключённую по ODBC.
postgresqlПозволяет выполнять запросы SELECT и INSERT к данным, хранящимся на удалённом сервере PostgreSQL.
redisЭта табличная функция позволяет интегрировать ClickHouse с Redis.
remote, remoteSecureТабличная функция remote позволяет получать доступ к удалённым серверам «на лету», то есть без создания distributed таблицы. Табличная функция 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-адресам, с множества узлов в указанном кластере.
valuesсоздаёт временное хранилище, заполняющее столбцы значениями.
viewПреобразует подзапрос в таблицу. Функция используется для реализации представлений.
loopТабличная функция loop в ClickHouse используется для бесконечной выдачи результатов запроса.

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

Табличные функции могут использоваться в разделе FROM команды SELECT. Например, вы можете выполнить 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 отключён.