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

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

Важно

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

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

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

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

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

  SELECT metastore.create_view('имя_схемы.имя_таблицы', ['имя_схемы_Postgres_Pro'], [true_или_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 существует, проверяется, используется ли это представление какой-либо командой в СУБД:

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

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