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

Вы можете создать представление Postgres Pro на основе Parquet-файлов аналитической таблицы, чтобы работать с этой таблицей как со стандартной реляционной таблицей, используя команды SELECT.

Важно

Представления Postgres Pro можно создать повторно только в периоды нулевой активности пользователей, чтобы предотвратить возможную потерю данных.

Перед созданием представления Postgres Pro убедитесь, что аналитическая таблица содержит Parquet-файлы. Если нет, Postgres Pro AXE возвращает ошибку.

Требуемые права:

  • Право SELECT на аналитическую таблицу.

  • Право CREATE на схему Postgres Pro, которая содержит представление.

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

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

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

Где:

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

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

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

    Важно

    Это не имя аналитической схемы из таблицы метаданных pga_schema.

    Значение по умолчанию: '' (пустая строка).

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

  • true_или_false: указывает, следует ли удалить существующее представление Postgres Pro с таким же именем в указанной схеме перед созданием нового представления.

    Значение по умолчанию: false.

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

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

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

  2. Получает метаданные аналитической таблицы и путь к каталогу хранилища с Parquet-файлами этой таблицы.

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

  4. Выполняет команду CREATE VIEW.

  5. Предоставляет текущему пользователю права на представление Postgres Pro.

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

Если аналитическая таблица создана без указания аналитической схемы, таблица содержится в аналитической схеме по умолчанию — main, а представление Postgres Pro также имеет имя table_name:

  SELECT metastore.create_view('table_name');

Если аналитическая таблица содержится в аналитической схеме my_schema, имя представления Postgres Promy_schema.table_name:

  SELECT metastore.create_view('my_schema.table_name');

Пример 25.5. Как обрабатывается третий параметр

Предположим, вы успешно создали представление Postgres Pro, выполнив следующую команду:

  SELECT metastore.create_view('my_view');

Вы не удаляли представление Postgres Pro с помощью следующей команды:

  DROP VIEW my_view;

Затем вы попытались создать представление Postgres Pro с таким же именем:

  SELECT metastore.create_view('my_view');

Вы получаете ошибку, указывающую, что представление Postgres Pro с таким именем уже существует.

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

  SELECT metastore.create_view('my_view', '', true);

Ошибки нет, хранимая процедура metastore.create_view проверяет, существует ли представление Postgres Pro с таким же именем:

  • Если представление Postgres Pro не существует, создаётся новое представление.

  • Если представление Postgres Pro существует, проверяется, используется ли это представление какой-либо командой в СУБД:

    • Если такой команды нет, удаляет существующее представление и создаёт новое.

    • Если представление используется в команде, операция завершается с сообщением о том, что существующее представление невозможно безопасно удалить.