DataWorks开发ODPS SQL开发生产环境自动补全ProjectName
简介: 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/1000346941/
本文为阿里云原创内容,未经允许不得转载。
DataWorks开发ODPS SQL开发生产环境自动补全ProjectName的更多相关文章
- 使用Visual Studio Comunity 2019开发Unity C#脚本没有自动补全的解决方法
最近开始试着玩Unity3D,要为场景中的物体编辑脚本.Unity3D推荐的脚本语言是C#,在Unity打开C#就会使用Visual Studio来进行编辑. 启动Visual Studio之后注意到 ...
- 自动补全、回滚!介绍一款可视化 sql 诊断利器
Yearning简介 ================= Yearning MYSQL 是一个SQL语句审核平台.提供查询审计,SQL审核等多种功能,支持Mysql,可以在一定程度上解决运维与开发之间 ...
- 解决VS Code开发Python3语言自动补全功能不带括号的问题
Visual Studio Code(以下简称VS Code)用来开发Python3,还是很便利的,本身这个IDE就是轻量级的,才几十兆大小,通过安装插件的方式支持各种语言的开发.界面也美美哒,可以在 ...
- Python2.7.12开发环境构建(自动补全)
一.安装readline-devel包 Python的编译安装依赖于这个包 yum -y install readline-devel 二.安装Python2.7.12 Python官方网站(到此处下 ...
- 基于linux vim环境python代码自动补全
(一)简述 在使用vim编写python文件的过程中,默认的vim不会实现代码补全功能,在写程序或者是改程序的时候不是很方面,很容易出错,但是vim提供了各种插件,其中包括这个python文件的自动补 ...
- jquery autocomplete实现读取sql数据库自动补全TextBox
转自我本良人 原文 jquery autocomplete实现读取sql数据库自动补全TextBox 项目需要这样子一个功能,其他部门提的意见,只好去实现了哦,搞了好久才弄出来,分享一下. 1.前台页 ...
- PL/SQL Developer自动补全SQL技巧
s = SELECT t.* FROM t w = WHERE b = BETWEEN AND l = LIKE '%%' o = ORDER BY insw = IN (SELECT a FROM ...
- ADT开发中的一些优化设置:代码背景色、代码字体大小、代码自动补全
初学Android开发,在网上找到一些ADT工具的优化,自己设置好了,截图保存下来.免得以后忘了. 1. 设置背景颜色: 色调85.饱和度90.亮度205 RGB:199.237.204 2. 设置代 ...
- PL/SQL 自动补全[转]
1.新建 shortcuts.txt 内容如下: s = SELECT t.* FROM t w = WHERE b = BETWEEN AND l = LIKE '%%' o = ORDER BY ...
- 【Qt编程】基于Qt的词典开发系列<十四>自动补全功能
最近写了一个查单词的类似有道词典的软件,里面就有一个自动补全功能(即当你输入一个字母时,就会出现几个候选项).这个自动补全功能十分常见,百度搜索关键词时就会出现.不过它们这些补全功能都是与你输入的进行 ...
随机推荐
- 基于python的json和cvs格式转换
一 概念 1 json: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Pr ...
- ble无线智能工牌解决方案技术解析
场景需求 在无线智能工牌领域,团队做了几个实际场景的解决方案之后,积累了一些行业需求经验和技术经验.这里做一个总结,算是一种沉淀吧.场景一:居家养老,医护和护工人员定期上门服务,根据工作时长来发工资 ...
- JS(对象)
一 对象 1.1 对象的相关概念(python中的字典) 什么是对象? 在 JavaScript 中,对象是一组无序的相关属性和方法的集合,所有的事物都是对象,例如字符串.数值.数 组.函数等. 对象 ...
- 记录--alova组件使用方法(区别axios)
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 在我们写项目代码时,应该更加专注于业务逻辑的实现,而把定式代码交给js库或工程化自动处理,而我想说的是,请求逻辑其实也是可以继续简化的. ...
- 记录--form 表单恢复初始数据
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 form 表单恢复初始数据 在现代的 Web 开发中,表单是不可或缺的组件之一.用户可以通过表单输入和提交数据,而开发者则需要对这些数据进 ...
- Linux修改账户密码
打开终端并登录到要修改密码的账户 输入 passwd 命令,然后 Enter 系统会提示你输入 Current password. 如果是第一次登录或者忘记密码,使用 passwd -d userna ...
- 一秒变身艺术家!U2Net 跨界肖像画,让你的头像瞬间细节完美复刻,打造个性化头像新风潮!
效果 测试图片来自网络,如有侵权,联系删除. 项目 关注微信公众号,回复关键字:"一秒变身艺术家",获取程序! 模型信息 Inputs ---------------------- ...
- module的定义及端口的作用
模型功能 module是verilog中层次划分的基本单元 通过module之间的调用,可以实现硬件描述层次的提高 端口列表则是module的输入输出,和数字电路的走线连接等效 基于module的不断 ...
- read IEEE std for verolog(2)
read IEE standard for verilog (2) 1.阅读前言 前面大致地看完了序言,了解了一下verilog的起源以及基本特性.接下来往下读有相关链接和目录,然后是正文.今天暂时阅 ...
- SpaceDesk怎么连接平板/PC(提高生产力,扩展副屏)
1.下载安装 分为安卓端和PC端,两个设备都需要安装对应的软件. SpaceDesk官网 https://link.zhihu.com/?target=http%3A//spacedesk.net/ ...