このトピックでは、ワークフローの作成、ワークフローでのノードの作成、およびノードの依存関係の設定方法について説明します。ワークフローを作成した後、DataStudioサービスを使用して、ワークスペースでデータ分析と計算を実行できます。
前提条件
ビジネスデータを格納するための bank_data テーブルと結果を格納するための result_table テーブルがワークスペースに作成されています。データは bank_data テーブルにインポートされます。詳細については、「テーブルの作成とデータのアップロード」をご参照ください。
背景情報
DataWorks の DataStudio サービスでは、ワークフロー内のノード間を線でドラッグすることで、ノードの依存関係を設定できます。ワークフローに基づいてデータを処理し、ノードの依存関係を設定できます。ワークスペースには複数のワークフローを作成できます。詳細については、「ワークフローの作成」をご参照ください。
ワークフローの作成
DataWorksコンソール にログオンします。上部のナビゲーションバーで、目的のリージョンを選択します。左側のナビゲーションペインで、 を選択します。表示されるページで、ドロップダウンリストから目的のワークスペースを選択し、[データ開発に移動] をクリックします。
[datastudio] ページで、
アイコンにポインターを移動し、[ワークフローの作成] を選択します。[ワークフローの作成] ダイアログボックスで、[ワークフロー名] と [説明] を設定します。
[作成] をクリックします。
ノードの作成とノードの依存関係の設定
ワークフローで、start という名前のゼロロードノードと insert_data という名前の ODPS SQLノードを作成し、insert_data ノードが start ノードに依存するように設定します。
ゼロロードノードは、ワークフロー内の後続ノードを維持および制御するために使用される制御ノードです。ゼロロードノードはデータを生成しません。
他のノードがゼロロードノードに依存し、ゼロロードノードのステータスが O&M担当者によって「失敗」に設定されている場合、保留中の後続ノードは実行できません。O&Mプロセス中に、ゼロロードノードを無効にして、祖先ノードの誤ったデータが後続ノードによって取得されないようにすることができます。
ほとんどの場合、ワークスペースのルートノードは、ワークフロー内のゼロロードノードの祖先ノードとして使用されます。ワークスペースのルートノードには、
Workspace name_root形式の名前が付けられます。DataWorks は、ノードの出力名を自動的に作成します。名前は ワークスペース名.ノード名 形式です。ワークスペースに同じ名前のノードが 2 つある場合は、2 つのノードのいずれかの名前を変更します。
ワークフローを設計する場合は、ワークフローのルートノードとしてゼロロードノードを作成して、ワークフロー全体を制御することをお勧めします。ワークフローを設計するには、次の手順を実行します。
[スケジュールされたワークフロー] ペインの左側で、[ビジネスフロー] セクションで作成したワークフローを見つけ、ワークフロー名をダブルクリックします。表示される設定タブで、[全般][ > ][ゼロロードノード] を選択します。
[ゼロロードノード] を右側のキャンバスにドラッグして、[ノードの作成] ダイアログボックスに移動することもできます。

[ノードの作成] ダイアログボックスで、[パス] パラメーターを設定し、[名前] パラメーターを start に設定します。次に、[確認] をクリックします。
同じ方法を使用して、[ODPS SQL] ノードを insert_data という名前で作成します。
start ノードから insert_data ノードに線をドラッグして、start ノードを insert_data ノードの祖先ノードとして設定します。

ゼロロードノードの祖先ノードの設定
ワークフローでは、ゼロロードノードはワークフロー全体を制御するために使用され、ワークフロー内のすべてのノードの祖先ノードとして機能します。
ほとんどの場合、ゼロロードノードは [ワークスペースのルートノード] に依存します。
ゼロロードノードの名前をダブルクリックして、ノード設定タブに移動します。
右側のナビゲーションペインで、[プロパティ] をクリックします。
[プロパティ] タブの [依存関係] セクションで、[ルートノードの追加] をクリックして、ワークスペースのルートノードをゼロロードノードの祖先ノードとして設定します。

ノードを保存してコミットします。
重要ノードをコミットする前に、[プロパティ] タブで [再実行] パラメーターと [親ノード] パラメーターを設定する必要があります。
上部のツールバーの
アイコンをクリックして、ノードを保存します。ツールバーの
アイコンをクリックして、ノードをコミットします。[ノードのコミット] ダイアログボックスで、[変更の説明] フィールドにコメントを入力します。
[決定] をクリックします。
ODPS SQL ノードの編集と実行
このセクションでは、ODPS SQL ノード insert_data で SQL コードを使用して、さまざまな教育レベルを持ち、住宅ローンを持っているシングルの数をクエリし、クエリ結果を保存する方法について説明します。クエリ結果は、後続ノードがデータの分析または提示を続行するために使用できます。
ODPS SQL ノードの設定タブに移動し、次のコードを入力します。
構文の詳細については、「MaxCompute SQL の概要」をご参照ください。
INSERT OVERWRITE TABLE result_table -- result_table テーブルにデータを挿入します。 SELECT education , COUNT(marital) AS num FROM bank_data WHERE housing = 'yes' AND marital = 'single' GROUP BY education;コード内の bank_data を右クリックし、[入力の削除] を選択します。
bank_data テーブルは、自動トリガーノードによって生成されません。テーブルの作成方法とテーブルへのデータのインポート方法の詳細については、「テーブルの作成とデータのアップロード」をご参照ください。ノードのコードの SELECT ステートメントで、自動トリガーノードによって生成されていないテーブルが指定されている場合は、管理するテーブルの名前を右クリックし、[入力の削除] をクリックします。コードの先頭にルールのコメントを追加することもできます。このようにして、システムはルールに基づいて依存関係を自動的に解析しません。
説明スケジューリングの依存関係により、ノードは、実行するようにスケジュールされている祖先ノードによって生成されたテーブルデータを取得できます。ただし、ノードの祖先ノードが実行するようにスケジュールされていない場合、システムは祖先ノードによる最新のテーブルデータの生成を監視できません。ノードが SELECT ステートメントを使用して、自動トリガーノードによって生成されていないテーブルのデータをクエリする場合、SELECT ステートメントによって自動的に生成されるノードの依存関係を手動で削除する必要があります。
上部のツールバーの
アイコンをクリックします。これにより、コードの損失を防ぎます。上部のツールバーの
アイコンをクリックします。ノードが実行された後、タブの下部で実行ログと結果を表示できます。
ワークフローのコミット
ODPS SQL ノード insert_data を実行してデバッグした後、ワークフローの設定タブに戻ります。
上部のツールバーの
アイコンをクリックします。[コミット] ダイアログボックスで、コミットするノードを選択し、[変更の説明] フィールドにコメントを入力し、[強制的に変更] の値を選択し、[I/Oの不整合アラートを無視] を選択します。
[コミット] をクリックします。
ワークフローがコミットされた後、[ワークフロー] のノードリストからノードステータスを表示できます。ノード名の左側に
アイコンが表示されていない場合、ノードはコミットされています。
アイコンが表示されている場合、ノードはコミットされていません。
次のステップ
ワークフローの作成とコミット方法を学習しました。次のチュートリアルに進むことができます。データ同期ノードを作成して、異なるタイプのデータソース間でデータを同期できます。詳細については、「同期タスクの作成」をご参照ください。