物理模型设计
物理模型是指按照一定规则和方法,将逻辑模型中所定义的实体、属性、属性约束、关系等要素转换为数据库软件所能够识别的表关系图(Table Relationship Diagram)的一种物理描述。
在关系建模中,您可以新建SDI层和DWI层两个模型,模型最终是通过物理建模进行落地的。除了将逻辑模型转换外为物理模型外,您也可以参考本章节直接新建一个物理模型。
本章节主要介绍以下内容:
物理模型设计时的考虑事项
- 物理模型要确保业务需求及业务规则所要求的功能得到满足,性能得到保障。
- 物理模型要确保数据的一致性及数据的质量。
- 新业务或新功能增加时能够以较少的改动或不改动就能够满足需求的扩展。
新建物理模型
- 在DataArts Studio控制台首页,选择实例,单击“进入控制台”,选择对应工作空间的“数据架构”模块,进入数据架构页面。
图1 选择数据架构
- 在数据架构控制台,单击左侧导航树中的“关系建模”。
- 在“关系建模”页面,如果当前未创建过关系模型,系统会弹出“新建分层治理模型”提示框,提示您创建关系建模下SDI和DWI层的物理模型。如果不是首次创建,可在物理模型处单击按钮新建物理模型。
根据数据治理方法论,以及关系建模和维度建模方法,数仓分层的模型默认为4层,层级含义介绍如下:
- 关系建模下包含SDI层和DWI层两层模型,物理模型归属于两层模型之一。
- SDI:Source Data Integration,又称贴源数据层。SDI是源系统数据的简单落地。
- DWI:Data Warehouse Integration,又称数据整合层。DWI整合多个源系统数据,对源系统进来的数据进行整合、清洗,并基于三范式进行关系建模。
- 维度建模需要基于维度,新建DWR层模型,最终将数据汇总到DM层模型中。
- DWR:Data Warehouse Report,又称数据报告层。DWR基于多维模型,和DWI层数据粒度保持一致。
- DM (Data Mart):又称数据集市。DM面向展现层,数据有多级汇总。
数仓分层的4层层级的名称支持由管理员自定义,单击层级名后的即可重命名。重命名建议能够区分不同层级,规则为只能包含英文字母、中文、数字、下划线,且以英文字母或中文开头。
图2 新建分层治理模型
图3 新建物理模型
- 关系建模下包含SDI层和DWI层两层模型,物理模型归属于两层模型之一。
- 在弹出窗口中配置如下参数,然后单击“确定”。
图4 配置物理模型
表1 参数描述 参数名称
说明
*模型名称
只能包含中文、英文字母、数字和下划线。
*数据连接类型
下拉选择数据连接类型。
数仓分层
下拉选择SDI或DWI分层。
- SDI:Source Data Integration,又称贴源数据层。SDI是源系统数据的简单落地。
- DWI:Data Warehouse Integration,又称数据整合层。DWI整合多个源系统数据,对源系统进来的数据进行整合、清洗,并基于三范式进行关系建模。
前缀校验
只能包含英文字母、数字和下划线,且英文字母开头。
说明:在物理模型中新建、修改、导入表时,会校验是否有前缀,没有的话会校验失败。进行逆向操作时,也会校验是否有前缀,没有的话系统会自动添加前缀。
描述
描述信息。支持的长度0~600字符。
新建表并发布
当您完成关系模型的创建之后,您就可以在关系模型中新建业务表。
- 在DataArts Studio数据架构控制台,单击左侧导航栏的“关系建模”进入关系建模页面。
- 选择所需要建表的物理模型,单击进入,然后单击上方“新建”按钮新建一个表。
图5 入口
- 在“新建表”页面,根据页面提示完成建表的配置。
- 填写基本配置参数。
图6 表基本配置
表2 基本配置 参数名称
说明
*所属主题
单击“选择主题”选择所属的主题信息。
*表名称
表的名称。
只能包含中文、英文字母、数字、中英文括号、中英文逗号以及以下特殊字符+、-、#、_、[]、/,且以中文或英文字母开头。
*表英文名称
逻辑实体转换成物理表的表名。只能包含英文字母、数字、下划线、$、{、},且不能以数字开头。
*数据连接类型
-
数据连接
选择所需要的数据连接。同一个关系模型一般建议使用统一的数据连接。
如果您还未创建与数据源之间的数据连接,请前往DataArts Studio管理中心进行创建,详情请参见管理数据连接。
数据库
选择数据库。
队列
DLI队列。该参数仅DLI模型的表有效。
Schema
DWS和POSTGRESQL的模式。该参数仅DWS和POSTGRESQL模型的表有效。
*表类型
DLI模型的表支持以下表类型:- Managed:数据存储位置为DLI的表。
- External:数据存储位置为OBS的表。当“表类型”设置为External时,需设置“OBS路径””参数。OBS路径格式如:/bucket_name/filepath。
DWS模型的表支持以下表类型:
- DWS_ROW:行存表。行存储是指将表按行存储到硬盘分区上。
- DWS_COLUMN:列存表。列存储是指将表按列存储到硬盘分区上。
- DWS_VIEW:视图存表。视图存储是指将表按视图存储到硬盘分区上。
MRS_HIVE模型支持HIVE_TABLE和HIVE_EXTERNAL_TABLE。
MRS_SPARK模型支持HUDI_COW和HUDI_MOR。
POSTGRESQL模型仅支持POSTGRESQL_TABLE。
MRS_CLICKHOUSE模型仅支持CLICKHOUSE_TABLE。
Oracle模型仅支持ORACLE_TABLE。
MySQL模型仅支持MYSQL_TABLE。
路径
该参数仅数据源为MRS_HIVE且表类型选择HIVE_EXTERNAL_TABLE时有效。
只支持英文字母、数字、左斜杠(/)、英文句号(.)、中划线(-)、下划线(_)、冒号(:)。
压缩等级
当数据连接类型为DWS时,可选择压缩等级,以减少数据存储成本。
不同表类型可选以下压缩等级:
- DWS_ROW:“NO”、“YES”。
- DWS_COLUMN:“NO”、“LOW”、“MIDDLE”、“HIGH”。
- DWS_VIEW:不支持设置压缩等级。
数据格式
该参数仅DLI模型的表有效。DLI模型的表支持以下数据格式:
- Parquet:DLI支持读取不压缩、snappy压缩、gzip压缩的parquet数据。
- CSV:DLI支持读取不压缩、gzip压缩的csv数据。
- ORC:DLI支持读取不压缩、snappy压缩的orc数据。
- JSON:DLI支持读取不压缩、gzip压缩的json数据。
- Carbon:DLI支持读取不压缩的carbon数据。
- Avro:DLI支持读取不压缩的avro数据。
高级配置
设置自定义项,以对表进行描述。自定义项设置完成后仅可用于在表详情中进行查看,无特殊需求时无需设置。
例如您需要标识该表的来源时,可以设置自定义项配置名为“来源”,值为对应的表来源信息。配置完成后可以在表详情中查看该信息。
标签
标签是用户自定义的标识,它可以帮助用户对数据资产进行分类和搜索。添加标签后,您就可以在DataArts Studio数据目录模块中通过标签搜索相关的数据资产。
单击按钮可以为表添加标签,在弹出框中可以选择一个或多个已有的标签,或者输入一个新的标签名称后按回车键。您也可以前往DataArts Studio数据目录模块的“标签管理”页面添加新的标签,详情请参见标签管理,然后再返回此页面,就可以在标签的下拉列表中选择新添加的标签。
关系建模的数据标签不支持热发布修改,修改标签需要先将表进行下线,待修改好后再进行上线即可。
资产责任人
在下拉列表中选择用户,可以手动输入名字或直接选择已有的责任人。
*描述
描述信息。支持的长度1~200字符。
关联逻辑实体
在下拉列表中手动选择需要关联的逻辑实体以及逻辑实体所在的来源模型。
也可单击右侧的刷新按钮,由系统自动同步与物理表主题同名的来源模型以及和物理表英文名称同名的逻辑实体。同一逻辑实体可关联多个物理表。
- 在“表字段”页面添加所需要的字段。
图7 添加所需表字段
表3 表字段参数 参数名称
说明
名称
只能包含中文、英文字母、数字、中英文括号、中英文逗号以及以下特殊字符+、-、#、_、[]、/,且以中文或英文字母开头。
英文名称
只能包含英文字母、数字、下划线,且以英文字母开头。
数据类型
设置字段的数据类型。如果在下拉列表中未找到所需要的数据类型,您可以参考字段类型添加数据类型。
关联逻辑属性
如果表配置已关联逻辑实体,则此处在下拉列表中手动选择需要关联的逻辑属性,可以将表字段与逻辑实体中的逻辑属性进行关联。
数据标准
如果您已创建数据标准,单击按钮可以选择一个数据标准与字段相关联。在“模型设计业务流程步骤 > 创建质量作业”勾选的情况下,将字段关联数据标准后,表发布上线后,就会自动生成一个质量作业,每个关联了数据标准的字段会生成一个质量规则,基于数据标准对字段进行质量监控,您可以前往DataArts Studio数据质量模块的“质量作业”页面进行查看。
页面中的如果您还未创建数据标准,请参见新建数据标准进行创建。
主键
选中时为主键。
说明:数据连接为MRS Spark连接(通过MRS Spark连接支持MRS Hudi数据源)时,由于Hudi的限制,必须存在字段主键才能数据落库成功,否则会导致表同步失败。
分区
选中时为分区字段。
不为空
是否限制该字段不为空。
标签
单击按钮可以为表字段添加标签。
- 在弹出框中可以选择一个或多个已有的标签。如果尚未添加标签,您也可以前往DataArts Studio数据目录模块的“标签管理”页面添加新的标签,详情请参见标签管理。
- 在弹出框中,您也可以输入一个新的标签名称然后按回车键。标签名称只能包含中文、英文字母、数字和下划线,且不能以下划线开头。
密级
单击按钮可以为逻辑实体属性添加密级。
如果没有您想要的密级,可点击跳转到数据安全界面中创建需要的密级。
如不使用该功能,可在配置中心 > 模型设计中关闭该功能。
描述
描述信息。
- (可选)在“关系”页面,单击“新建”新建关系。
关系用于两个父、子表(有时也称为主、从表)之间的主外键关联关系,即描述表与表是以何种形态关联在一起,或者描述一个表本身的行为会对另外一个表产生何种影响。数据模型内表之间的关系尤为重要,必须要对其准确定义。否则,无法在数据模型中准确描述实际的业务规则,而且很大程度上破坏数据的一致性。
例如,对于根据3NF范式设计的“成绩表”和“学生表”,成绩表中的“学号”属性为学生表的主键。则其关系为:- 子表:成绩表
- 子表字段FK:学号
- 子对父:
- 父表:学生表
- 父表字段PK:学号
- 父对子:
图8 新建关系(可选)
表4 新建关系参数说明 参数名称
说明
名称
通过名称来描述该关系。
子表
单击该字段可在下拉列表中选择表。单击可设置当前表为子表。
例如,对于根据3NF范式设计的“成绩表”和“学生表”,成绩表中的“学号”属性为学生表的主键。则子表应为“成绩表”,对应父表应为“学生表”。
子表字段FK
选择子表的字段,FK表示外键Foreign Key。该子表的字段应为父表的外键。
例如,对于根据3NF范式设计的“成绩表”和“学生表”,成绩表中的“学号”属性为学生表的主键。则此子表字段FK应为“成绩表”的“学号”。
子对父
:表示每条子表数据在父表中有且只有一条数据与之对应。
:表示每条子表数据在父表中最多有一条数据与之对应。
:表示每条子表数据在父表中可能有多条数据与之对应。
:表示每条子表数据在父表中至少有一条数据与之对应。
父对子
:表示每条父表数据在子表中有且只有一条数据与之对应。
:表示每条父表数据在子表中最多有一条数据与之对应。
:表示每条父表数据在子表中可能有多条数据与之对应。
:表示每条父表数据在子表中至少有一条数据与之对应。
父表
选择与所选子表对应的父表。
例如,对于根据3NF范式设计的“成绩表”和“学生表”,成绩表中的“学号”属性为学生表的主键。则父表应为“学生表”,对应子表应为“成绩表”。
父表字段PK
选择父表的字段,PK表示主键Primary Key。该父表的字段应为父表的主键。
例如,对于根据3NF范式设计的“成绩表”和“学生表”,成绩表中的“学号”属性为学生表的主键。则此父表字段PK应为“学生表”的“学号”。
角色名称
可以自定义一个角色名称,用于标识该关系。
操作
单击可删除一条关系。单击可编辑关系。
- (可选)在“映射”页面,单击“新建”可以新建一个映射,通过新建映射设计当前表的数据来源。
- 如果表中的字段数据来源于不同的关系模型,您需要创建多个映射。
当前支持表数据来源于不同连接类型的关系模型。在每个映射中,您只需要为来源于当前映射的字段设置源字段,其他字段可以不设置。
例如,假设当前表的前面5个字段和后5个字段数据来源于2个不同的模型,您可以新建如下两个映射:
- map1:设置“来源”为关系模型A的表table01,在“字段映射”中依次设置第1~5个字段的源字段为table01中含义相同的相应字段,后5个字段不用设置。
- map2:设置“来源”为关系模型B的表table02,在“字段映射”中依次设置第6~10个字段的源字段为table02中含义相同的相应字段,前5个字段不用设置。
- 如果表中的字段数据来源于同一个关系模型中的多个表,您可以新建一个映射。
在该映射的“源表”中,您可以将多个表设置Join,然后在“字段映射”区域依次为表中的字段设置源字段,所选择的源字段应与表中的字段代表相同含义,一一对应。
例如,假设当前表的字段都来源于关系模型d1,第1个字段来源于表vendor,第2个字段来源于表payment_type,第3个字段来源于表rate,其余字段来源于dwd_taxi_trip_data。
您可以新建一个映射,如图9所示,设置表dwd_taxi_trip_data和vendor、payment_type、rate做Join,然后在字段映射中,依次设置源字段。
新建映射的参数说明,可以参考表5。
表5 映射参数 参数名称
说明
*映射名称
只能包含中文、英文字母、数字和下划线。
*来源模型
在下拉列表中选择一个已创建的关系模型。如果未创建关系模型,请参见物理模型设计进行创建。
*源表
选择数据来源的表,如果数据来源于一个模型中的多个表,可以单击表名后的按钮为该表和其他表之间设置JOIN。
- 选择一种“JOIN方式”,“JOIN方式”从左到右依次表示left JOIN、right JOIN、inner JOIN、outer JOIN。
- 在“JOIN字段”中设置JOIN条件,JOIN条件一般选择源表和JOIN表中含义相同的字段,单击或按钮增加或删除JOIN条件。JOIN条件之间是and的关系。
- 单击“确定”完成设置。
- 设置JOIN后,如果想删除JOIN表,单击所需删除的表名后的按钮就可以删除该JOIN表。
图10 JOIN条件
字段映射
为来源于当前映射的字段,依次选择一个含义相同的源字段。如果表字段来源于多个模型,您需要新建多个映射,每个映射中,您只需要为来源于当前映射的字段设置源字段,其他字段可以不设置。
在映射区域的右上角,单击按钮,可以删除指定的映射,单击可以收起映射区域。
- 如果表中的字段数据来源于不同的关系模型,您需要创建多个映射。
- (可选)新建表的“表类型”为“DWS_VIEW”时,在“视图定义”页面,单击“新建”可以新建一个视图。
图11 新建视图
表6 视图定义参数 参数名称
说明
映射名称
只能包含中文、英文字母、数字和下划线。
源表
选择数据来源的表,如果数据来源于一个模型中的多个表,可以单击表名后的按钮为该表和其他表之间设置JOIN。
- 选择一种“JOIN方式”,“JOIN方式”从左到右依次表示left JOIN、right JOIN、inner JOIN、outer JOIN。
- 在“JOIN字段”中设置JOIN条件,JOIN条件一般选择源表和JOIN表中含义相同的字段,单击或按钮增加或删除JOIN条件。JOIN条件之间是and的关系。
- 单击“确定”完成设置。
- 设置JOIN后,如果想删除JOIN表,单击所需删除的表名后的按钮就可以删除该JOIN表。
图12 JOIN条件界面
字段映射
为来源于当前映射的字段,依次选择一个含义相同的源字段。如果表字段来源于多个模型,您需要新建多个映射,每个映射中,您只需要为来源于当前映射的字段设置源字段,其他字段可以不设置。
在映射区域的右上角,单击按钮,可以删除指定的映射,单击可以收起映射区域。
- 填写基本配置参数。
- 完成表的配置后,单击“发布”,选择审核人,再单击“确认提交”提交审核。
进行发布时,可以选择发布表到生产环境或开发环境。默认发布到生产环境,不勾选则无法发布。
- 等待审核人员审核。当审核人审批通过后,返回“关系建模”页面可以查看表的“状态”和“同步状态”。
发布是一个异步操作,您可以单击按钮刷新状态。表发布并通过审核后,系统会依据“配置中心 > 功能配置”页面中的“模型设计业务流程步骤”进行创建表、同步技术资产、同步业务资产等操作,在表的“同步状态”一列中将显示同步状态。
- “同步状态”若均显示成功,则说明表发布成功。鼠标移至“同步状态”中的图标之上,若显示“创建表: 创建成功”说明该表在对应的数据源下已经创建成功。
- “同步状态”若显示某一项或某几项失败,可以先刷新状态。如果仍失败,可以单击“更多 > 发布历史”,然后进入“发布日志”页签查看日志。
请根据错误日志定位失败原因,问题解决后,再单击“发布日志”页面中的“重新同步”再次下发同步命令。如果仍同步失败,请联系技术支持人员协助解决。
- 在开启“同步业务资产”功能的前提下,若关闭了“物理表同步业务资产”按钮,鼠标移至“同步状态”中的同步业务资产图标之上,会显示“未同步”。
进行同步时,可以选择同步表到生产环境或开发环境。默认同步到生产环境,不勾选则无法同步。
通过逆向数据库导入物理表
通过逆向数据库,您可以从其他数据源中将一个或多个已创建的数据库表导入到物理表目录中,使其变成物理表。
- 在数据架构控制台,单击左侧导航树中的“关系建模”,进入关系建模页面,选择一个物理表进入。
- 在物理表的列表上方,单击“逆向数据库”。
- 在“逆向数据库”对话框中,配置如下参数,然后单击“确定”。
表7 逆向数据库配置 参数名称
说明
*所属主题
在下拉列表中选择所属主题。
*数据连接类型
在下拉列表中将显示逆向数据库支持的数据连接类型,请选择所需要的数据连接类型。
*数据连接
选择数据连接。
如需从其他数据源逆向数据库到物理表目录中,需要先在DataArts Studio管理中心创建一个数据连接,以便连接数据源。创建数据连接的操作,请参见管理数据连接。
*数据库
选择数据库。
*Schema
下拉选择Schema。该参数仅DWS和POSTGRESQL模型的表有效。
队列
DLI队列。仅当“数据连接类型”选择“DLI”时,该参数有效。
更新已有表
如果从其他数据源逆向过来的表,在物理表中已存在同名的表,选择是否更新已有的物理表。
*数据表
选择全部或部分需导入的数据表。
图13 逆向配置
- 逆向数据库的结果会在“上次逆向”页面中显示。如果逆向成功,单击“关闭”。如果逆向失败,您可以查看失败原因,问题解决后,选中失败的表,然后单击“重新逆向”进行重试。
图14 逆向结果