全部產品
Search
文件中心

:使用開放資料

更新時間:Jun 19, 2024

安裝完成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天內的歷史資料。如果有指標趨勢分析等需求,您可以按照業務日期擷取資料,將資料儲存專案中,作為指標分析所需的歷史資料。