在 Redshift 中创建视图时有什么方法可以强制后期绑定?
Is there any way to force late-binding when creating views in Redshift?
我正在使用 Airflow 来编排 ETL。许多任务都有 drop table
子句,当用户在没有后期绑定的情况下创建视图时,这些子句会失败。将所有任务更改为 drop cascade
不是一个选项。
有没有办法强制后期绑定?通过用户权限或 Redshift 配置。
无法强制执行此操作。
要创建后期绑定视图,只需添加
WITH NO SCHEMA BINDING
不,您不能强制所有视图在集群或数据库级别使用后期绑定。您可以创建一个存储过程,它使用 v_generate_view_ddl
视图逻辑来获取所有相关视图的 DDL 并自动重新创建它们。
FWIW,如果可以避免,我建议不要直接对面向用户的表执行 ETL。 运行 针对用户无法访问的暂存模式的 ETL,然后在加载和准备数据时 "flip" 数据进入他们的模式。您可以使用 ATLER TABLE APPEND
快速完成翻转。
我正在使用 Airflow 来编排 ETL。许多任务都有 drop table
子句,当用户在没有后期绑定的情况下创建视图时,这些子句会失败。将所有任务更改为 drop cascade
不是一个选项。
有没有办法强制后期绑定?通过用户权限或 Redshift 配置。
无法强制执行此操作。
要创建后期绑定视图,只需添加
WITH NO SCHEMA BINDING
不,您不能强制所有视图在集群或数据库级别使用后期绑定。您可以创建一个存储过程,它使用 v_generate_view_ddl
视图逻辑来获取所有相关视图的 DDL 并自动重新创建它们。
FWIW,如果可以避免,我建议不要直接对面向用户的表执行 ETL。 运行 针对用户无法访问的暂存模式的 ETL,然后在加载和准备数据时 "flip" 数据进入他们的模式。您可以使用 ATLER TABLE APPEND
快速完成翻转。