云服务器内容精选

  • 指标配置 在数据架构控制台,单击左侧导航树中的“配置中心”,然后再选择“指标配置”页签。 管理业务指标 新建指标 单击业务指标自定义项旁的新建按钮,或在已有指标的情况下,单击操作列的图标新增指标。完成后配置如下参数,然后单击“保存”。 图9 新建指标 表3 新建指标参数说明 参数名称 说明 选项名称 自定义指标名称。不超过100字符。 选项名称(英文) 自定义指标英文名称。不超过100字符。 可选值 设置自定义指标在创建业务指标时的可选值。 是否必填 设置自定义指标在创建业务指标时是否为必填项 描述 自定义指标的描述。不超过200字符。 调整指标排序 在有多个指标的情况下,可以通过操作列调整指标的排序。单击图标可进行指标的上移或者下移,双击图标可以输入序号将当前行移动到指定位置。 图10 调整指标排序 图11 移动到指定位置 删除指标 如果需要删除自定义指标,单击操作列的图标就可删除该指标。 图12 删除指标 完成自定义指标的设置后,在新建业务指标界面和完成发布的业务指标的基本信息界面,会显示已保存的自定义指标。 图13 新建业务指标 图14 基本信息界面
  • DDL模板管理 在 DataArts Studio 数据架构中,支持修改各种类型(例如 DLI 、POSTGRESQL、DWS、Hive、SPARK)的表或DLI视图的DDL模板。如果您需要将已创建的某一类型的表生成其他数据源的DDL语句,您就可以根据目标数据源的DDL语法,修改该类型的表的DDL模板。 在数据架构控制台,单击左侧导航树中的“配置中心”,进入相应页面后再单击“DDL模板管理”。 在“DDL模板管理”页面,您可以配置各种类型的表或DLI视图的DDL模板,您可以参考该页面中的“填写说明”修改DDL模板,修改完成后单击“确定”。如果单击“重置”可恢复默认设置。 如图7所示,说明如下: 新建:可查看或编辑新建表或DLI视图的DDL模板。 更新:可查看或编辑更新表或DLI视图的DDL模板。 删除:可查看或编辑删除表或DLI视图的DDL模板。 衍生指标:可以查看或编辑衍生指标的SQL模板。 复合指标:可以查看或编辑复合指标的SQL模板。 汇总表:可以查看或编辑汇总表的SQL模板。 “参考数据”区域:显示了一个表详情的示例,示例中的变量定义了表的详细信息。 “模板代码编辑”区域:可以编辑DDL模板。如果您需要将所选类型的表,生成其他类型的数据库的DDL语句,您可以根据目标数据源的DDL语法,修改DDL模板。 “预览结果”区域:编辑DDL模板后,可以预览按模板生成的DDL语句。 图7 DDL模板管理
  • 编码规则 在数据架构控制台,单击左侧导航树中的“配置中心”,然后再选择“编码规则”页签。 管理编码规则。 添加编码规则 如果需要自定义编码规则,在“编码规则”列表上方,单击“添加”,在弹出对话框中,配置如下参数,然后单击“确定”。 图8 添加编码规则 表2 添加编码规则说明 参数名称 说明 类型 选择编码规则的类型,当前支持如下六种: 业务指标,逻辑实体,逻辑属性, 数据标准、码表、业务对象。 生效范围 生效范围默认是全局。可以选择 主题、流程、码表、数据标准下一级路径。 系统规则 是否为系统规则。自定义的编码规则系统预置为否,不能修改。 编码规则 采用前缀+数字码的方式,不能修改。 前缀 可以是“英文字符”+“数字”的方式,但不能以数字结尾。支持修改。 数字码 支持顺序码和随机码两种方式。 起始码 数字码范围的起始值。 结束码 数字码范围的终止值。 编码示例 根据前缀动态修改后,可以更新展示。 删除编码规则 如果需要删除自定义编码规则,在“编码规则”列表勾选待删除的编码规则,单击列表上方的“删除”,在弹出对话框中,单击“是”即可删除。 系统预置的六个编码规则(逻辑实体、 数据标准、逻辑属性、业务指标、码表、业务对象),不可以删除。 编辑编码规则 如果需要修改自定义编码规则,单击“编码规则”列表中待修改编码规则的“编辑”,弹出“修改编码规则”对话框,修改完成后,单击“确定”。
  • 字段类型 当您执行新建表、逆向数据库或模型转换等操作时,如果系统默认的数据类型或不同数据源之间的数据类型映射关系无法满足需求,您可以增加、删除或修改数据类型。系统默认的数据类型不支持删除。 在数据架构控制台,单击左侧导航树中的“配置中心”,进入相应页面后再单击“字段类型”页签。 在“字段类型”页面,您可以查看数据类型及不同数据源之间的数据类型映射关系,其中“创建人”为SYSTEM的类型为系统默认的字段类型。 类型分组说明如下: DEFAULT:通用数据类型,未指定数据源类型时建表所用的字段类型。例如,新建逻辑模型的表时,就是使用DEFAULT分组中的数据类型。 DLI:DLI连接类型的表的数据类型。 DWS:DWS连接类型的表的数据类型。 MRS _HIVE:MRS_HIVE连接类型的表的数据类型。 MRS_SPARK:MRS_SPARK连接类型Hudi表的数据类型。 POSTGRESQL:POSTGRESQL连接类型的表的数据类型。 CLICKHOUSE:CLICKHOUSE连接类型的表的数据类型。 MYSQL:MYSQL连接类型的表的数据类型。 ORACLE:ORACLE连接类型的表的数据类型。 图5 字段类型 管理字段类型。 新建类型 如果要增加数据类型,单击“新建”按钮。在弹出对话框中,配置如下参数,然后单击“确定”。 图6 新建类型 表1 基本配置 参数名称 说明 类型分组 选择新建类型所属的类型分组。 名称 数据类型的名称。只能包含中文、英文字母、数字、左右括号、空格和下划线,且以中文或英文字母开头。 编码 数据类型的编码,必须为数仓支持的类型。只能包含大写字母,下划线,数字,且以大写字母或下划线开头。 所属域 选择新建类型所属的域。 是否有拓展 对于某些数据类型,需要设定数据的长度范围时,可以打开“是否有拓展”开关,并配置对应的拓展。 例如高精度数据类型DECIMAL(p,s),需要分别指定小数的最大位数(p)和小数位的数量(s),则数据类型DECIMAL的默认拓展可填写为“(10,2)”,指的是小数点左侧的位数为2,小数点右侧的最大位数为10-2=8;又如数据类型VACHAR也需要指定位数,当默认拓展填写为“10”,指的是最大长度为10字符。 数仓对应类型 选择新建类型所映射连接的数据类型。 DEFAULT 选择新建类型所映射的DEFAULT连接的数据类型。 CLICKHOUSE 选择新建类型所映射的CLICKHOUSE连接的数据类型。 DLI 选择新建类型所映射的DLI连接的数据类型。 DWS 选择新建类型所映射的DWS连接的数据类型。 MRS_HIVE 选择新建类型所映射的MRS_HIVE连接的数据类型。 MYSQL 选择新建类型所映射的MYSQL连接的数据类型。 ORACLE 选择新建类型所映射的ORACLE连接的数据类型。 POSTGRESQL 选择新建类型所映射的POSTGRESQL连接的数据类型。 编辑类型 在字段类型列表中,找到需要编辑的字段类型,然后单击按钮进行编辑,参数说明请参见表1。 删除类型 仅支持对于用户新建的数据类型进行删除操作。“创建人”为SYSTEM的类型为系统默认的字段类型,不支持删除操作。 在字段类型列表中,找到需要删除的字段类型,单击按钮,然后在弹出对话框中单击“确定”完成删除。 重置 单击“字段类型”页面底部的“重置”按钮,可恢复系统默认配置。
  • 功能配置 功能配置用于自定义数据架构中的各项功能。 在DataArts Studio控制台首页,选择对应工作空间的“数据架构”模块,进入数据架构页面。 在数据架构控制台,单击左侧导航树中的“配置中心”,进入相应页面后再单击“功能配置”。 在功能配置页面,可根据用户具体的功能需求配置参数,然后单击“确定”。如果单击“重置”可恢复默认设置。 图2 功能配置 模型设计业务流程步骤:此处勾选的流程,在关系建模或维度建模的对象发布上线时,系统会依次自动执行。一般建议全部勾选。 创建表:当数据架构中的表发布并通过审核后,系统将自动在对应的数据源中创建相应的物理表。在表删除时,系统也会自动删除物理表。 同步技术资产:关系建模或维度建模中的表发布后,同步表到数据目录模块作为技术资产,同时同步标签到对应技术资产。 若开启“同步技术资产”功能,您必须预先在DataArts Studio数据目录模块中对表所属的数据库创建数据目录采集任务并采集成功,否则同步技术资产将会执行失败。 同步业务资产:同步逻辑模型到数据目录,作为业务资产,同时同步标签到对应业务资产。 资产关联:实现业务资产与技术资产的关联。业务资产与技术资产同步完成后,在数据目录模块中查看对应的业务资产或技术资产详情时,可以看到相关联的技术资产或业务资产。该功能要求表信息中含有数据源信息。 创建质量作业:当关系建模或维度建模中的表发布并通过审核后,对于关联数据标准(包含数据长度或允许值)或关联质量规则的表,系统将自动在DataArts Studio数据质量模块中创建一个质量作业。 创建数据开发作业:汇总表发布后,自动生成端到端的全流程数据开发作业。 发布数据服务API:汇总表发布后,自动生成数据服务API,此功能仅当数据服务支持汇总表的数据连接时生效。 数据落库:码表维度发布后,会自动将码表的数值填入维度表中。 模型下线流程:选择当模型下线时,是否同步删除技术资产、业务资产、质量作业、数据开发作业。 数据表更新方式:当数据架构中的表在发布后进行了修改,是否同时更新数据库中的表。默认为“不更新”,但在配置中心可以依据自己的需求设置更新动作。依据DDL模板, 在模板里面配置对应的更新语句即可。 不更新:不更新数据库中的表。 依据DDL更新模板:依据DDL模板管理中配置的DDL更新模板,更新数据库中的表,但能否更新成功是由底层数仓引擎的支持情况决定的。由于不同类型的数仓支持的更新表的能力不同,在数据架构中所做的表更新操作,如果数仓不支持,则无法确保数据库中的表和数据架构中的表是一致的。例如,DLI类型的表更新操作不支持删除表字段,如果在数据架构的表中删除了表字段,则无法在数据库中相应的删除表字段。 如果线下数据库支持更新表结构语法,可以在DDL模板配置对应语法, 之后更新操作就可以通过DataArts Studio管控;如果线下数据库不支持更新, 那只有通过重建这种方式更新。 重建数据表:先删除数据库中已有的表,再重新创建表。选择该选项可以确保数据库中的表和数据架构中的表是一致的,但是由于会先删除表,因此一般建议只在开发设计阶段或测试阶段使用该选项,产品上线后不推荐使用该选项。 数据表不区分大小写:对于选中的连接类型,在发布相应类型的表时,同步技术资产时名称将不区分大小写,找到相同的即认为已存在。 物理表同步业务资产:在开启了“同步业务资产”且没有创建逻辑实体的前提下,为了避免物理表发布会覆盖同名逻辑表的情况发生,可主动关闭该选项,物理表发布后不会同步业务资产,只会进行资产关联。数据资产关联前会进行业务资产查找,如没有查找到相应的业务资产则会报错并结束资产关联。 业务表映射使用新版本:系统默认为新版本映射。新版本映射功能支持join等操作,推荐使用新版本映射。 汇总表自动汇聚:发布衍生指标或复合指标时,系统支持自动生成汇总表,一个统计维度对应一个汇总表。自动生成的汇总表可在汇总表页面下选择“自动汇聚”页签查看。 数据标准是否重名:默认关闭,打开后数据标准可以重名。 导入数据标准时自动创建目录:默认开启,打开后导入数据标准时可以自动创建目录。 是否启用公共层:开关打开后,可将当前空间转化为公共层空间。公共层空间的码表和数据标准会共享给所有普通空间;普通空间可以查询、引用公共层空间的码表和数据标准,但无法进行新增、修改和删除的操作。 当前空间转换为公共层空间后,不支持回退为普通空间,其他普通空间也不能再转换为公共层空间。请谨慎选择您的公共层空间。 公共层空间无法反向查询、引用或操作普通空间的数据。 时间限定生成使用动态表达式:开关打开后,则使用动态时间表达式;如开关关闭,则默认使用原有的静态时间表达式。例如时间限定设置为最近30天:如果使用静态表达式,如果当前为9月,生成的最近30天的数据就是8月,即使当前到了10月,生成的数据还是8月,不能自动更新;如果使用动态表达式,当前到了10月,最近30天自动更新为9月。动态表达式时间函数举例如下所示: 图3 动态表达式 如果第一次打开开关,需重置DDL模板中的衍生指标。如之前有修改过DDL模板,请先做好模板备份。重置模板会将原来修改过的模板覆盖,重置后需要将原来修改的内容重新编辑一次。 信息架构页面表查询时,主题支持并列查询个数:默认为1个,暂不支持设置。 码表数据落库并行行数:码表维度发布后,设置将码表的数值填入维度表中时的并行操作行数。当码表数值较多时,会导致落库失败,可以适当调小该参数。 码表生成质量规则:下拉选择即可。当码表的数据量较小时,选择“枚举值校验”即可;否则选择“字段一致性校验”。 选择“字段一致性校验”的前提是码表在数据库中存在,通过以下方式生成的码表会在数据库中存在: 逆向数据库生成的码表。 新建维度时,通过码表维度发布的码表。 汇总表引用维度字段命名规则:设置汇总表在新建、编辑、导入和生成时的命名规则,可选“维度表名_维度属性名”和“维度属性名”。 导出文件类型:数据架构导出功能支持“xlsx”和“et”两种格式。逻辑模型、物理模型、维度(表)、事实表、汇总表以及其他导出均支持两种格式。 生成数据服务API:包含“按汇总表整表生成单个API”和“按汇总表指标生成数个API”两种生成数据服务API的方式。
  • 主题流程配置 主题流程配置用于自定义主题设计中的主题层级和自定义属性。系统默认有三个层级,从上到下分别命名为主题域分组(L1)、主题域(L2)、业务对象(L3)。您可以自定义的主题层级限制在最大7层,最少2层。自定义属性最多可以配置10个。 在DataArts Studio控制台首页,选择对应工作空间的“数据架构”模块,进入数据架构页面。 在数据架构控制台,单击左侧导航树中的“配置中心”,进入相应页面后再单击“主题流程配置”页签。 在主题层级区域,可对主题层级进行增加、删除和编辑操作。 在“操作”栏中单击按钮可以添加自定义主题层级项,完成后单击“确定”。 在“操作”栏中单击按钮可以删除主题层级项,完成后单击“确定”。 除最后一层业务对象外,其它层级均可以通过单击对应的层级名称实现“编辑”操作。 在主题自定义项区域,可对属性进行增加、删除和编辑操作。 在“主题自定义项”右侧,单击“新建”可新增一条自定义属性。主题自定义项属性的可选值支持一次性可输入多个值,可选值不可重复。 在“操作”栏中单击按钮可以删除一条自定义属性。 单击对应的属性名称(中文)、属性名称(英文)、可选值,是否必填,描述,实现“编辑”操作。 在流程层级数区域,可设置流程设计的层数,层级最小3级,最大7级。
  • 标准模板管理 标准模板管理用于自定义数据标准的默认选项。首次进入数据架构的数据标准页面,也会显示制定数据标准模板的页面。 在DataArts Studio控制台首页,选择对应工作空间的“数据架构”模块,进入数据架构页面。 在数据架构控制台,单击左侧导航树中的“配置中心”,进入相应页面后再单击“标准模板管理”。 如下图所示,在“可选项”中勾选所需要的选项,单击“新建”按钮可以添加自定义项,完成后单击“确定”。 标准模板支持“是否可搜索”、“是否必填”、“可选值”。 保存模板后,在新建数据标准时需要设置此处模板中所选中选项的参数值。 首次进入数据架构的数据标准页面,可选项默认选取“数据长度”和“描述”,其他选项请按需求勾选。 添加自定义项时,支持同时添加中文与英文的自定义项。 图1 标准模板管理
  • 模型配置 当您在主题设计、模型设计等过程中,如果需要进行如下操作,您可以通过本页面进行配置: 增加主题别名、表模型别名、字段别名。 启用密级。 设置长度。 增加表的自定义字段。 增加属性的自定义字段。 图4 模型配置 在数据架构控制台,单击左侧导航树中的“配置中心”,进入相应页面后再单击“模型配置”页签。 启用别名。在“模型配置”页面,您可以增加别名。 选项说明如下: 主题设计:选择之后,在新建、编辑主题时,必须输入别名。 表模型:选择之后,在新建、编辑表时,必须输入别名。会影响业务表、维度(维度表)、事实表和汇总表等。 字段:选择之后,在新建、编辑表字段时,必须输入别名。 启用密级。默认开启该字段。 名称长度:设置表名称和属性名称的长度。 表自定义项。在新建、编辑表时,可以在表的基本设置中设置自定义的字段。会影响业务表、维度(维度表)、事实表和汇总表等。 属性自定义项。在新建、编辑表字段时,可以在表字段中设置自定义的属性。会影响业务表、维度(维度表)、事实表和汇总表等。
  • 建立主机数据连接 开发Python脚本前,我们需要建立一个到弹性 云服务器ECS 的连接。 参考访问DataArts Studio实例控制台,登录DataArts Studio管理控制台。 在DataArts Studio控制台首页,选择对应工作空间的“管理中心”模块,进入管理中心页面。 在管理中心页面,单击“数据连接”,进入数据连接页面并单击“创建数据连接”。 参见表1配置相关参数,创建主机连接名称为“ecs”的数据连接,如图1所示。 表1 主机连接 参数 是否必选 说明 数据连接类型 是 主机连接固定选择为主机连接。 数据连接名称 是 数据连接的名称,只能包含字母、数字、下划线和中划线,且长度不超过100个字符。 标签 否 标识数据连接的属性。设置标签后,便于统一管理。 说明: 标签的名称,只能包含中文、英文字母、数字和下划线,不能以下划线开头,且长度不能超过100个字符。 适用组件 是 选择此连接适用的组件。勾选组件后,才能在相应组件内使用本连接。 基础与网络连通配置 主机地址 是 Linux操作系统主机的IP地址。 请参考查看云服务器详细信息获取。 绑定Agent 是 选择 CDM 集群,CDM集群提供Agent。 说明: CDM集群作为管理中心数据连接Agent时,单集群的并发活动线程最大为200。即当多个数据连接共用同一Agent时,通过这些数据连接提交SQL脚本、Shell脚本、Python脚本等任务的同时运行上限为200,超出的任务将排队等待。建议您按照业务量情况规划多个Agent分担压力。 在调度Shell、Python脚本时,Agent会访问E CS 主机,如果Shell、Python脚本的调度频率很高,ECS主机会将Agent的内网IP加入黑名单。为了保障作业的正常调度,强烈建议您使用ECS主机的root用户将绑定Agent(即CDM集群)的内网IP加到/etc/hosts.allow文件里面。 CDM集群的内网IP获取方式请参见查看并修改CDM集群配置。 端口 是 主机的SSH端口号。 Linux操作系统主机的默认登录端口为22,如有修改可通过主机路径“/etc/ssh/sshd_config”文件中的port字段确认端口号。 KMS密钥 是 通过KMS加解密数据源认证信息,选择KMS中的任一默认密钥或自定义密钥即可。 说明: 第一次通过DataArts Studio或KPS使用KMS加密时,会自动生成默认密钥dlf/default或kps/default。关于默认密钥的更多信息,请参见什么是默认密钥。 数据源认证及其他功能配置 用户名 是 主机的登录用户名。 登录方式 是 选择主机的登录方式: 密钥对 密码 密钥对 是 “登录方式”为“密钥对”时,显示该配置项。 主机的登录方式为密钥对时,您需要获取并上传其私钥文件至OBS,在此处选择对应的OBS路径。 说明: 此处上传的私钥文件应和主机上配置的公钥是一个密钥对,详情请参见密钥对使用场景介绍。 密钥对密码 是 如果密钥对未设置密码,则不需要填写该配置项。 密码 是 “登录方式”为“密码”时,显示该配置项。 主机的登录方式为密码时,填写主机的登录密码。 主机连接描述 否 主机连接的描述信息。 图1 新建主机连接 关键参数说明: 主机地址:已开通ECS主机中开通的ECS主机的IP地址。 绑定Agent:已开通批量数据迁移增量包中开通的CDM集群。 单击“测试”,测试数据连接的连通性。如果无法连通,数据连接将无法创建。 测试通过后,单击“确定”,创建数据连接。
  • 在作业中引用Python脚本 创建一个作业。 选择Python节点,并配置节点属性。 选择已创建好的Python脚本,配置相关节点参数。在“参数”里面可以配置脚本参数,例如: 配置的参数是指执行Python语句时,向语句传递的参数,参数之间使用空格分隔,例如:Microsoft Oracle。此处的“参数”需要在Python语句中引用,否则配置无效。 图5 配置Python节点属性 单击“测试运行”,查看该作业的运行结果。 图6 查看作业运行结果 单击“保存”,作业配置信息创建完成。 单击“提交”,提交版本后对该作业进行调度。
  • 环境准备 已开通弹性云服务器,并创建ECS,ECS主机名为“ecs-dgc”。 本示例主机选择“CentOS 8.0 64bit with ARM(40GB)”的公共镜像,并且使用ECS自带的Python环境,您可登录主机后使用python命令确认服务器的Python环境。 已开通数据集成增量包,CDM集群名为“cdm-dlfpyhthon”,提供数据开发模块与ECS主机通信的代理。 请确保ECS主机与CDM集群网络互通,互通需满足如下条件: CDM集群与ECS主机同区域情况下,同虚拟私有云、同子网、同安全组的不同实例默认网络互通;如果同虚拟私有云但是子网或安全组不同,还需配置路由规则及安全组规则,配置路由规则请参见如何配置路由规则章节,配置安全组规则请参见如何配置安全组规则章节。 CDM集群与ECS主机处于不同区域的情况下,需要通过公网或者专线打通网络。通过公网互通时,需确保CDM集群已绑定EIP,数据源所在的主机可以访问公网且防火墙规则已开放连接端口。 此外,您还必须确保该ECS主机与CDM集群所属的企业项目必须相同,如果不同,需要修改工作空间的企业项目。
  • 按需计费方式购买数据集成集群 购买“按需计费”增量包,系统会按照您所选规格自动创建一个数据集成CDM集群。 单击已开通实例卡片上的“购买增量包”。 进入购买DataArts Studio增量包页面,参见表1进行配置。 表1 配置数据集成的增量包 参数 说明 增量包类型 选择批量数据迁移增量包。 计费方式 选择按需计费。 可用区 第一次购买DataArts Studio实例或增量包时,可用区无要求。 再次购买DataArts Studio实例或增量包时,是否将资源放在同一可用区内,主要取决于您对容灾能力和网络时延的要求。 如果您的应用需要较高的容灾能力,建议您将资源部署在同一区域的不同可用区内。 如果您的应用要求实例之间的网络延时较低,则建议您将资源创建在同一可用区内。 详情请参见什么是可用区。 工作空间 选择需要使用批量数据迁移增量包的工作空间。只有在关联了工作空间后,才能在此工作空间中使用创建的CDM集群。 企业项目 当关联了多个工作空间后,需要为CDM集群指定一个企业项目。 集群名称 自定义数据集成集群名称。 实例类型 目前数据集成集群支持以下部分规格供用户选择: cdm.large:大规格,8核CPU、16G内存的虚拟机,最大带宽/基准带宽为3/0.8 Gbps,集群作业并发数上限为16。 cdm.xlarge:超大规格,16核CPU、32G内存的虚拟机,最大带宽/基准带宽为10/4 Gbps,集群作业并发数上限为32,适合使用10GE高速带宽进行TB级以上的数据量迁移。 cdm.4xlarge:4倍超大规格,64核CPU、128G内存的虚拟机,最大带宽/基准带宽为40/36 Gbps,集群作业并发数上限为128。 虚拟私有云 DataArts Studio实例中的数据集成CDM集群所属的VPC、子网、安全组。 如果DataArts Studio实例或CDM集群需连接云上服务(如DWS、MRS、RDS等),则您需要确保CDM集群与该云服务网络互通。同区域情况下,同虚拟私有云、同子网、同安全组的不同实例默认网络互通,如果同虚拟私有云而子网或安全组不同,还需配置路由规则及安全组规则。 VPC、子网、安全组的详细操作,请参见《虚拟私有云用户指南》。 说明: 目前CDM实例创建完成后不支持切换VPC、子网、安全组,请谨慎选择。 此处支持选择共享VPC子网,即由VPC的所有者将VPC内的子网共享给当前账号,由当前账号在购买CDM集群时选择共享VPC子网。通过共享VPC子网功能,可以简化网络配置,帮助您统一配置和运维多个账号下的资源,有助于提升资源的管控效率,降低运维成本。如何共享VPC子网,请参考《共享VPC》。 子网 安全组 IPv6双栈支持 开启IPv6双栈后,集群内网IP支持IPv4和IPv6,可通过IPv4或IPv6内网地址访问集群。 说明: 开启IPv6双栈后,仅支持选择已开启IPv6网段的子网。如果待选择的子网未开启IPv6网段,则需要在 虚拟私有云VPC 服务中开启。 仅支持为内网IP启用IPv6双栈,暂不支持为公网IP启用IPv6双栈。 集群创建好以后不支持修改规格,如果需要使用更高规格,需要重新创建。 单击“立即购买”,确认规格后单击“创建”。 购买成功后,即可返回对应的工作空间查看已购买的数据集成集群。
  • 套餐包方式购买数据集成集群 如果您希望享受“套餐包”的优惠价格,您需要先购买一个“套餐包”增量包,再购买一个和“套餐包”增量包具有相同区域和规格的“按需计费”增量包。 单击已开通实例卡片上的“购买增量包”。 进入购买DataArts Studio增量包页面,按照如下配置: 增量包类型:选择批量数据迁移增量包。 计费方式:选择套餐包。 购买时长:表示此套餐包的有效时长。 购买数量:表示购买套餐包的数量。例如当购买时长选择1个月,购买数量选择2,那么您将拥有1490小时的额度,有效期是1个月。 单击“立即购买”,确认规格后提交订单。 购买套餐包成功后,系统不会自动创建数据集成集群。此时您还需要参考按需计费方式购买数据集成集群再购买一个和“套餐包”具有相同区域和规格的“按需计费”增量包,创建成功后您即可享受套餐包的优惠价格。
  • 表达式转换 使用JSP表达式语言(Expression Language)对当前字段或整行数据进行转换。JSP表达式语言可以用来创建算术和逻辑表达式。在表达式内可以使用整型数,浮点数,字符串,常量true、false和null。 表达式支持以下两个环境变量: value:当前字段值。 row:当前行,数组类型。 表达式支持的工具类用法罗列如下,未列出即表示不支持: 如果当前字段为字符串类型,将字符串全部转换为小写,例如将“aBC”转换为“abc”。 表达式:StringUtils.lowerCase(value) 将当前字段的字符串全部转为大写。 表达式:StringUtils.upperCase(value) 如果想将第1个日期字段格式从“2018-01-05 15:15:05”转换为“20180105”。 表达式:DateUtils.format(DateUtils.parseDate(row[0],"yyyy-MM-dd HH:mm:ss"),"yyyyMMdd") 如果想将时间戳转换成“yyyy-MM-dd hh:mm:ss”格式的日期字符串的类型,例如字段值为“1701312046588”,转化后为“2023-11-30 10:40:46”。 表达式:DateUtils.format(NumberUtils.toLong(value),"yyyy-MM-dd HH:mm:ss") 如果想将“yyyy-MM-dd hh:mm:ss”格式的日期字符串转换成时间戳的类型。 表达式:DateUtils.getTime(DateUtils.parseDate(value,"yyyy-MM-dd hh:mm:ss")) 如果当前字段值为“yyyy-MM-dd”格式的日期字符串,需要截取年,例如字段值为“2017-12-01”,转换后为“2017”。 表达式:StringUtils.substringBefore(value,"-") 如果当前字段值为数值类型,转换后值为当前值的两倍。 表达式:value*2 如果当前字段值为“true”,转换后为“Y”,其它值则转换后为“N”。 表达式:value=="true"?"Y":"N" 如果当前字段值为字符串类型,当为空时,转换为“Default”,否则不转换。 表达式:empty value? "Default":value 如果想将日期字段格式从“2018/01/05 15:15:05”转换为“2018-01-05 15:15:05”。 表达式:DateUtils.format(DateUtils.parseDate(value,"yyyy/MM/dd HH:mm:ss"),"yyyy-MM-dd HH:mm:ss") 获取一个36位的UUID(Universally Unique Identifier,通用唯一识别码)。 表达式:CommonUtils.randomUUID() 如果当前字段值为字符串类型,将首字母转换为大写,例如将“cat”转换为“Cat”。 表达式:StringUtils.capitalize(value) 如果当前字段值为字符串类型,将首字母转换为小写,例如将“Cat”转换为“cat”。 表达式:StringUtils.uncapitalize(value) 如果当前字段值为字符串类型,使用空格填充为指定长度,并且将字符串居中,当字符串长度不小于指定长度时不转换,例如将“ab”转换为长度为4的“ab”。 表达式:StringUtils.center(value,4) 删除字符串末尾的一个换行符(包括“\n”、“\r”或者“\r\n”),例如将“abc\r\n\r\n”转换为“abc\r\n”。 表达式:StringUtils.chomp(value) 如果字符串中包含指定的字符串,则返回布尔值true,否则返回false。例如“abc”中包含“a”,则返回true。 表达式:StringUtils.contains(value,"a") 如果字符串中包含指定字符串的任一字符,则返回布尔值true,否则返回false。例如“zzabyycdxx”中包含“z”或“a”任意一个,则返回true。 表达式:StringUtils.containsAny(value,"za") 如果字符串中不包含指定的所有字符,则返回布尔值true,包含任意一个字符则返回false。例如“abz”中包含“xyz”里的任意一个字符,则返回false。 表达式:StringUtils.containsNone(value,"xyz") 如果当前字符串只包含指定字符串中的字符,则返回布尔值true,包含任意一个其它字符则返回false。例如“abab”只包含“abc”中的字符,则返回true。 表达式:StringUtils.containsOnly(value,"abc") 如果字符串为空或null,则转换为指定的字符串,否则不转换。例如将空字符转换为null。 表达式:StringUtils.defaultIfEmpty(value,null) 如果字符串以指定的后缀结尾(包括大小写),则返回布尔值true,否则返回false。例如“abcdef”后缀不为null,则返回false。 表达式:StringUtils.endsWith(value,null) 如果字符串和指定的字符串完全一样(包括大小写),则返回布尔值true,否则返回false。例如比较字符串“abc”和“ABC”,则返回false。 表达式:StringUtils.equals(value,"ABC") 从字符串中获取指定字符串的第一个索引,没有则返回整数-1。例如从“aabaabaa”中获取“ab”的第一个索引1。 表达式:StringUtils.indexOf(value,"ab") 从字符串中获取指定字符串的最后一个索引,没有则返回整数-1。例如从“aFkyk”中获取“k”的最后一个索引4。 表达式:StringUtils.lastIndexOf(value,"k") 从字符串中指定的位置往后查找,获取指定字符串的第一个索引,没有则转换为“-1”。例如“aabaabaa”中索引3的后面,第一个“b”的索引是5。 表达式:StringUtils.indexOf(value,"b",3) 从字符串获取指定字符串中任一字符的第一个索引,没有则返回整数-1。例如从“zzabyycdxx”中获取“z”或“a”的第一个索引0。 表达式:StringUtils.indexOfAny(value,"za") 如果字符串仅包含Unicode字符,返回布尔值true,否则返回false。例如“ab2c”中包含非Unicode字符,返回false。 表达式:StringUtils.isAlpha(value) 如果字符串仅包含Unicode字符或数字,返回布尔值true,否则返回false。例如“ab2c”中仅包含Unicode字符和数字,返回true。 表达式:StringUtils.isAlphanumeric(value) 如果字符串仅包含Unicode字符、数字或空格,返回布尔值true,否则返回false。例如“ab2c”中仅包含Unicode字符和数字,返回true。 表达式:StringUtils.isAlphanumericSpace(value) 如果字符串仅包含Unicode字符或空格,返回布尔值true,否则返回false。例如“ab2c”中包含Unicode字符和数字,返回false。 表达式:StringUtils.isAlphaSpace(value) 如果字符串仅包含ASCII可打印字符,返回布尔值true,否则返回false。例如“!ab-c~”返回true。 表达式:StringUtils.isAsciiPrintable(value) 如果字符串为空或null,返回布尔值true,否则返回false。 表达式:StringUtils.isEmpty(value) 如果字符串中仅包含Unicode数字,返回布尔值true,否则返回false。 表达式:StringUtils.isNumeric(value) 获取字符串最左端的指定长度的字符,例如获取“abc”最左端的2位字符“ab”。 表达式:StringUtils.left(value,2) 获取字符串最右端的指定长度的字符,例如获取“abc”最右端的2位字符“bc”。 表达式:StringUtils.right(value,2) 将指定字符串拼接至当前字符串的左侧,需同时指定拼接后的字符串长度,如果当前字符串长度不小于指定长度,则不转换。例如将“yz”拼接到“bat”左侧,拼接后长度为8,则转换后为“yzyzybat”。 表达式:StringUtils.leftPad(value,8,"yz") 将指定字符串拼接至当前字符串的右侧,需同时指定拼接后的字符串长度,如果当前字符串长度不小于指定长度,则不转换。例如将“yz”拼接到“bat”右侧,拼接后长度为8,则转换后为“batyzyzy”。 表达式:StringUtils.rightPad(value,8,"yz") 如果当前字段为字符串类型,获取当前字符串的长度,如果该字符串为null,则返回0。 表达式:StringUtils.length(value) 如果当前字段为字符串类型,删除其中所有的指定字符串,例如从“queued”中删除“ue”,转换后为“qd”。 表达式:StringUtils.remove(value,"ue") 如果当前字段为字符串类型,移除当前字段末尾指定的子字符串。指定的子字符串若不在当前字段的末尾,则不转换,例如移除当前字段“www.domain.com”后的“.com”。 表达式:StringUtils.removeEnd(value,".com") 如果当前字段为字符串类型,移除当前字段开头指定的子字符串。指定的子字符串若不在当前字段的开头,则不转换,例如移除当前字段“www.domain.com”前的“www.”。 表达式:StringUtils.removeStart(value,"www.") 如果当前字段为字符串类型,替换当前字段中所有的指定字符串,例如将“aba”中的“a”用“z”替换,转换后为“zbz”。 表达式:StringUtils.replace(value,"a","z") 如果当前字段为字符串类型,一次替换字符串中的多个字符,例如将字符串“hello”中的“h”用“j”替换,“o”用“y”替换,转换后为“jelly”。 表达式:StringUtils.replaceChars(value,"ho","jy") 如果字符串以指定的前缀开头(区分大小写),则返回布尔值true,否则返回false,例如当前字符串“abcdef”以“abc”开头,则返回true。 表达式:StringUtils.startsWith(value,"abc") 如果当前字段为字符串类型,去除字段中首、尾处所有指定的字符,例如去除“abcyx”中首尾所有的“x”、“y”、“z”和“b”,转换后为“abc”。 表达式:StringUtils.strip(value,"xyzb") 如果当前字段为字符串类型,去除字段末尾所有指定的字符,例如去除当前字段末尾的"abc"字符串。 表达式:StringUtils.stripEnd(value,"abc") 如果当前字段为字符串类型,去除字段开头所有指定的字符,例如去除当前字段开头的所有空格。 表达式:StringUtils.stripStart(value,null) 如果当前字段为字符串类型,获取字符串指定位置后(索引从0开始,包括指定位置的字符)的子字符串,指定位置如果为负数,则从末尾往前计算位置,末尾第一位为-1。例如获取“abcde”第2个字符(即c)及之后的字符串,则转换后为“cde”。 表达式:StringUtils.substring(value,2) 如果当前字段为字符串类型,获取字符串指定区间(索引从0开始,区间起点包括指定位置的字符,区间终点不包含指定位置的字符)的子字符串,区间位置如果为负数,则从末尾往前计算位置,末尾第一位为-1。例如获取“abcde”第2个字符(即c)及之后、第4个字符(即e)之前的字符串,则转换后为“cd”。 表达式:StringUtils.substring(value,2,4) 如果当前字段为字符串类型,获取当前字段里第一个指定字符后的子字符串。例如获取“abcba”中第一个“b”之后的子字符串,转换后为“cba”。 表达式:StringUtils.substringAfter(value,"b") 如果当前字段为字符串类型,获取当前字段里最后一个指定字符后的子字符串。例如获取“abcba”中最后一个“b”之后的子字符串,转换后为“a”。 表达式:StringUtils.substringAfterLast(value,"b") 如果当前字段为字符串类型,获取当前字段里第一个指定字符前的子字符串。例如获取“abcba”中第一个“b”之前的子字符串,转换后为“a”。 表达式:StringUtils.substringBefore(value,"b") 如果当前字段为字符串类型,获取当前字段里最后一个指定字符前的子字符串。例如获取“abcba”中最后一个“b”之前的子字符串,转换后为“abc”。 表达式:StringUtils.substringBeforeLast(value,"b") 如果当前字段为字符串类型,获取嵌套在指定字符串之间的子字符串,没有匹配的则返回null。例如获取“tagabctag”中“tag”之间的子字符串,转换后为“abc”。 表达式:StringUtils.substringBetween(value,"tag") 如果当前字段为字符串类型,删除当前字符串两端的控制字符(char≤32),例如删除字符串前后的空格。 表达式:StringUtils.trim(value) 将当前字符串转换为字节,如果转换失败,则返回0。 表达式:NumberUtils.toByte(value) 将当前字符串转换为字节,如果转换失败,则返回指定值,例如指定值配置为1。 表达式:NumberUtils.toByte(value,1) 将当前字符串转换为Double数值,如果转换失败,则返回0.0d。 表达式:NumberUtils.toDouble(value) 将当前字符串转换为Double数值,如果转换失败,则返回指定值,例如指定值配置为1.1d。 表达式:NumberUtils.toDouble(value,1.1d) 将当前字符串转换为Float数值,如果转换失败,则返回0.0f。 表达式:NumberUtils.toFloat(value) 将当前字符串转换为Float数值,如果转换失败,则返回指定值,例如配置指定值为1.1f。 表达式:NumberUtils.toFloat(value,1.1f) 将当前字符串转换为Int数值,如果转换失败,则返回0。 表达式:NumberUtils.toInt(value) 将当前字符串转换为Int数值,如果转换失败,则返回指定值,例如配置指定值为1。 表达式:NumberUtils.toInt(value,1) 将字符串转换为Long数值,如果转换失败,则返回0。 表达式:NumberUtils.toLong(value) 将当前字符串转换为Long数值,如果转换失败,则返回指定值,例如配置指定值为1L。 表达式:NumberUtils.toLong(value,1L) 将字符串转换为Short数值,如果转换失败,则返回0。 表达式:NumberUtils.toShort(value) 将当前字符串转换为Short数值,如果转换失败,则返回指定值,例如配置指定值为1。 表达式:NumberUtils.toShort(value,1) 将当前IP字符串转换为Long数值,例如将“10.78.124.0”转换为LONG数值是“172915712”。 表达式:CommonUtils.ipToLong(value) 从网络读取一个IP与物理地址映射文件,并存放到Map集合,这里的URL是IP与地址映射文件存放地址,例如“http://10.114.205.45:21203/sqoop/IpList.csv”。 表达式:HttpsUtils.downloadMap("url") 将IP与地址映射对象缓存起来并指定一个key值用于检索,例如“ipList”。 表达式:CommonUtils.setCache("ipList",HttpsUtils.downloadMap("url")) 取出缓存的IP与地址映射对象。 表达式:CommonUtils.getCache("ipList") 判断是否有IP与地址映射缓存。 表达式:CommonUtils.cacheExists("ipList") 根据IP取出对应的详细地址:国家_省份_城市_运营商,例如“1xx.78.124.0”对应的地址为“中国_广东_深圳_电信”,取不到对应地址则默认“**_**_**_**”。如果需要,可通过StringUtil类表达式对地址进行进一步拆分。 表达式:CommonUtils.getMapValue(CommonUtils.ipToLong(value),CommonUtils.cacheExists("ipLis")?CommonUtils.getCache("ipLis"):CommonUtils.setCache("ipLis",HttpsUtils.downloadMap("url"))) 根据指定的偏移类型(month/day/hour/minute/second)及偏移量(正数表示增加,负数表示减少),将指定格式的时间转换为一个新时间,例如将“2019-05-21 12:00:00”增加8个小时。 表达式:DateUtils.getCurrentTimeByZone("yyyy-MM-dd HH:mm:ss",value, "hour", 8) 如果value值为空或者null时,则返回字符串"aaa",否则返回value。 表达式:StringUtils.defaultIfEmpty(value,"aaa")
  • 约束限制 作业源端开启“使用SQL语句”参数时不支持配置转换器。 如果在字段映射界面,通过获取样值的方式无法获得所有列(例如从HBase/CloudTable/MongoDB导出数据时,CDM有较大概率无法获得所有列),则可以单击后选择“添加新字段”来手动增加,确保导入到目的端的数据完整。 关系数据库、Hive、MRS Hudi及DLI做源端时,不支持获取样值功能。 SQLServer作为目的端数据源时,不支持timestamp类型字段的写入,需修改为其他时间类型字段写入(如datetime)。 当作业源端为OBS、迁移CSV文件时,并且配置“解析首行为列名”参数的场景下显示列名。 当使用二进制格式进行文件到文件的迁移时,没有配置字段转换器这一步。 自动创表场景下,需在目的端表中提前手动新增字段,再在字段映射里新增字段。 添加完字段后,新增的字段在界面不显示样值,不会影响字段值的传输,会将字段值直接写入目的端。 如果字段映射关系不正确,您可以通过拖拽字段、单击对字段批量映射两种方式来调整字段映射关系。 创建表达式转换器时,表达式的功能是对该字段的数据进行处理,故不建议使用时间宏,如需使用,请根据以下场景处理(源端是文件类的配置时仅支持方式一): 方式一:新建表达式转换器时,表达式需要用''包围。 ${dateformat(yyyy-MM-dd)}不加引号使用时,解析成2017-10-16之后还会进行运算,将'-'识别为减号,导致结果为1991,须使用'${dateformat(yyyy-MM-dd)}',即'2017-10-16'。 方式二:源字段中新增自定义字段,在样值中填写时间宏变量,重新进行字段映射处理。 如果是导入到 数据仓库 服务(DWS),则还需在目的字段中选择分布列,建议按如下顺序选取分布列: 有主键可以使用主键作为分布列。 多个数据段联合做主键的场景,建议设置所有主键作为分布列。 在没有主键的场景下,如果没有选择分布列,DWS会默认第一列作为分布列,可能会有数据倾斜风险。