如何在Redshift或Postgres中的视图中获取列依赖性?

时间:2019-04-16 18:21:42

标签: postgresql amazon-redshift database-metadata

我已经定义了一些基于Redshift中其他视图/表的视图,并且希望从系统表中获取有关列级依赖项的信息。

例如,我有以下定义:

CREATE TABLE t1 AS (SELECT 2 as a, 4 as b, 99 as c );
CREATE VIEW v1 AS (SELECT a, b FROM t1);
CREATE VIEW v2 AS (SELECT a*b/2 as x FROM v1);

我想做的是在系统或目录表上创建某种查询,该查询将返回以下内容:

target_column |  target_table_or_view | source_column | source_table_or_view |
------------------------------------------------------------------------------
     x        |          v2           |        a      |           v1
     x        |          v2           |        b      |           v1
     a        |          v1           |        a      |           t1
     b        |          v1           |        b      |           t1

我已经尝试过此处给出的解决方案:How to create a dependency list for an object in Redshift?。但是,此查询不会产生我要查找的“目标列”列,并且我不知道如何调整它。

这可能吗?理想情况下,我想在Redshift中进行此操作,但是如果需要,我可以使用更新版本的Postgres。

1 个答案:

答案 0 :(得分:1)

PostgreSQL中没有与“目标列”相关的依赖项,因此您无法在元数据中找到它。

这是完整视图(准确地说是其查询重写规则),它依赖于源表和列。