22.3. Запросы к прокси-таблицам #

В этом разделе описывается, как получать имена прокси-таблиц и объектов pgpro_metastore. Это может быть полезно для различных задач, например при выполнении аудита прав.

22.3.1. Получение имён всех прокси-таблиц и объектов pgpro_metastore #

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

  SELECT
      pt.proxy_table_name,
      CASE
          WHEN pt.proxy_table_name LIKE 't_%' THEN 'table'
          WHEN pt.proxy_table_name LIKE 'f_%' THEN 'folder'
          WHEN pt.proxy_table_name LIKE 's_%' THEN 'storage'
          WHEN pt.proxy_table_name LIKE 'h_%' THEN 'schema'
      END AS object_type,
      COALESCE(tbl.table_name, fld.folder_name, stg.storage_name, sch.schema_name) AS object_name
  FROM axe_catalog.pga_proxy_table pt
  LEFT JOIN axe_catalog.pga_table tbl
      ON tbl.proxy_table_id = pt.proxy_table_id AND tbl.end_snapshot IS NULL
  LEFT JOIN axe_catalog.pga_folder fld
      ON fld.proxy_table_id = pt.proxy_table_id AND fld.end_snapshot IS NULL
  LEFT JOIN axe_catalog.pga_storage stg
      ON stg.proxy_table_id = pt.proxy_table_id AND stg.end_snapshot IS NULL
  LEFT JOIN axe_catalog.pga_schema sch
      ON sch.proxy_table_id = pt.proxy_table_id AND sch.end_snapshot IS NULL;

22.3.2. Получение имени прокси-таблицы с помощью имени объекта pgpro_metastore #

Вы можете получить имена прокси-таблиц с помощью имён связанных объектов pgpro_metastore из таблиц метаданных.

Пример 22.3.

Следующий запрос получает имя прокси-таблицы, связанной с аналитической таблицей my_table в схеме my_schema:

  SELECT pt.proxy_table_name
  FROM axe_catalog.pga_proxy_table pt
  JOIN axe_catalog.pga_table t ON t.proxy_table_id = pt.proxy_table_id
  JOIN axe_catalog.pga_schema s ON t.schema_id = s.schema_id
  WHERE t.table_name = 'my_table'
    AND s.schema_name = 'my_schema'
    AND t.end_snapshot IS NULL;

22.3.3. Получение имени объекта pgpro_metastore с помощью имени прокси-таблицы #

Вы можете получить имена объектов pgpro_metastore из таблиц метаданных с помощью имён связанных прокси-таблиц.

Пример 22.4.

Следующий запрос получает имя аналитической таблицы, связанной с прокси-таблицей t_my_table_00001:

  SELECT t.table_name
  FROM axe_catalog.pga_table t
  JOIN axe_catalog.pga_proxy_table pt ON t.proxy_table_id = pt.proxy_table_id
  WHERE pt.proxy_table_name = 't_my_table_00001'
    AND t.end_snapshot IS NULL;