25.1. Создание аналитической таблицы (metastore.add_table) #

25.1.1. Создание аналитической таблицы из Parquet-файла #

Требуемые права: только администратор Postgres Pro AXE. За подробной информацией о хранимых процедурах и правах обратитесь к Разделу 22.1.

Выполните следующую команду:

  SELECT metastore.add_table('имя_схемы.имя_таблицы', 'имя_хранилища', 'URI_Parquet-файла', 'столбцы_для_секционирования');

Где:

  • имя_схемы.имя_таблицы: имя аналитической схемы, в которой создаётся аналитическая таблица, а также имя самой таблицы.

    Имя схемы можно пропустить и просто указать имя таблицы (без точки). В этом случае используется аналитическая схема по умолчанию main.

    В одной схеме невозможно создать две таблицы с одинаковым именем. Имена аналитических схем содержатся в столбце schema_name таблицы метаданных pga_schema. Имена аналитических таблиц содержатся в столбце table_name таблицы метаданных pga_table.

  • имя_хранилища: имя хранилища, в котором располагаются Parquet-файлы аналитической таблицы.

  • URI_Parquet-файла: URI Parquet-файла, из которого создаётся аналитическая таблица.

    URI должен начинаться с file:/// или s3://.

  • столбцы_для_секционирования: разделённый запятыми список столбцов, по которым аналитическая таблица секционируется.

    Необязательный параметр.

Postgres Pro AXE выполняет следующие действия:

  1. Проверяет параметры ввода и права пользователя.

  2. Проверяет, что Parquet-файл существует.

  3. Извлекает информацию о столбцах из Parquet-файла.

  4. Устанавливает соответствие между типом данных каждого столбца из Parquet-файла и типом данных, поддерживаемым pgpro_metastore.

  5. Создаёт новые записи в таблицах метаданных pga_snapshot, pga_table и pga_column.

  6. Создаёт новые записи в таблицах метаданных pga_partition_info, pga_partition_column и pga_partition_value, если аналитическая таблица секционирована.

Пример 25.1. Выполнение хранимой процедуры metastore.add_table

  SELECT metastore.add_table('table_example', 'storage_example', 'file:///home/user/tmp/parquet_data/t.parquet', 'column_1,column_2,column_3');

25.1.2. Создание аналитической таблицы из таблицы-кучи #

Требуемые права: только администратор Postgres Pro AXE. За подробной информацией о хранимых процедурах и правах обратитесь к Разделу 22.1.

Выполните следующую команду:

  SELECT metastore.add_table('имя_схемы.имя_таблицы', 'имя_хранилища', 'имя_таблицы-кучи', 'столбцы_для_секционирования');

Где:

  • имя_схемы.имя_таблицы: имя аналитической схемы, в которой создаётся аналитическая таблица, а также имя самой таблицы.

    Имя схемы можно пропустить и просто указать имя таблицы (без точки). В этом случае используется аналитическая схема по умолчанию main.

    В одной схеме невозможно создать две таблицы с одинаковым именем. Имена аналитических схем содержатся в столбце schema_name таблицы метаданных pga_schema. Имена аналитических таблиц содержатся в столбце table_name таблицы метаданных pga_table.

  • имя_хранилища: имя хранилища, в котором располагаются Parquet-файлы аналитической таблицы.

  • имя_таблицы-кучи: полностью заданное имя таблицы-кучи, из которой создаётся аналитическая таблица, начинающееся с имени схемы.

  • столбцы_для_секционирования: разделённый запятыми список столбцов, по которым аналитическая таблица секционируется.

    Необязательный параметр.

Postgres Pro AXE выполняет следующие действия:

  1. Проверяет параметры ввода и права пользователя.

  2. Проверяет, что таблица-куча существует.

  3. Извлекает информацию о столбцах таблицы-кучи через запросы к служебным таблицам Postgres Pro.

  4. Устанавливает соответствие между типом данных каждого столбца и типом данных, поддерживаемым pgpro_metastore.

  5. Создаёт новые записи в таблицах метаданных pga_snapshot, pga_table и pga_column.

  6. Создаёт новые записи в таблицах метаданных pga_partition_info, pga_partition_column и pga_partition_value, если аналитическая таблица секционирована.

Пример 25.2. Выполнение хранимой процедуры metastore.add_table

  SELECT metastore.add_table('table_example', 'storage_example', 'public.heap_table_example', 'column_1,column_2,column_3');