DataWorks のオープンデータパッケージをインストールすると、オープンデータを使用してメタデータを取得できます。これにより、後続のデータガバナンスや O&M (運用と保守) のためのデータを準備できます。このトピックでは、オープンデータの主なユースケースと必要なコマンドについて説明します。
DataWorks は、ビジュアルなユーザーインターフェースを使用してメタデータを参照および管理できる新しいオープンデータをリリースしました。この機能の正式版を使用することを推奨します。詳細については、「オープンデータの使用」をご参照ください。
前提条件
オープンデータパッケージがインストール済みであること。詳細については、「オープンデータパッケージのインストールまたはアンインストール (招待制バージョンは間もなく非推奨)」をご参照ください。
使用方法
このトピックでは、DataWorks の ODPS SQL ノードを例に、オープンデータを使用してさまざまな種類のメタデータを取得するコマンドについて説明します。コマンドを実行する前に、ODPS SQL ノードのコードエディタに移動します。次の手順に従ってください。
- DataStudio ページに移動します。
- DataWorks コンソールにログインします。
- 左側のナビゲーションウィンドウで、[Workspaces] をクリックします。
- Workspaces ページで、対象のワークスペースを見つけ、[操作] 列の [Data Analytics] をクリックします。
ODPS SQL ノードのコードエディタに移動します。
MaxCompute 計算エンジンの下にある DataStudio を見つけます。DataStudio を右クリックし、[作成] > [ODPS SQL] を選択して ODPS SQL ノードを作成します。
オープンデータを使用して、さまざまな種類のメタデータを取得できます。
作成されたデータベース (MaxCompute プロジェクト) の表示
DataWorks のオープンデータにある raw_v_meta_database ビューは、作成されたデータベースのクエリに使用されます。コマンドは次のとおりです。
SELECT * FROM u_meta_hangzhou.raw_v_meta_database_<version>('<business_date>');次の表にパラメーターを説明します。
バージョン情報:使用されるオープンデータのバージョン。フォーマットは v1_1 のようになります。DESCRIBE PACKAGE コマンドを実行して実際のバージョンをクエリできます。詳細については、「オープンデータが提供するテーブルまたはビューの表示」をご参照ください。
ビジネス日付:メタデータを表示するビジネス日付を yyyymmdd 形式で指定します。ビジネス日付を指定しない場合、すべての日付のメタデータが表示されます。
次のコードは例です。
-- 2021年1月9日に作成されたデータベースのリストをクエリします。
SELECT * FROM u_meta_hangzhou.raw_v_meta_database_v1_1('20210109');このクエリを実行すると、返されるデータベースのメタデータには次のフィールドが含まれます。
tenant_idproject_idenv_typecatalog_namedatabase_namedatabase_commentowner_namecreated_time_tslast_modified_timelocationextrasbiz_date
クエリ結果のフィールドの詳細については、「データベース (MaxCompute プロジェクト) のメタデータ: raw_v_meta_database」をご参照ください。
プロジェクト内のテーブルの表示
DataWorks のオープンデータにある raw_v_meta_table ビューは、プロジェクト内のテーブルに関する情報のクエリに使用されます。コマンドは次のとおりです。
SELECT *
FROM u_meta_hangzhou.raw_v_meta_table_<version>('<business_date>')
WHERE catalog_name = 'your_catalog_name'
AND database_name = 'your_database_name'
AND table_name = 'your_table_name'
;次の表にパラメーターを説明します。
バージョン情報:使用されるオープンデータのバージョン。フォーマットは v1_1 のようになります。DESCRIBE PACKAGE コマンドを実行して実際のバージョンをクエリできます。詳細については、「オープンデータが提供するテーブルまたはビューの表示」をご参照ください。
ビジネス日付:メタデータを表示するビジネス日付を yyyymmdd 形式で指定します。ビジネス日付を指定しない場合、すべての日付のメタデータが表示されます。
your_catalog_name:指定された計算エンジンのメタデータのカタログ。このパラメーターを odps に設定します。
your_database_name:クエリ対象のプロジェクト名。実際のプロジェクト名に置き換えてください。
your_table_name:クエリ対象のテーブル名。実際のテーブル名に置き換えてください。
次のコードは例です。
-- 2021年1月9日における isv2 という名前の MaxCompute プロジェクト内の 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'
;このクエリを実行すると、返される結果には catalog_name、database_name、table_name、table_uuid、table_type、partition_keys、table_comment、table_biz_comment、visibility_scope、owner_name などのフィールドが含まれ、対象テーブルのメタデータ属性が表示されます。クエリ結果のフィールドの詳細については、「テーブルメタデータ: raw_v_meta_table」をご参照ください。
テーブル統計のクエリ
オープンデータの 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_<version>('<business_date>') c
LEFT OUTER JOIN u_meta_hangzhou.rpt_v_meta_ind_table_extra_<version>('<business_date>') 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 コマンドを実行して実際のバージョンをクエリできます。詳細については、「オープンデータが提供するテーブルまたはビューの表示」をご参照ください。
ビジネス日付:メタデータを表示するビジネス日付を yyyymmdd 形式で指定します。ビジネス日付を指定しない場合、すべての日付のメタデータが表示されます。
your_catalog_name:指定された計算エンジンのメタデータのカタログ。このパラメーターを odps に設定します。
your_database_name:クエリ対象のプロジェクト名。実際のプロジェクト名に置き換えてください。
your_table_name:クエリ対象のテーブル名。実際のテーブル名に置き換えてください。
次のコードは例です。
-- 2021年1月9日における isv2 という名前の MaxCompute プロジェクト内の 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'
;クエリは 1 行のデータを返します。サンプル結果では、dim_life_cycle は 36000、is_partition_table は true、entity_type は 0、last_access_time は 1572193547、partition_count は 190、favorite_count は 0、output_task_count は 0 です。
クエリ結果のフィールドの詳細については、「コアテーブルメトリック: rpt_v_meta_ind_table_core」および「追加テーブルメトリック: 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_<version>('<business_date>') o
LEFT OUTER JOIN u_meta_hangzhou.raw_v_schedule_node_<version>('<business_date>') 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 コマンドを実行して実際のバージョンをクエリできます。詳細については、「オープンデータが提供するテーブルまたはビューの表示」をご参照ください。
ビジネス日付:メタデータを表示するビジネス日付を yyyymmdd 形式で指定します。ビジネス日付を指定しない場合、すべての日付のメタデータが表示されます。
your_table_type:メタデータを取得する出力テーブルのタイプ。このパラメーターは現在 MaxCompute でのみサポートされています。このパラメーターを odps に設定します。
your_database_name:クエリ対象のプロジェクト名。実際のプロジェクト名に置き換えてください。
your_table_name:クエリ対象のテーブル名。実際のテーブル名に置き換えてください。
your_project_environment:メタデータを表示するプロジェクト環境を指定します。開発環境の場合は DEV に、本番環境の場合は PROD に設定します。
次のコードは例です。
-- 2021年1月9日における xc_simple_e1 プロジェクト内の ods_user_info_d という名前の odps テーブルの本番ノードの詳細をクエリします。
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'
;このクエリを実行すると、返される結果は、ods_user_info_d テーブルがスケジューリングノードによって生成され、project_env が PROD であることを示します。結果には、tenant_id、project_id、node_id、node_name、node_type、create_time、para_value などのフィールドが含まれます。クエリ結果のフィールドの詳細については、「テーブル出力ノードメタデータ: raw_v_meta_table_output」および「スケジューリングノード詳細: raw_v_schedule_node」をご参照ください。
先祖ノードと子孫ノードの表示
オープンデータの raw_v_schedule_node ビューと raw_v_schedule_node_relation ビューを使用して、特定のノードの上流ノードと下流ノードをクエリできます。コマンドは次のとおりです。
-- 先祖ノードをクエリします。
SELECT *
FROM u_meta_hangzhou.raw_v_schedule_node_<version>('<business_date>') 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_<version>('<business_date>') 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_<version>('<business_date>') 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_<version>('<business_date>') r
WHERE r.child_node_id = your_child_node_id
AND r.project_env = 'your_project_environment'
)
;次の表にパラメーターを説明します。
バージョン情報:使用されるオープンデータのバージョン。フォーマットは v1_1 のようになります。DESCRIBE PACKAGE コマンドを実行して実際のバージョンをクエリできます。詳細については、「オープンデータが提供するテーブルまたはビューの表示」をご参照ください。
ビジネス日付:メタデータを表示するビジネス日付を yyyymmdd 形式で指定します。ビジネス日付を指定しない場合、すべての日付のメタデータが表示されます。
your_project_environment:メタデータを表示するプロジェクト環境を指定します。開発環境の場合は DEV に、本番環境の場合は PROD に設定します。
your_child_node_id:クエリ対象のノードの 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' ) ;クエリは 1 件の結果を返します。先祖ノードの情報は次のとおりです。
node_idは1000550983、node_nameはworkshop_start、node_typeは0、prg_typeは99、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' ) ;クエリ結果の例:
Results[1] tenant_id | project_id | node_id | node_name | node_type | prg_type | flow_id | project_env | create_time | create_user | modify_time | modify_user | prg_name 283xxx | xxx | 1000551016 | dw_user_info_all_d | 0 | 10 | 1 | PROD | 1587465492000 | xxx | 1596536670000 | xxx | \N 283xxx | 56 | 1000551015 | ods_log_info_d | 0 | 10 | 1 | PROD | 1587465489000 | xxx | 1590117450000 | xxx | \N
クエリ結果のフィールドの詳細については、「スケジューリングノード詳細: raw_v_schedule_node」および「スケジューリングノード関係詳細: raw_v_schedule_node_relation」をご参照ください。
テーブルとノードの所有者の表示
DataWorks オープンデータの raw_v_meta_table ビューと raw_v_tenant_user ビューを使用して、テーブルまたはノードの所有者の詳細をクエリできます。コマンドは次のとおりです。
テーブルの所有者の詳細をクエリします。
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_<version>('<business_date>') c LEFT OUTER JOIN u_meta_hangzhou.raw_v_tenant_user_<version>('<business_date>') 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 コマンドを実行して実際のバージョンをクエリできます。詳細については、「オープンデータが提供するテーブルまたはビューの表示」をご参照ください。
ビジネス日付:メタデータを表示するビジネス日付を yyyymmdd 形式で指定します。ビジネス日付を指定しない場合、すべての日付のメタデータが表示されます。
your_catalog_name:指定された計算エンジンのメタデータのカタログ。このパラメーターを odps に設定します。
your_database_name:クエリ対象のプロジェクト名。実際のプロジェクト名に置き換えてください。
your_table_name:クエリ対象のテーブル名。実際のテーブル名に置き換えてください。
ノードの所有者の詳細をクエリします。
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_<version>('<business_date>') t LEFT OUTER JOIN u_meta_hangzhou.raw_v_tenant_user_<version>('<business_date>') u ON t.create_user = u.yun_account LEFT OUTER JOIN u_meta_hangzhou.raw_v_tenant_user_<version>('<business_date>') 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 コマンドを実行して実際のバージョンをクエリできます。詳細については、「オープンデータが提供するテーブルまたはビューの表示」をご参照ください。
ビジネス日付:メタデータを表示するビジネス日付を 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' ;-- クエリ結果: -- catalog_name | database_name | table_name | owner_name | account_name | nick -- odps | isv2 | ods_user_info_d | xxx | xxx | Chexxx2021年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' ;-- クエリ結果 (結果[2]): -- project_id | node_id | node_name | create_user | create_user_name | create_user_nick | modify_user | modify_user_name | modify_user_nick -- 8 | 1000454827 | rpt_user_info_d | datawxxx mo2 | datawxxxo2 | datawxxxno2 | dxxxngcui | xiaxxx ui | 向xxx
クエリ結果のフィールドの詳細については、「スケジューリングノード詳細: raw_v_schedule_node」および「スケジューリングノード関係詳細: raw_v_schedule_node_relation」をご参照ください。
次のステップ
オープンデータが提供するビューは、yyyyMMdd 形式の日付パラメーターを受け入れます。このパラメーターを使用して、日付でデータをパーティション分割し、過去 30 日間の履歴データを取得できます。メトリック傾向分析を実行する必要がある場合は、ビジネス日付でデータを取得し、プロジェクトに保存して履歴分析を行うことができます。