3.7. OLAP-данные #
3.7.1. Добавление OLAP-данных в аналитическую таблицу из Parquet-файлов #
Выполните следующий запрос:
SELECT metastore.add_files('имя_таблицы', 'путь_к_файлам_Parquet');Где:
имя_таблицы: имя аналитической таблицы, в которую будут добавлены OLAP-данные.путь_к_Parquet-файлам: путь к Parquet-файлам или к общему каталогу с Parquet-файлами, из которых будут добавлены OLAP-данные.Введите путь относительно общего каталога из таблицы метаданных
pga_folder, начиная с имени этого каталога.Метаданные Parquet-файлов и аналитической таблицы должны быть совместимыми.
Пример 3.31.
SELECT add_files('example_table', 'folder/file.parquet');После выполнения этого запроса pgpro_metastore выполняет следующие действия:
Проверяет права пользователей.
Проверяет, что метаданные Parquet-файлов и аналитической таблицы совместимы.
Копирует Parquet-файлы в общий каталог с Parquet-файлами аналитической таблицы.
Создаёт новый снимок в таблице метаданных
pga_snapshotи новый Parquet-файл в таблице метаданныхpga_data_file.Обновляет статистику по аналитической таблице и столбцам.
3.7.2. Копирование OLAP-данных в аналитическую таблицу из других таблиц #
Выполните следующий запрос:
SELECT metastore.copy_table('имя_таблицы', SQL-запрос);Где:
имя_таблицы: имя аналитической таблицы, в которую будут скопированы OLAP-данные.SQL-запрос: SQL-запрос для определения OLAP-данных, которые будут скопированы, например,SELECT * FROM my_pgtable.SQL-запрос должен представлять собой одну команду
SELECT. ОперацияUNIONне поддерживается.
Пример 3.32.
SELECT copy_table('example_table', $$select * from example_pg_table$$);После выполнения этого запроса pgpro_metastore выполняет следующие действия:
Проверяет права пользователей.
Создаёт новый снимок в таблице метаданных
pga_snapshot.Создаёт каталог для результатов SQL-запроса, которые будут сохранены в виде Parquet-файлов.
Выполняет SQL-запрос и записывает его результаты в Parquet-файлы.
3.7.3. Удаление Parquet-файлов #
Эту операцию рекомендуется выполнять в период низкой пользовательской активности, так как Parquet-файлы удаляются не только из хранилищ, но и из всех связанных таблиц метаданных.
Чтобы удалить Parquet-файлы:
Отметьте связанные с Parquet-файлами снимки как устаревшие:
SELECT metastore.expire_snapshot(
контрольное_время);Где
контрольное_время— это пороговое значение для даты и времени создания снимка.Эти параметры можно указать одним из следующих способов:
Дата в формате гггг-мм-дд.
Пример 3.33.
2024-11-28Дата в формате гггг-мм-дд и время в формате чч:мм:сс.
Пример 3.34.
2025-11-28 12:22:46Дата в формате гггг-мм-дд и время в формате чч:мм:сс с указанием часового пояса.
Пример 3.35.
2025-11-28 12:22:46+03Дата в формате гггг-мм-дд и время в формате чч:мм:сс.сссссс с указанием часового пояса, где дробная часть секунд имеет не более 6 знаков.
Пример 3.36.
2025-11-28 12:22:46.123456+03
После выполнения этого запроса pgpro_metastore выполняет следующие действия:
Помечает как устаревшие все снимки со значением
snapshot_timeменьше, чемcontrol_time.Находит Parquet-файлы в таблице метаданных
pga_data_fileсо значениямиbegin_snapshot, которые ссылаются на устаревшие снимки, и создаёт связанные Parquet-файлы в таблице метаданныхpga_files_scheduled_for_deletion, если они не были созданы при предыдущих вызовахexpire_snapshot.
Примечание
Снимки, помеченные как устаревшие, влияют только на таблицу метаданных
pga_data_fileи не поддерживаются для других таблиц метаданных, в которых есть значениеbegin_snapshot.Удалите Parquet-файлы:
SELECT metastore.delete_expired_files();
После выполнения этого запроса pgpro_metastore выполняет следующие действия:
Удаляет Parquet-фалы из таблиц метаданных
pga_files_scheduled_for_deletion,pga_data_fileиpga_file_column_statistics.Пересчитывает статистику для аналитических таблиц, связанных с удалёнными Parquet-файлами, в таблице метаданных
pga_table_column_stats.Пересчитывает статистику для столбцов аналитических таблиц, связанных с удалёнными Parquet-файлами, в таблице метаданных
pga_table_column_stats.Пересчитывает значение
column_orderдля других Parquet-файлов.