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

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

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

СтраницаОписание
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Интерпретирует данные из аргументов в соответствии с указанным входным форматом. Если аргумент structure не указан, структура извлекается из данных.
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 в 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. Функция используется для удобства написания тестов и демонстраций.
numbersВозвращает таблицы с единственным столбцом number, содержащим задаваемые целые числа.
primesВозвращает таблицы с единственным столбцом prime, содержащим простые числа.
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Предоставляет табличный интерфейс для выполнения операций SELECT и INSERT с файлами в 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 отключён.