3.3. Аналитические таблицы #

Аналитические таблицы — это наборы столбцов и строк с OLAP-данными, предоставляющие полную историю изменений данных и типа таблицы.

Строки аналитических таблиц хранятся в виде Parquet-файлов в хранилище. Метаданные аналитических таблиц хранятся в таблице метаданных pga_table.

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

В Postgres Pro AXE доступны следующие способы создания аналитических таблиц:

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

Выполните следующий запрос:

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

Где:

  • имя_таблицы: уникальное имя аналитической таблицы.

    Полностью заданное имя аналитической таблицы состоит из аналитической схемы и имени таблицы. Оно генерируется в формате имя_аналитической_схемы.имя_аналитической_таблицы.

  • имя_хранилища: имя хранилища, в котором будут располагаться Parquet-файлы.

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

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

Пример 3.18.

    SELECT metastore.add_table('example_table', 'example_storage', 'file:///home/user/tmp/parquet_data/t.parquet');
  

После выполнения этого запроса pgpro_metastore выполняет следующие действия:

  1. Проверяет права пользователей.

  2. Убедитесь, что источник метаданных аналитической таблицы существует.

  3. Использует библиотеку Apache Arrow для извлечения информации о столбцах из Parquet-файла.

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

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

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

Выполните следующий запрос:

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

Где:

  • имя_таблицы: уникальное имя аналитической таблицы.

    Полностью заданное имя аналитической таблицы состоит из аналитической схемы и имени таблицы. Оно генерируется в формате имя_аналитической_схемы.имя_аналитической_таблицы.

  • имя_хранилища: имя хранилища, в котором будут располагаться Parquet-файлы.

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

Пример 3.19.

    SELECT metastore.add_table('example_table', 'example_storage', 'public.example_heap_table');
  

После выполнения этого запроса pgpro_metastore выполняет следующие действия:

  1. Проверяет права пользователей.

  2. Убедитесь, что источник метаданных аналитической таблицы существует.

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

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

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

3.3.2. Переименование аналитической таблицы #

Выполните следующий запрос:

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

Где:

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

    Необязательный параметр. Если он не задан, используется текущая схема.

  • текущее_имя_таблицы: текущее имя аналитической таблицы.

  • новое_имя_таблицы: новое уникальное имя аналитической таблицы.

Пример 3.20.

  SELECT metastore.rename_table('testtable', 'testtable1');

После выполнения этого запроса pgpro_metastore выполняет следующие действия:

  1. Проверяет права пользователей.

  2. Обновляет значение table_name для аналитической таблицы в таблице метаданных pga_table.

  3. Обновляет значение view_sql для аналитической таблицы.

3.3.3. Создание представления Postgres Pro из аналитической таблицы #

Выполните следующий запрос:

  SELECT metastore.create_view('имя_таблицы', 'имя_схемы_Postgres_Pro');

Где:

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

  • имя_схемы_Postgres_Pro: имя схемы Postgres Pro, связанной с представлением.

    Необязательный параметр. Если он не задан, схема выбирается автоматически.

Пример 3.21.

  SELECT metastore.create_view('example_table');

После выполнения этого запроса pgpro_metastore выполняет следующие действия:

  1. Проверяет права пользователей.

  2. Извлекает метаданные аналитической таблицы и путь к общему каталогу.

  3. Генерирует запрос CREATE VIEW, в котором источником данных является результат вызова функции read_parquet().

  4. Выполняет запрос CREATE VIEW.

  5. Предоставляет права на представление Postgres Pro.

  6. Создаёт новый снимок в таблице метаданных pga_snapshot.

3.3.4. Удаление аналитической таблицы #

Выполните следующий запрос:

  SELECT metastore.remove_table('имя_таблицы');

Где имя_таблицы — это имя аналитической таблицы, которая будет удалена.

Пример 3.22.

  SELECT metastore.remove_table('example_table');

После выполнения этого запроса pgpro_metastore выполняет следующие действия:

  1. Проверяет права пользователей.

  2. Создаёт новый снимок в таблице метаданных pga_snapshot и указывает для аналитической таблицы и всех связанных с ней объектов pgpro_metastore значение end_snapshot в таблице метаданных pga_table и других таблицах метаданных.