【发布时间】:2020-07-08 03:54:19
【问题描述】:
我在 Redshift 上创建了存储过程,需要对其进行编排。 SP 包含用于创建 SCD 的 DML 语句,并且仅限于 Redshift。
AWS 上有没有办法通过 Glue 或任何其他 AWS 服务在 Redshift 上运行 SP?
由于我们在 RS 上没有触发器,我正在探索其他选项。非常感谢您的帮助。
【问题讨论】:
标签: amazon-web-services amazon-redshift aws-glue
我在 Redshift 上创建了存储过程,需要对其进行编排。 SP 包含用于创建 SCD 的 DML 语句,并且仅限于 Redshift。
AWS 上有没有办法通过 Glue 或任何其他 AWS 服务在 Redshift 上运行 SP?
由于我们在 RS 上没有触发器,我正在探索其他选项。非常感谢您的帮助。
【问题讨论】:
标签: amazon-web-services amazon-redshift aws-glue
我认为您可以尝试使用 preactions/Postactions。 Preactions/Postactions 允许您在动态框架处理数据之前/之后执行 sql 命令。您可以提供一个以分号分隔的命令列表,例如只是普通的 sql 命令,您可以尝试使用相同的方法调用程序:
datasink5 = glueContext.write_dynamic_frame.from_jdbc_conf(frame = prod_dynamicframe, catalog_connection = "my_rdshft", connection_options = {"preactions":"delete from dw.product_dim where sku in ('xxxxx,'bbbb');","dbtable": "dw.product_dim", "database": "DWBI","postactions":"truncate table ld_stg.ld_product_tbl;"}, redshift_tmp_dir = args["TempDir"], transformation_ctx = "datasink5")
This 也可能会有所帮助。
【讨论】:
您可以尝试的一种方法是@Eman 提到的前置操作和后置操作,我还没有尝试过。
但我使用 psycopg2 来触发 redshift 上的存储过程。 只需压缩包装并传递给胶水。
建立一个jdbc连接
并使用callproc()函数调用存储过程。
【讨论】: