使用开放数据

安装完成DataWorks开放数据Package后,您可使用开放数据来获取各元数据信息,为后续数据治理和运维做好数据准备。本文为您介绍开放数据的主要应用场景和使用命令。

前提条件

已完成安装开放数据Package,详情可参见安装/卸载开放数据Package

使用引导

本文以在DataWorks的ODPS节点中使用开放数据获取各类元数据信息为例,为您介绍主要使用开放数据的操作命令。各操作命令使用前需先进入ODPS节点的代码编辑页面,步骤如下。

  1. 进入DataStudio页面。
    1. 登录DataWorks控制台
    2. 在左侧导航栏,单击工作空间列表
    3. 在对应工作空间的操作列单击进入数据开发
  2. 进入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');

查询结果样例:使用结果1查询结果各字段明细说明可参见数据库(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'
;

查询结果样例:使用结果2查询结果各字段明细说明可参见表(table)元数据明细raw_v_meta_table

查询表的统计信息

DataWorks开放数据中的rpt_v_meta_ind_table_corerpt_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_coreTable额外指标rpt_v_meta_ind_table_extra

查看产出表的任务详情

DataWorks开放数据中的raw_v_meta_table_outputraw_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'
;

查询结果样例:使用结果4查询结果各字段明细说明可参见表产出任务(table-output)元数据明细raw_v_meta_table_output调度节点明细raw_v_schedule_node

查看某个任务的上下游任务列表

DataWorks开放数据中的raw_v_schedule_noderaw_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:查看指定某节点的元数据信息。

以下为一个查询操作的命令样例。

  1. 获取某节点在生产项目中的上游节点列表。

    -- 获取在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'
     )
    ;

    查询结果样例:5.1

  2. 获取某节点在生产项目中的下游节点列表。

    -- 获取在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'
     )
    ;

    查询结果样例:5.2

查询结果各字段明细说明可参见调度节点明细raw_v_schedule_node调度节点关系raw_v_schedule_node_relation

获取表或任务的Owner详情

DataWorks开放数据中的raw_v_meta_tableraw_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节点的元数据信息。

以下为一个查询操作的命令样例。

  1. 查看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'
    ;

    查询结果样例:6.1

  2. 查看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'
    ;

    查询结果样例:6.2

查询结果各字段明细说明可参见调度节点明细raw_v_schedule_node调度节点关系raw_v_schedule_node_relation

后续步骤

DataWorks开放数据提供的视图可以接收日期(yyyyMMdd格式)参数,可按照日期分区,允许获取最近30天内的历史数据。如果有指标趋势分析等需求,您可以按照业务日期获取数据,将数据保存项目中,作为指标分析所需的历史数据。