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 выполняет следующие действия:

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

  2. Проверяет, что метаданные Parquet-файлов и аналитической таблицы совместимы.

  3. Копирует Parquet-файлы в общий каталог с Parquet-файлами аналитической таблицы.

  4. Создаёт новый снимок в таблице метаданных pga_snapshot и новый Parquet-файл в таблице метаданных pga_data_file.

  5. Обновляет статистику по аналитической таблице и столбцам.

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 выполняет следующие действия:

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

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

  3. Создаёт каталог для результатов SQL-запроса, которые будут сохранены в виде Parquet-файлов.

  4. Выполняет SQL-запрос и записывает его результаты в Parquet-файлы.

  5. Добавляет OLAP-данные в аналитическую таблицу.

3.7.3. Удаление Parquet-файлов #

Эту операцию рекомендуется выполнять в период низкой пользовательской активности, так как Parquet-файлы удаляются не только из хранилищ, но и из всех связанных таблиц метаданных.

Чтобы удалить Parquet-файлы:

  1. Отметьте связанные с 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 выполняет следующие действия:

    1. Помечает как устаревшие все снимки со значением snapshot_time меньше, чем control_time.

    2. Находит Parquet-файлы в таблице метаданных pga_data_file со значениями begin_snapshot, которые ссылаются на устаревшие снимки, и создаёт связанные Parquet-файлы в таблице метаданных pga_files_scheduled_for_deletion, если они не были созданы при предыдущих вызовах expire_snapshot.

    Примечание

    Снимки, помеченные как устаревшие, влияют только на таблицу метаданных pga_data_file и не поддерживаются для других таблиц метаданных, в которых есть значение begin_snapshot.

  2. Удалите Parquet-файлы:

    SELECT metastore.delete_expired_files();

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

    1. Удаляет Parquet-фалы из таблиц метаданных pga_files_scheduled_for_deletion, pga_data_file и pga_file_column_statistics.

    2. Пересчитывает статистику для аналитических таблиц, связанных с удалёнными Parquet-файлами, в таблице метаданных pga_table_column_stats.

    3. Пересчитывает статистику для столбцов аналитических таблиц, связанных с удалёнными Parquet-файлами, в таблице метаданных pga_table_column_stats.

    4. Пересчитывает значение column_order для других Parquet-файлов.