安装完成DataWorks开放数据Package后,您可使用开放数据来获取各元数据信息,为后续数据治理和运维做好数据准备。本文为您介绍开放数据的主要应用场景和使用命令。
前提条件
已完成安装开放数据Package,详情可参见安装/卸载开放数据Package。
使用引导
本文以在DataWorks的ODPS节点中使用开放数据获取各类元数据信息为例,为您介绍主要使用开放数据的操作命令。各操作命令使用前需先进入ODPS节点的代码编辑页面,步骤如下。
- 进入DataStudio页面。
- 登录DataWorks控制台。
- 在左侧导航栏,单击工作空间列表。
- 在对应工作空间的操作列单击进入数据开发。
进入ODPS节点的代码编辑页面。
在业务流程中找到MaxCompute引擎下的数据开发,右键新建一个ODPS SQL节点。
进入页面后您可使用开放数据获取各类元数据信息:
查看已创建的数据库(MaxCompute项目)
DataWorks开放数据中的raw_v_meta_database视图用于查询已创建的数据库,查看命令如下。
SELECT * FROM u_meta_hangzhou.raw_v_meta_database_版本信息('业务日期');
其中:
版本信息:安装使用的开放数据的版本,格式为类似v1_1的格式,您可执行DESCRIBE PACKAGE查询实际使用的版本详情可参见查看DataWorks开放数据提供的表或视图。
业务日期:查看指定业务日期内的元数据信息,格式为yyyymmdd,如果不指定具体业务日期,则查看所有日期内的元数据信息。
以下为一个查询操作的命令样例。
-- 查询2021年1月9日创建的数据库列表。
SELECT * FROM u_meta_hangzhou.raw_v_meta_database_v1_1('20210109');
查询结果样例:查询结果各字段明细说明可参见数据库(ODPS项目)元数据明细raw_v_meta_database。
查看项目中的表
DataWorks开放数据中的raw_v_meta_table视图用于查询项目中的表信息,查看命令如下。
SELECT *
FROM u_meta_hangzhou.raw_v_meta_table_版本信息('业务日期')
WHERE catalog_name = 'your_catalog_name'
AND database_name = 'your_database_name'
AND table_name = 'your_table_name'
;
其中:
版本信息:安装使用的开放数据的版本,格式为类似v1_1的格式,您可执行DESCRIBE PACKAGE查询实际使用的版本详情可参见查看DataWorks开放数据提供的表或视图。
业务日期:查看指定业务日期内的元数据信息,格式为yyyymmdd,如果不指定具体业务日期,则查看所有日期内的元数据信息。
your_catalog_name:查看指定计算引擎的元数据信息,当前请配置为odps。
your_database_name:查看指定项目内的元数据信息,实际配置时请配置为需查询的项目名称。
your_table_name:查看指定表的元数据信息,实际配置时请配置为需查询的表名称。
以下为一个查询操作的命令样例。
-- 查询2021年1月9日,MaxCompute的isv2项目下名称为ods_user_info_d的表的数据
SELECT *
FROM u_meta_hangzhou.raw_v_meta_table_v1_1('20210109')
WHERE catalog_name = 'odps'
AND database_name = 'isv2'
AND table_name = 'ods_user_info_d'
;
查询结果样例:查询结果各字段明细说明可参见表(table)元数据明细raw_v_meta_table。
查询表的统计信息
DataWorks开放数据中的rpt_v_meta_ind_table_core和rpt_v_meta_ind_table_extra视图可用于查询表的统计信息,如租户ID、表生命周期等信息,查看命令如下。
SELECT c.tenant_id, c.table_uuid, c.dim_life_cycle, c.is_partition_table, c.entity_type, c.categories, c.last_access_time, c.partition_count, c.favorite_count, e.output_task_count
FROM u_meta_hangzhou.rpt_v_meta_ind_table_core_版本信息('业务日期') c
LEFT OUTER JOIN u_meta_hangzhou.rpt_v_meta_ind_table_extra_版本信息('业务日期') e
ON c.table_uuid = e.table_uuid AND c.tenant_id = e.tenant_id
WHERE c.catalog_name = 'your_catalog_name'
AND c.database_name = 'your_database_name'
AND c.table_name = 'your_table_name'
;
其中:
版本信息:安装使用的开放数据的版本,格式为类似v1_1的格式,您可执行DESCRIBE PACKAGE查询实际使用的版本详情可参见查看DataWorks开放数据提供的表或视图。
业务日期:查看指定业务日期内的元数据信息,格式为yyyymmdd,如果不指定具体业务日期,则查看所有日期内的元数据信息。
your_catalog_name:查看指定计算引擎的元数据信息,当前请配置为odps。
your_database_name:查看指定项目内的元数据信息,实际配置时请配置为需查询的项目名称。
your_table_name:查看指定表的元数据信息,实际配置时请配置为需查询的表名称。
以下为一个查询操作的命令样例。
--查询在2021年1月9日,MaxCompute的isv2项目下名称为ods_user_info_d表的统计信息
SELECT c.tenant_id, c.table_uuid, c.dim_life_cycle, c.is_partition_table, c.entity_type, c.categories, c.last_access_time, c.partition_count, c.favorite_count, e.output_task_count
FROM u_meta_hangzhou.rpt_v_meta_ind_table_core_v1_1('20210109') c
LEFT OUTER JOIN u_meta_hangzhou.rpt_v_meta_ind_table_extra_v1_1('20210109') e
ON c.table_uuid = e.table_uuid AND c.tenant_id = e.tenant_id
WHERE c.catalog_name = 'odps'
AND c.database_name = 'isv2'
AND c.table_name = 'ods_user_info_d'
;
查询结果样例:查询结果各字段明细说明可参见Table核心指标rpt_v_meta_ind_table_core和Table额外指标rpt_v_meta_ind_table_extra。
查看产出表的任务详情
DataWorks开放数据中的raw_v_meta_table_output和raw_v_schedule_node视图可用于查询表的任务详情,查看命令如下。
SELECT s.*, o.schedule_instance_id, execute_time
FROM u_meta_hangzhou.raw_v_meta_table_output_版本信息('业务日期') o
LEFT OUTER JOIN u_meta_hangzhou.raw_v_schedule_node_版本信息('业务日期') s
ON o.schedule_task_id = s.node_id
WHERE o.type = 'your_table_type'
AND o.database = 'your_database_name'
AND o.table = 'your_table_name'
AND s.project_env = 'your_project_environment'
;
其中:
版本信息:安装使用的开放数据的版本,格式为类似v1_1的格式,您可执行DESCRIBE PACKAGE查询实际使用的版本详情可参见查看DataWorks开放数据提供的表或视图。
业务日期:查看指定业务日期内的元数据信息,格式为yyyymmdd,如果不指定具体业务日期,则查看所有日期内的元数据信息。
your_table_type:查看指定产出表类型的元数据信息。当前仅支持MaxCompute使用,请配置为odps。
your_database_name:查看指定项目内的元数据信息,实际配置时请配置为需查询的项目名称。
your_table_name:查看指定表的元数据信息,实际配置时请配置为需查询的表名称。
your_project_environment:查看指定项目环境的元数据信息。查看开发环境请配置为DEV,查看生产环境请配置为PROD。
以下为一个查询操作的命令样例。
-- 查看2021年1月9日,xc_simple_e1下类型为odps、表名为ods_user_info_d的表的生产任务详情。
SELECT s.*, o.schedule_instance_id, execute_time
FROM u_meta_hangzhou.raw_v_meta_table_output_v1_1('20210109') o
LEFT OUTER JOIN u_meta_hangzhou.raw_v_schedule_node_v1_1('20210109') s
ON o.schedule_task_id = s.node_id
WHERE o.type = 'odps'
AND o.database = 'xc_simple_e1'
AND o.table = 'ods_user_info_d'
AND s.project_env = 'PROD'
;
查询结果样例:查询结果各字段明细说明可参见表产出任务(table-output)元数据明细raw_v_meta_table_output和调度节点明细raw_v_schedule_node。
查看某个任务的上下游任务列表
DataWorks开放数据中的raw_v_schedule_node和raw_v_schedule_node_relation视图可用于查询某个任务的上下游任务列表,查看命令如下。
-- 查看上游节点列表
SELECT *
FROM u_meta_hangzhou.raw_v_schedule_node_版本信息('业务日期') t
WHERE t.project_env = 'your_project_environment'
AND t.node_id IN (
SELECT parent_node_id
FROM u_meta_hangzhou.raw_v_schedule_node_relation_版本信息('业务日期') r
WHERE r.child_node_id = your_child_node_id
AND r.project_env = 'your_project_environment'
)
;
-- 查看下游节点列表
SELECT *
FROM u_meta_hangzhou.raw_v_schedule_node_版本信息('业务日期') t
WHERE t.project_env = 'your_project_environment'
AND t.node_id IN (
SELECT child_node_id
FROM u_meta_hangzhou.raw_v_schedule_node_relation_版本信息('业务日期') r
WHERE r.child_node_id = your_child_node_id
AND r.project_env = 'your_project_environment'
)
;
其中:
版本信息:安装使用的开放数据的版本,格式为类似v1_1的格式,您可执行DESCRIBE PACKAGE查询实际使用的版本详情可参见查看DataWorks开放数据提供的表或视图。
业务日期:查看指定业务日期内的元数据信息,格式为yyyymmdd,如果不指定具体业务日期,则查看所有日期内的元数据信息。
your_project_environment:查看指定项目环境的元数据信息。查看开发环境请配置为DEV,查看生产环境请配置为PROD。
your_child_node_id:查看指定某节点的元数据信息。
以下为一个查询操作的命令样例。
获取某节点在生产项目中的上游节点列表。
-- 获取在2021年1月9日,生产环境中,节点1000550985的上游节点列表 SELECT * FROM u_meta_hangzhou.raw_v_schedule_node_v1_1('20210109') t WHERE t.project_env = 'PROD' AND t.node_id IN ( SELECT parent_node_id FROM u_meta_hangzhou.raw_v_schedule_node_relation_v1_1('20210109') r WHERE r.child_node_id = 1000550985 AND r.project_env = 'PROD' ) ;
查询结果样例:
获取某节点在生产项目中的下游节点列表。
-- 获取在2021年1月9日,生产环境中,节点1000550985的下游节点列表 SELECT * FROM u_meta_hangzhou.raw_v_schedule_node_v1_1('20210109') t WHERE t.project_env = 'PROD' AND t.node_id IN ( SELECT child_node_id FROM u_meta_hangzhou.raw_v_schedule_node_relation_v1_1('20210109') r WHERE r.parent_node_id = 1000550985 AND r.project_env = 'PROD' ) ;
查询结果样例:
查询结果各字段明细说明可参见调度节点明细raw_v_schedule_node和调度节点关系raw_v_schedule_node_relation。
获取表或任务的Owner详情
DataWorks开放数据中的raw_v_meta_table和raw_v_tenant_user视图可用于查询某个表或任务的Owner详情,查看命令如下。
查看表Owner详情。
SELECT c.catalog_name, c.database_name, c.table_name, c.owner_name, u.account_name, u.nick FROM u_meta_hangzhou.raw_v_meta_table_版本信息('业务日期') c LEFT OUTER JOIN u_meta_hangzhou.raw_v_tenant_user_版本信息('业务日期') u ON c.owner_name = TOLOWER(u.yun_account) WHERE c.catalog_name = 'your_catalog_name' AND c.database_name = 'your_database_name' AND c.table_name = 'your_table_name' ;
其中:
版本信息:安装使用的开放数据的版本,格式为类似v1_1的格式,您可执行DESCRIBE PACKAGE查询实际使用的版本详情可参见查看DataWorks开放数据提供的表或视图。
业务日期:查看指定业务日期内的元数据信息,格式为yyyymmdd,如果不指定具体业务日期,则查看所有日期内的元数据信息。
your_catalog_name:查看指定计算引擎的元数据信息,当前请配置为odps。
your_database_name:查看指定项目内的元数据信息,实际配置时请配置为需查询的项目名称。
your_table_name:查看指定表的元数据信息,实际配置时请配置为需查询的表名称。
查看任务Owner详情。
SELECT t.project_id, t.node_id, t.node_name, t.create_user, u.account_name AS create_user_name, u.nick as create_user_nick, t.modify_user, m.account_name AS modify_user_name, m.nick as modify_user_nick FROM u_meta_hangzhou.raw_v_schedule_node_版本信息('业务日期') t LEFT OUTER JOIN u_meta_hangzhou.raw_v_tenant_user_版本信息('业务日期') u ON t.create_user = u.yun_account LEFT OUTER JOIN u_meta_hangzhou.raw_v_tenant_user_版本信息('业务日期') m ON t.modify_user = m.yun_account WHERE t.node_id = your_node_id AND t.project_env = 'your_project_environment' ;
其中:
版本信息:安装使用的开放数据的版本,格式为类似v1_1的格式,您可执行DESCRIBE PACKAGE查询实际使用的版本详情可参见查看DataWorks开放数据提供的表或视图。
业务日期:查看指定业务日期内的元数据信息,格式为yyyymmdd,如果不指定具体业务日期,则查看所有日期内的元数据信息。
your_project_environment:查看指定项目环境的元数据信息。查看开发环境请配置为DEV,查看生产环境请配置为PROD。
your_node_id:查看指定ID节点的元数据信息。
以下为一个查询操作的命令样例。
查看2021年1月9日,表所有者详情数据。
SELECT c.catalog_name, c.database_name, c.table_name, c.owner_name, u.account_name, u.nick FROM u_meta_hangzhou.raw_v_meta_table_v1_1('20210109') c LEFT OUTER JOIN u_meta_hangzhou.raw_v_tenant_user_v1_1('20210109') u ON c.owner_name = TOLOWER(u.yun_account) WHERE c.catalog_name = 'odps' AND c.database_name = 'isv2' AND c.table_name = 'ods_user_info_d' ;
查询结果样例:
查看2021年1月9日,调度任务所有者和修改者详情数据。
SELECT t.project_id, t.node_id, t.node_name, t.create_user, u.account_name AS create_user_name, u.nick as create_user_nick, t.modify_user, m.account_name AS modify_user_name, m.nick as modify_user_nick FROM u_meta_hangzhou.raw_v_schedule_node_v1_1('20210109') t LEFT OUTER JOIN u_meta_hangzhou.raw_v_tenant_user_v1_1('20210109') u ON t.create_user = u.yun_account LEFT OUTER JOIN u_meta_hangzhou.raw_v_tenant_user_v1_1('20210109') m ON t.modify_user = m.yun_account WHERE t.node_id = 1000454827 AND t.project_env = 'PROD' ;
查询结果样例:
查询结果各字段明细说明可参见调度节点明细raw_v_schedule_node和调度节点关系raw_v_schedule_node_relation。
后续步骤
DataWorks开放数据提供的视图可以接收日期(yyyyMMdd格式)参数,可按照日期分区,允许获取最近30天内的历史数据。如果有指标趋势分析等需求,您可以按照业务日期获取数据,将数据保存项目中,作为指标分析所需的历史数据。