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

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

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

СтраницаОписание
azureBlobStorageПредоставляет интерфейс, подобный таблице, для выбора/вставки файлов в Azure Blob Storage. Аналогично функции s3.
azureBlobStorageClusterПозволяет обрабатывать файлы из Azure Blob Storage параллельно на множестве узлов в заданном кластере.
clusterAllReplicasПозволяет получить доступ ко всем шардов (настройки в разделе remote_servers) кластера без создания распределенной таблицы.
deltaLakeПредоставляет интерфейс, подобный таблице, для только чтения к таблицам Delta Lake в Amazon S3.
deltaLakeClusterЭто расширение для табличной функции deltaLake.
dictionaryОтображает данные словаря как таблицу ClickHouse. Работает так же, как и движок Dictionary.
executableТабличная функция executable создает таблицу на основе вывода пользовательской функции (UDF), которую вы определяете в скрипте, который выводит строки в stdout.
fileТабличный движок, который предоставляет интерфейс, подобный таблице, для выбора из и вставки в файлы, аналогично табличной функции s3. Используйте file(), когда работаете с локальными файлами, и s3(), когда работаете с корзинами в облачном хранилище, таком как S3, GCS или MinIO.
fileClusterОбеспечивает одновременную обработку файлов, соответствующих заданному пути, на нескольких узлах в пределах кластера. Инициатор устанавливает соединения с рабочими узлами, расширяет шаблоны в пути к файлам и делегирует задачи чтения файлов рабочим узлам. Каждый рабочий узел запрашивает у инициатора следующий файл для обработки, повторяя до тех пор, пока все задачи не будут завершены (все файлы прочитаны).
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 Table FunctionРасширение для табличной функции hudi. Позволяет обрабатывать файлы из таблиц Apache Hudi в Amazon S3 параллельно на множестве узлов в заданном кластере.
icebergПредоставляет интерфейс, похожий на таблицу, для только чтения таблиц Apache Iceberg в Amazon S3, Azure, HDFS или локально сохраненных.
icebergClusterРасширение для табличной функции iceberg, которое позволяет обрабатывать файлы из Apache Iceberg параллельно на множестве узлов в заданном кластере.
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), содержащей целые числа от начала до конца включительно.
odbcВозвращает таблицу, подключенную через ODBC.
postgresqlПозволяет выполнять запросы SELECT и INSERT к данным, хранящимся на удаленном сервере PostgreSQL.
redisЭта табличная функция позволяет интегрировать ClickHouse с Redis.
remote, remoteSecureТабличная функция remote позволяет обращаться к удаленным серверам «на лету», т.е. без создания распределенной таблицы. Табличная функция remoteSecure аналогична remote, но через защищенное соединение.
s3 Table FunctionПредоставляет интерфейс, аналогичный таблице, для выбора/вставки файлов в Amazon S3 и Google Cloud Storage. Эта табличная функция аналогична функции hdfs, но предлагает специфические функции для S3.
s3ClusterРасширение для табличной функции s3, которое позволяет параллельно обрабатывать файлы из Amazon S3 и Google Cloud Storage на множестве узлов в заданном кластере.
sqliteПозволяет выполнять запросы к данным, хранящимся в базе данных SQLite.
arrowFlightПозволяет выполнять запросы к данным, доступным через сервер Apache Arrow Flight.
urlСоздает таблицу из URL с заданным форматом и структурой
urlClusterПозволяет обрабатывать файлы из URL параллельно на множестве узлов в заданном кластере.
viewПревращает подзапрос в таблицу. Функция реализует представления.
valuesсоздает временное хранилище, которое заполняет колонки значениями.
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 отключена.