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 выполняет следующие действия:
Проверяет права пользователей.
Убедитесь, что источник метаданных аналитической таблицы существует.
Использует библиотеку Apache Arrow для извлечения информации о столбцах из Parquet-файла.
Устанавливает соответствие между типом данных каждого столбца аналитической таблицы и типом данных, поддерживаемым pgpro_metastore.
Создаёт новый снимок в таблице метаданных
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 выполняет следующие действия:
Проверяет права пользователей.
Убедитесь, что источник метаданных аналитической таблицы существует.
Информация о столбцах аналитической таблицы извлекается из таблицы-кучи через запросы к служебным таблицам Postgres Pro.
Устанавливает соответствие между типом данных каждого столбца и типом данных, поддерживаемым pgpro_metastore.
Создаёт новый снимок в таблице метаданных
pga_snapshot, новую аналитическую таблицу в таблице метаданныхpga_tableи новые столбцы в таблице метаданныхpga_column.
3.3.2. Переименование аналитической таблицы #
Выполните следующий запрос:
SELECT metastore.rename_table('имя_схемы.текущее_имя_таблицы' или 'текущее_имя_таблицы', 'новое_имя_таблицы');Где:
имя_таблицы: имя аналитической схемы, в которой создана таблица.Необязательный параметр. Если он не задан, используется текущая схема.
текущее_имя_таблицы: текущее имя аналитической таблицы.новое_имя_таблицы: новое уникальное имя аналитической таблицы.
Пример 3.20.
SELECT metastore.rename_table('testtable', 'testtable1');После выполнения этого запроса pgpro_metastore выполняет следующие действия:
Проверяет права пользователей.
Обновляет значение
table_nameдля аналитической таблицы в таблице метаданныхpga_table.Обновляет значение
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 выполняет следующие действия:
Проверяет права пользователей.
Извлекает метаданные аналитической таблицы и путь к общему каталогу.
Генерирует запрос
CREATE VIEW, в котором источником данных является результат вызова функцииread_parquet().Выполняет запрос
CREATE VIEW.Предоставляет права на представление Postgres Pro.
Создаёт новый снимок в таблице метаданных
pga_snapshot.
3.3.4. Удаление аналитической таблицы #
Выполните следующий запрос:
SELECT metastore.remove_table('имя_таблицы');Где имя_таблицы — это имя аналитической таблицы, которая будет удалена.
Пример 3.22.
SELECT metastore.remove_table('example_table');После выполнения этого запроса pgpro_metastore выполняет следующие действия:
Проверяет права пользователей.
Создаёт новый снимок в таблице метаданных
pga_snapshotи указывает для аналитической таблицы и всех связанных с ней объектов pgpro_metastore значениеend_snapshotв таблице метаданныхpga_tableи других таблицах метаданных.