Табличные функции
Табличные функции создают объекты таблиц в ADQM на основе данных из внешних источников и позволяют выполнять операции чтения и записи данных с помощью следующих запросов:
-
SELECT … FROM <table_function>
— создание временной таблицы, доступной только в текущем запросе (таблица удаляется после завершения выполнения запроса); -
CREATE TABLE [<db_name>.]<table_name> AS <table_function>
— создание таблицы с той же структурой и данными, как результат выполнения соответствующей табличной функции (созданная таблица будет работать так же, как указанная табличная функция); -
INSERT INTO TABLE FUNCTION <table_function> …
— вставка данных в таблицу, на которую ссылается табличная функция.
ВАЖНО
Чтобы использовать табличные функции, включите настройку allow_ddl. |
Функции
ADQM поддерживает множество табличных функций для интеграции с различными внешними системами. Примеры приведены ниже.
Функция | Возвращаемое значение |
---|---|
Таблица для чтения/записи данных локального файла |
|
Таблица для чтения/записи данных на удаленном HTTP/HTTPS сервере по указанному адресу |
|
Таблица для чтения/записи данных файла в HDFS |
|
Таблица для чтения/записи данных, хранящихся на удаленном сервере MySQL |
|
Таблица для чтения/записи данных таблицы удаленной базы данных PostgreSQL |
|
Таблица для чтения данных с удаленного сервера MongoDB |
|
Таблица для чтения/записи данных файла в Amazon S3 |
|
Таблица, подключенная к источнику данных через JDBC-драйвер |
|
Таблица, подключенная к источнику данных через ODBC |
|
Набор данных с кластера, сконфигурированного в секции |
|
Набор данных с удаленных серверов ClickHouse |
Полный список поддерживаемых табличных функций с описаниями можно найти в разделе Table Functions документации ClickHouse.
Примеры использования
Ниже приведены варианты использования табличной функции на примере функции file
, с помощью которой можно считывать или записывать данные указанного файла. Перед выполнением тестовых запросов подготовьте файл-источник:
-
В конфигурационном файле config.xml укажите каталог /var/lib/clickhouse/user_files в качестве значения параметра
user_files_path
. Выполните проверку:$ sudo grep user_files_path /etc/clickhouse-server/config.xml <user_files_path>/var/lib/clickhouse/user_files/</user_files_path>
-
Создайте файл с данными в формате CSV в папке /var/lib/clickhouse/user_files:
$ sudo cat > /var/lib/clickhouse/user_files/file_func_source.csv 1,2,3 4,5,6 7,8,9
Выполните следующие запросы, чтобы посмотреть, как работает функция file
:
-
CREATE TABLE
CREATE TABLE file_table AS file('file_func_source.csv', 'CSV', 'column_1 UInt32, column_2 UInt32, column_3 UInt32');
В результате таблица с указанной структурой и данными из файла будет добавлена в текущую базу данных.
-
SELECT … FROM
Оба следующих запроса возвращают таблицу с данными из CSV-файла:
SELECT * FROM file_table;
SELECT * FROM file('file_func_source.csv', 'CSV', 'column_1 UInt32, column_2 UInt32, column_3 UInt32');
Вывод на экран:
┌─column_1─┬─column_2─┬─column_3─┐ │ 1 │ 2 │ 3 │ │ 4 │ 5 │ 6 │ │ 7 │ 8 │ 9 │ └──────────┴──────────┴──────────┘
-
INSERT INTO TABLE FUNCTION
Следующий запрос выполняет вставку данных в источник:
INSERT INTO FUNCTION file('file_func_source.csv', 'CSV', 'column_1 UInt32, column_2 UInt32, column_3 UInt32') VALUES (10, 20, 30), (40, 50, 60);
Убедитесь, что данные записались в файл:
$ sudo cat /var/lib/clickhouse/user_files/file_func_source.csv 1,2,3 4,5,6 7,8,9 10,20,30 40,50,60
При вызове табличной функции
file
новые строки также попадут в выборку:SELECT * FROM file_table;
┌─column_1─┬─column_2─┬─column_3─┐ │ 1 │ 2 │ 3 │ │ 4 │ 5 │ 6 │ │ 7 │ 8 │ 9 │ │ 10 │ 20 │ 30 │ │ 40 │ 50 │ 60 │ └──────────┴──────────┴──────────┘
ПРИМЕЧАНИЕ
Чтобы получить информацию по основным запросам для работы с таблицами данных в ADQM, можно обратиться к статье Основной синтаксис. |