自動解析は、ノードのコードに記述された SQL ステートメントを読み取り、スケジューリング依存関係を推論する機能です。出力または先祖ノードを手動で構成することなく、自動的に追加します。本トピックでは、各ノードタイプにおける自動解析の動作方法と、自動解析がサポートされないシナリオについて説明します。
自動解析の仕組み
DataWorks は、ノードのコードに含まれる SQL ステートメントをスキャンします。検出された SQL キーワードに基づき、当該ノードが読み取るデータおよび書き込むデータを特定します:
-
書き込みステートメント(CREATE、INSERT など) — DataWorks はノードに 出力 を追加します。出力名は、ノードが書き込むテーブルを識別します。
-
読み取りステートメント(SELECT) — DataWorks はノードに 先祖ノード を追加します。先祖ノード名は、読み込まれる上流テーブルを識別します。
たとえば、Node A が orders_clean に書き込み、Node B が orders_clean から読み取る場合、DataWorks は自動的に Node A を Node B の先祖ノードとして設定します。手動による依存関係の構成は不要です。
ノードタイプ別の構成
以下の表は、自動解析をトリガーする SQL ステートメントと、DataWorks が生成する出力または先祖ノード名のフォーマットを示しています。
| ノードタイプ | SQL ステートメント | DataWorks が追加するもの | 出力名のフォーマット |
|---|---|---|---|
| ODPS ノード | CREATE、INSERT | 出力 | odps_project_name.table_name |
| ODPS ノード | SELECT | 先祖ノード | project_name.table_name |
| SQL ノード(ODPS 以外) | CREATE、INSERT、ALTER、UPDATE | 出力 | 下記の表をご参照ください |
| SQL ノード(ODPS 以外) | SELECT | 先祖ノード | project_name.table_name |
| バッチ同期ノード | すべて | サポートされていません | スケジューリング依存関係を手動で構成してください |
ODPS 以外の SQL ノードにおける出力名のフォーマット:
| エンジン | フォーマット |
|---|---|
| E-MapReduce (EMR) | workspace_name.db_name.table_name |
| AnalyticDB for PostgreSQL | workspace_name.db_name.schema_name.table_name |
| AnalyticDB for MySQL | workspace_name.db_name.schema_name.table_name |
| Hologres | workspace_name.db_name.schema_name.table_name |
フォーマット構成要素:
| プレースホルダー | 説明 |
|---|---|
odps_project_name |
ODPS ノードが属する DataWorks ワークスペース |
project_name |
テーブルを生成するノードが属するワークスペース |
workspace_name |
当該ノードが属する DataWorks ワークスペース |
db_name |
データが書き込まれるデータベース |
schema_name |
ノードのスキーマ |
table_name |
生成されるテーブルの名前 |
制限事項
以下のシナリオでは自動解析が適用されません。これらのケースでは、テーブルをノードの 出力 に手動で追加してください。
サポートされていないノードタイプ
一部のノードタイプでは自動解析がサポートされていません。たとえば、バッチ同期ノードおよび AnalyticDB for PostgreSQL ノードでは、スケジューリング依存関係の自動解析による構成ができません。これらのノードによって生成されるテーブルは、ノードの出力に手動で追加する必要があります。
特定のノードタイプが自動解析をサポートしているかどうかを確認するには、DataWorks コンソールで当該ノードを開き、その構成を確認してください。
一時テーブル
SQL ステートメントによって作成された一時テーブルは、自動解析の対象となりません。たとえば、ご利用のワークスペースで t_ プレフィックスを持つテーブルを一時テーブルとして扱っている場合、それらのテーブルは 出力 および 親ノード に自動的に追加されません。必要に応じて手動で追加してください。
同期ノードによって生成されるテーブル
同期ノードがテーブルを生成した後は、projectname.tablename の形式で、当該テーブルをノードの出力として手動で追加してください。出力が追加されると、そのテーブルを読み取る子孫ノードは、自動解析を用いて自身のスケジューリング依存関係を構成できます。