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;