关于程序员:DataWorks开发ODPS-SQL开发生产环境自动补全ProjectName

38次阅读

共计 2038 个字符,预计需要花费 6 分钟才能阅读完成。

简介:DataWorks 规范模式下,反对开发环境和生产环境隔离,开发环境和生产环境的数据库表命名有所区别,如果须要在开发环境拜访生产环境的数据库表或者跨我的项目空间拜访其余我的项目空间的表,须要依据 projectA.tablename 命名标准严格辨别数据库表名,防止误操作生产环境。开发环境 SQL 工作中须要应用【开发环境空间. 表名】来应用表,公布到生产环境时,须要手动把开发环境空间改成生产环境空间名称能力公布。本文针对此类场景实现在 DataWorks 可能自动识别工作在开发环境应用开发环境的名称,在生产环境应用生产环境的名称。
一、场景形容
DataWorks 规范模式下,反对开发环境和生产环境隔离,开发环境和生产环境的数据库表命名有所区别,如果须要在开发环境拜访生产环境的数据库表或者跨我的项目空间 A 拜访我的项目空间 B 的表,须要依据以下命名标准严格辨别数据库表名,防止误操作生产环境。

环境类型 规范模式 示例
开发环境 我的项目名_dev. 表名 在 projectA 我的项目下创立一个开发库表 user_info,则数据库表名为:projectA_dev.user_info。
生产环境 我的项目名. 表名 在 projectA 我的项目下创立一个生产库表 user_info,则数据库表名为:projectA.user_info。
跨我的项目

开发环境

我的项目名_dev. 表名
在 projectB 我的项目下创立一个开发库表 user_info,projectA 须要拜访该数据库表则数据库表名为:projecB_dev.user_info。

跨我的项目

生产环境

我的项目名. 表名
在 projectB 我的项目下创立一个开发库表 user_info,projectA 须要拜访该数据库表则数据库表名为:projectB.user_info。

开发环境 SQL 工作中须要应用【开发环境空间. 表名】projectA_dev.user_info 来应用表,公布到生产环境时,须要手动把开发环境空间改成生产环境空间名称 projectA.user_info 能力公布。

二、实现计划
1、计划一应用赋值节点
1.1 计划思路
通过 Python SDK get_project 办法获取项目名称。而后应用赋值节点将上游节点工作的后果提供给上游节点应用。

1.2 计划存在的问题
赋值节点目前仅反对 ODPS SQL、SHELL 和 Python2 三种赋值语言。应用 Python2 须要下载 odps 包。且在代码中连贯 odps 须要指定 AK 和 ProjectName。此计划尽管能够实现获取上游后果赋值给上游应用,然而灵便切换想看空间名称看起来无奈满足用户场景。

那咱们思考应用 DataWorks 个别节点 Pyodps 手动增加上游输入参数的话。上游应用赋值节点或者参数节点是否可行呢?

工夫测试发现此计划也存在问题。

因为节点上下文参数仅用于上游节点的节点上下文输入参数作为上游节点的节点上下文输出参数,无奈间接将上游节点的查问后果传递到上游,如果您须要将上游节点的查问后果传递到上游节点,能够应用赋值节点。

2、计划二应用流程参数
当整个业务流程须要对同一个变量对立赋值或替换其参数值时,您能够应用流程参数性能。当流程参数的赋值与单个节点参数的赋值不统一时,流程参数的赋值会笼罩节点的参数赋值。

2.1 配置节点参数
本文以跨我的项目空间为例。在我的项目空间 bigdtata_ljw_test 拜访我的项目空间 bigdatazjpoc 下的表数据。

调度配置参数中设置参数
projectname=bigdatazjpoc_dev

代码中援用参数配置
– 代码中援用:以后的项目名称为 bigdtata_ljw_test
select * from ${projectname}.user_info_delta;
配置如下图所示:

2、配置流程参数
参数名称:projectname

参数值或者表达式:bigdatazjpoc

⚠️ 留神:流程参数的名称须要和节点名称统一。

三、计划验证
因为节点中有设置参数。在开发环境单节点测试须要应用冒烟测试或者高级运行。高级运行时此时参数应用的是 bigdatazjpoc_dev 及跨我的项目空间的开发环境。满足开发环境拜访开发环境的需要。

开发环境整个业务流程测试是参数手动输出 bigdatazjpoc_dev,测试运行拜访的同样是开发环境的表数据。

提交到生产环境补数据运行,能够看到此时执行参数为流程参数配置的生产环境的 project。(疏忽截图中运行失败,是因为权限问题。)

这是因为当流程参数的赋值与单个节点参数的赋值不统一时,流程参数的赋值会笼罩节点的参数赋值。流程参数咱们配置即为跨我的项目空间对用的生产环境的我的项目空间。满足此场景。

四、总结
针对跨我的项目空间拜访表数据和开发生产环境隔离拜访表数据场景。不须要频繁批改我的项目空间名称可通过 DataWorks 流程参数性能实现。

原文链接:http://click.aliyun.com/m/100…

本文为阿里云原创内容,未经容许不得转载。

正文完
 0