すべてのプロダクト
Search
ドキュメントセンター

DataWorks:Data Studio:開発者向け

最終更新日:Jul 08, 2026

このトピックでは、MaxCompute ジョブを例に、Data Studio でスケジュールされたタスクを作成する方法を説明します。このガイドで、Data Studio の基本機能をすぐに使い始めることができます。

前提条件

説明

このトピックでは、ODPS SQL ノードを例として使用します。そのため、ワークスペースは MaxCompute データソースにバインドされている必要があります。

背景

DataWorks の Data Studio は、MaxCompute、Hologres、EMR、CDH などのさまざまなコンピューティングエンジン向けのビジュアル開発インターフェイスを提供します。インテリジェントなコード開発、データクレンジング、データ処理、標準化されたタスクのデプロイをサポートし、効率的で安定したデータ開発を実現します。詳細については、「Data Studio (レガシー)」をご参照ください。

通常、未加工のビジネスデータを DataWorks に書き込み、それを処理して最終的な結果テーブルを生成するプロセスには、次の手順が含まれます。

  1. DataWorks で複数のデータテーブルを作成します。 例:

    • 他のデータソースから同期したデータを格納するソーステーブル。

    • DataWorks でクレンジングおよび処理したデータを格納する結果テーブル。

  2. 同期タスクを作成して、ビジネスデータをソーステーブルに同期します。

  3. コンピューティングノードを作成して、ソーステーブルのデータを階層的にクレンジングおよび処理し、各レイヤーの結果を対応する結果テーブルに書き込みます。

または、テーブルを作成した後、ローカルデータを DataWorks のソーステーブルに直接アップロードすることもできます。その後、コンピューティングノードを使用してデータをクレンジングおよび処理し、結果を結果テーブルに格納できます。このトピックの例では、ローカルデータをアップロードし、コンピューティングノードでクレンジングする手順を紹介します。

Data Studioへの移動

DataWorks コンソールにログインします。 左側のナビゲーションウィンドウで、[データモデリングと開発] > [DataStudio] を選択します。 表示されるページで、ドロップダウンリストから目的のワークスペースを選択し、[DataStudioに移動] をクリックします。

操作手順

  1. ステップ 1:ワークフローの作成

    データ開発はワークフローを中心に行います。コード開発を開始する前に、ワークフローを作成する必要があります。

  2. ステップ 2:テーブルの作成

    DataWorks では、テーブルを視覚的に作成でき、作成したテーブルはディレクトリ構造で表示されます。データ開発を開始する前に、データクレンジング結果を格納するためのテーブルをコンピュートエンジンに作成する必要があります。

  3. ステップ 3:ノードの作成

    DataWorks は、異なるコンピュートエンジンのタスクを異なるノードタイプにカプセル化します。業務要件に基づいて適切なノードタイプを選択できます。

  4. ステップ 4:ノードの編集

    ノード編集ページで、ノードのデータベースエンジンの構文を使用して業務ロジックを記述します。

  5. ステップ 5:ノードのスケジュール設定

    ノードを定期的に実行するために、ノードのスケジューリングプロパティを定義します。

  6. ステップ 6:コードのデバッグ

    DataWorks は、コードフラグメントのクイック実行、「Run」、高度な実行の 3 つの方法でコードをデバッグし、ロジックを検証できます。

  7. ステップ 7:ノードの保存と送信

    ノードをデバッグした後、保存して送信する必要があります。

  8. ステップ 8:スモークテストの実行

    本番環境のタスクを効率的に実行し、コンピューティングリソースの無駄を防ぐために、デプロイ前に開発環境でタスクのスモークテストを実行して正しく動作することを確認します。

  9. ステップ 9:タスクのデプロイ

    DataWorks は、スケジュール設定され、本番環境にデプロイされたタスクのみを実行します。スモークテストが成功した後、タスクを本番スケジューリングシステムにデプロイする必要があります。

ステップ 1:ワークフローの作成

DataWorks はワークフローを中心にデータ開発を構成します。ワークフローは、開発ノードにコンテナのようなパネルを使用し、関連するツール、最適化、管理アクションを中心となるオブジェクトにグループ化します。このアプローチにより、開発と管理が簡素化されます。要件を満たすために、関連するビジネスタスクを 1 つのワークフローにグループ化できます。

  1. DataStudioページに移動します。

    DataWorks コンソールにログインします。 左側のナビゲーションウィンドウで、[データモデリングと開発] > [DataStudio] を選択します。 表示されるページで、ドロップダウンリストから目的のワークスペースを選択し、[DataStudioに移動] をクリックします。

  2. ワークフローを作成します。

    次の 2 つの方法のいずれかでワークフローを作成できます:

    • 方法 1: 新建 アイコンにカーソルを合わせ、Create Workflow をクリックします。

    • 方法 2: Data Studio の左側のナビゲーションツリーで、Workflow を右クリックし、Create Workflow を選択します。

  3. ワークフローの名前と説明を入力し、Create をクリックします。

    このチュートリアルでは、Create your first scheduled task という名前のワークフローを作成します。 実際のシナリオでは、ビジネス要件に基づいてワークフローを計画する必要があります。

    説明

    ワークフローの詳細については、「ワークフローの作成と管理」をご参照ください。

ステップ 2:テーブルの作成

Data Studio のノードはソースデータをクレンジングして処理します。そのため、まずコンピュートエンジンにテーブルを作成してデータクレンジングの結果を格納し、テーブル構造を定義する必要があります。

  1. テーブルを作成します。

    1. ステップ 1 で作成したワークフローで、サブディレクトリを展開し、MaxCompute > Table を右クリックして、[Create Table] を選択します。

    2. テーブル名、エンジンインスタンス、その他の情報を設定します。

    このチュートリアルでは、次の 2 つのテーブルが作成されます。

    テーブル名

    説明

    bank_data

    生のビジネスデータを格納します。

    result_table

    クレンジング結果を格納します。

    説明
    • テーブル作成ステートメントについては、「テーブル作成ステートメント」をご参照ください。

    • MaxCompute や EMR テーブルの作成など、さまざまなエンジン用のテーブルを視覚的に作成する方法の詳細については、「テーブルの作成」をご参照ください。

  2. テーブル構造を設定します。

    テーブル編集ページに移動し、DDL モードに切り替え、DDL ステートメントを使用してテーブル構造を設定します。テーブル構造が生成されたら、[General] セクションでテーブルの [Display Name] を入力します。次に、開発環境と本番環境の両方に送信します。テーブルを送信すると、対応する環境のデータソースプロジェクトで表示できます。各環境にバインドされているデータソース情報を表示するには、「MaxCompute コンピューティングリソースのバインド」をご参照ください。

    説明
    • 作成や更新などのテーブル操作は、対応する環境に送信して初めてコンピュートエンジンで有効になります。

    • ビジネスニーズや画面の指示に基づいて、テーブル構造を視覚的に設定することもできます。テーブルを視覚的に作成する方法の詳細については、「MaxCompute テーブルの作成と使用」をご参照ください。

    bank_data テーブル構造を生成するステートメントは次のとおりです。

    CREATE TABLE IF NOT EXISTS bank_data
    (
     age             BIGINT COMMENT '年齢',
     job             STRING COMMENT '職種',
     marital         STRING COMMENT '配偶者の有無',
     education       STRING COMMENT '学歴',
     default         STRING COMMENT 'クレジットカードの有無',
     housing         STRING COMMENT '住宅ローン',
     loan            STRING COMMENT '個人ローン',
     contact         STRING COMMENT '連絡方法',
     month           STRING COMMENT '月',
     day_of_week     STRING COMMENT '曜日',
     duration        STRING COMMENT '最後の連絡の持続時間 (秒)',
     campaign        BIGINT COMMENT 'このキャンペーン中に行われた連絡の回数',
     pdays           DOUBLE COMMENT '前回のキャンペーンからの最後の連絡以降の日数',
     previous        DOUBLE COMMENT 'このキャンペーンの前に行われた連絡の回数',
     poutcome        STRING COMMENT '前回のマーケティングキャンペーンの結果',
     emp_var_rate    DOUBLE COMMENT '雇用変動率',
     cons_price_idx  DOUBLE COMMENT '消費者物価指数',
     cons_conf_idx   DOUBLE COMMENT '消費者信頼感指数',
     euribor3m       DOUBLE COMMENT 'ユーロ圏銀行間貸出金利 (3か月)',
     nr_employed     DOUBLE COMMENT '従業員数',
     y               BIGINT COMMENT 'クライアントが定期預金を申し込んだかどうか'
    );

    result_table テーブル構造を生成するステートメントは次のとおりです。

    CREATE TABLE IF NOT EXISTS result_table
    (
    education STRING COMMENT '学歴',
    num BIGINT COMMENT '人数'
    )
    PARTITIONED BY
    (
    day STRING,
    hour STRING
    );
  3. データをアップロードします。

    未加工のビジネスデータを DataWorks テーブルに保存します。 この例では、ローカルファイル banking.txt を DataWorks の bank_data テーブルにアップロードして、実際のデータ書き込みシナリオをシミュレートします。 データインポートウィザードで、まずターゲットテーブルの [bank_data] を選択し、テーブルスキーマに age、job、marital、education、default、housing などのフィールドが含まれていることを確認してから、パーティションパラメータを設定します。 次に、ローカルファイルの banking.txt をアップロードし、ファイル形式を CSV、区切り文字をカンマ、文字セットを GBK、インポート開始行を 1 に設定して、[先頭行はヘッダー] チェックボックスを選択します。 最後に、フィールドマッピング方法として [名前でマッピング] を選択し、ソースフィールドとターゲットフィールド間のマッピングが正しいことを確認してから、[データをインポート] をクリックして操作を完了します。 データのアップロードの詳細については、「ローカルデータを bank_data テーブルにアップロードする」をご参照ください。

ステップ 3:ノードの作成

業務要件に基づいて、開発に適したノードタイプを選択します。

説明

DataWorks のノードは、データ同期ノードとコンピュートノードに分類されます。一般的な開発プロセスでは、最初にバッチ同期タスクを使用して業務データベースからデータウェアハウスにデータを同期します。その後、DataWorks のコンピュートノードを使用して、ウェアハウス内のテーブルデータをクレンジングおよび処理します。

  1. ノードを作成します。

    ノードは、次の 2 つのメソッドのいずれかで作成できます:

    • メソッド 1:ナビゲーションツリーから作成

      1. ナビゲーションツリーの Workflow 配下で、ステップ 1 で作成したワークフローを見つけます。

      2. 目的のエンジンを右クリックし、Create Node から適切なノードを選択します。

    • メソッド 2:ワークフローパネルから作成

      1. ナビゲーションツリーの Workflow 配下で、ステップ 1 で作成したワークフローを見つけます。

      2. ワークフローをダブルクリックして、パネルを開きます。

      3. パネルの左側のナビゲーションペインで、目的のノードをクリックするか、キャンバスにドラッグします。

  2. ノードのエンジンインスタンス、名前、その他の設定を構成します。

    このチュートリアルでは、ステップ 2 で作成した結果テーブルと同じ名前 (result_table) の ODPS SQL ノードを作成します。

    説明

    DataWorks のノードを使用してデータ開発を行う場合は、開発ノードでデータをクレンジングし、結果を結果テーブルに格納します。ノードが結果テーブルに書き込むデータを見つけやすくするため、ノードには、出力先の結果テーブルと同じ名前を付けてください。

    Data Studio パネルの [Common Nodes] セクションで、[ODPS SQL] ノードを右側のキャンバスにドラッグして作成します。

ステップ 4:ノードの編集

ワークフローのナビゲーションツリーまたはワークフローパネルで、ステップ 3 で作成したノードを見つけます。ノードをダブルクリックしてエディターを開きます。ノードタイプに基づいて、対応するデータベースの構文を使用してビジネスロジックを記述します。

このチュートリアルでは、 result_table ノードは、 bank_data テーブルの特定のパーティションから result_table テーブルの対応するパーティションにデータを書き込みます。ターゲットパーティションは、変数 dayhour を使用して定義されます。

説明
  • コード開発中に、スケジューリングコンテキストでパラメーターを動的に置き換える必要がある場合は、 ${your_variable_name} フォーマットを使用してコード内で変数を定義できます。その後、ステップ 5 でスケジュール設定を構成するときに、この変数に値を割り当てることができます。

  • スケジューリングパラメーターの詳細については、「スケジューリングパラメーターでサポートされているフォーマット」をご参照ください。

  • さまざまなノードタイプの開発構文の詳細については、「ノードの作成と使用」をご参照ください。

--@exclude_output=xc_DPE_E2.result_table
--@exclude_input=bank_data
--odps sql
--***********************************************************--
--作成者:xxx
--作成日時:2022-08-11 14:33:23
--***********************************************************--
INSERT OVERWRITE TABLE result_table partition (day='${day}', hour='${hour}')
SELECT education
    , COUNT(marital) AS num
FROM bank_data
WHERE  day='${day}' and hour='${hour}'
GROUP BY education;

次のコードは参考用です。

INSERT OVERWRITE TABLE result_table partition (day='${day}', hour='${hour}')
SELECT education
, COUNT(marital) AS num
FROM bank_data
WHERE  day='${day}' and hour='${hour}'
GROUP BY education;

ステップ 5: スケジュール設定の構成

ノードを定期的に実行するために、スケジューリングプロパティを構成します。ノードエディターページで、右側のナビゲーションペインの Scheduling をクリックし、ビジネス要件に基づいてプロパティを構成します。

パラメーター

説明

基本プロパティ

DataWorks は、ノードの名前、ID、タイプ、所有者を自動的に表示します。これらのプロパティは別途設定する必要はありません。

説明
  • 所有者は、デフォルトでは現在のユーザーです。必要に応じて変更できます。所有者として選択できるのは、現在のワークスペースのメンバーのみです。

  • ノードを送信すると、DataWorks によって ID が自動的に生成されます。

パラメーター

ノードのスケジューリングに使用するパラメーターを定義します。

DataWorks には、タスクのスケジューリング時に動的にパラメーターを割り当てるための、組み込みパラメーターとカスタムパラメーターが用意されています。ステップ 4 でコード内に変数を定義した場合は、ここでその変数に値を割り当てることができます。

このチュートリアルでは、ステップ 4 の変数に値を割り当て、前日 (営業日) の bank_data テーブルの時間単位のデータを、result_table テーブルの対応する時間単位のパーティションに書き込みます。

  • ${yyyymmdd}day 変数に代入します。

  • hour 変数に $[hh24] を割り当てます。

[スケジューリング] ペインの [パラメーター] セクションでこれらの設定を構成すると、スケジュール実行中に dayhour に割り当てられた値が、SQL コード内の ${day}${hour} 変数を自動的に置き換えます。

時間プロパティ

時間プロパティは、ノードの実行方法と実行タイミングを定義します。これらの設定を使用して、定期的なインスタンス生成、スケジューリングサイクル、実行時間、再実行、およびタスクを自動終了するためのタイムアウト期間などを構成します。

説明
  • ノードを送信する前に、ノードの Rerun attribute を構成する必要があります。

  • ノードが上流ノードより前に実行されるようにスケジュールされている場合でも、上流ノードが正常に実行されるまで開始されません。

このチュートリアルでは、result_table ノードは 00:00 に実行を開始し、1時間ごとにスケジュールされるように設定されています。これは、1時間ごとに、前日 (ビジネス日付) の bank_data テーブルのデータを、result_table テーブルの対応する時間パーティションに書き込むことを意味します。[スケジューリング] ペインの [時間プロパティ] セクションで、[インスタンス生成][デプロイ直後] に、[スケジュールタイプ][通常スケジューリング] に、[繰り返し][時間] に設定します。詳細な繰り返し設定では、開始時刻を 00:00 に、時間間隔を 1 時間に、終了時刻を 23:59 に設定します。対応する cron 式は 00 00 00-23/1 * * ? です。

リソースプロパティ

タスクを本番環境にデプロイしてスケジューリングする際に使用するスケジューリングリソースグループを構成します。このチュートリアルでは、DataWorks のアクティベーション時に提供されるデフォルトのサーバーレスリソースグループを使用します。詳細については、「サーバーレスリソースグループの使用」をご参照ください。

依存関係

ノードのスケジューリングにおける上流および下流の依存関係を定義します。データリネージに基づいて依存関係を設定します。これにより、現在のノードは、必要なデータを生成する上流タスクが正常に完了した後にのみ実行され、上流テーブルのデータを正しくクエリできるようになります。

説明
  • ノードが select ステートメントを使用して、DataWorks の定期実行ノードで生成されていないテーブルデータをクエリする場合、Auto Parse をいいえに設定し、ワークスペースのルートノードを使用して現在のノードの実行をスケジュールできます。

  • 現在のノードが select 文を使用して別のタスクによって生成されたテーブルデータをクエリする場合、上流ノードが現在のノードをトリガーして実行されるように、次のいずれかの方法で (データを生成する) 上流ノードへの依存関係を設定します:

    • 上流ノードが現在のワークフローまたはワークスペースにない場合: 現在のノードの Parent Nodes セクションで、上流ノードの [出力名] を入力します。

    • 上流ノードが現在のワークフロー内にある場合: ワークフローパネル上でノード間に接続線をドラッグして、依存関係を設定します。

このチュートリアルでは、現在のワークフロー外のタスクが bank_data テーブルを生成し、そのテーブルを result_table ノードがクエリすると仮定します。この場合、result_table ノードの上流の依存関係としてワークスペースのルートノードを設定する必要があります。この設定により、ルートノードは result_table ノードの実行をトリガーします。

(オプション) ノードコンテキスト

上流ノードと下流ノード間でパラメーターを渡す方法を定義します。下流ノードは、この機能を使用して上流ノードから値を取得できます。

説明

この機能は通常、代入ノードまたは代入パラメーターと組み合わせて使用されます。

ステップ 6:コードのデバッグ

次の方法でコードのロジックをデバッグし、正しく動作することを確認できます。

方法

説明

推奨

コード行:クイック実行

選択したコードスニペットをすばやく実行します。

コードの一部をすばやく実行する必要がある場合は、この方法を使用します。

ツールバー:[実行] (Run)

テスト実行用に、変数に定数値を割り当てます。

説明

新しいノードで初めて [実行] をクリックする場合は、ダイアログボックスでコード内の変数に定数値を手動で割り当てる必要があります。この割り当ては保存され、以降の実行では繰り返す必要はありません。

コード全体を頻繁にデバッグする必要がある場合は、この方法を使用します。

ツールバー:[詳細実行] (Advanced Run)

テスト実行のたびに、変数に定数値を割り当てる必要があります。

テスト実行用の変数の割り当てを変更する必要がある場合は、この方法を使用します。

このチュートリアルでは、[詳細実行] を使用して 2022.09.07 14:00 の実行結果をテストします。[パラメーター] ダイアログボックスで、[スケジューリングリソースグループ](例:パブリックスケジューリングリソースグループ)を選択します。[カスタムパラメーター] セクションで、パラメーター値(例: day=20220907hour=14)を設定します。[OK] をクリックしてコードを実行します。実行ログに、実行が成功したことが表示されます。

ステップ 7:ノードの保存と提出

ノードを設定してテストした後、設定を保存し、ノードを開発環境に提出する必要があります。

説明

ステップ 5 で Rerun attributeParent Nodes を設定した後にのみ、ノードを送信できます。

  1. ツールバーの 保存 アイコンをクリックして、ノード設定を保存します。

  2. ツールバーの 提交 アイコンをクリックして、ノードを開発環境に提出します。

ステップ 8:スモークテストの実行

本番タスクを効率的に実行し、コンピューティングリソースの無駄を避けるために、タスクをデプロイする前にスモークテストを実行します。スモークテストは開発環境で実行されるため、まずノードをその環境に提出する必要があります。提出後:

  1. ツールバーの 冒烟测试 アイコンをクリックし、スモークテスト ダイアログボックスで業務日付を設定します。

  2. スモークテストが完了したら、ツールバーの 查看冒烟测试结果 アイコンをクリックして、テスト結果を表示します。

このチュートリアルでは、スケジューリングパラメーターの設定が期待通りかどうかをテストします。result_table ノードは、00:00 から 23:59 まで 1 時間ごとに実行されるようにスケジュールされています。したがって、次の図の設定では、スケジュール実行時刻がそれぞれ 00:0001:00 の 2 つの時間単位のインスタンスが生成されます。

説明
  • インスタンスとは、周期的タスクがスケジュールに従って実行されるときに生成されるタスクのスナップショットです。

  • result_table ノードは時間単位のタスクとして設定されているため、スモークテストの業務日付を設定するだけでなく、実行するインスタンスの時間範囲も選択する必要があります。

  • スモークテストの詳細については、「スモークテストの実行」をご参照ください。

上部のツールバーにある [スモークテスト] (☑) アイコンをクリックします。表示されるスモークテスト パネルで、[業務日付] (例: 2022-09-01)、[開始時刻] (00:00)、および [終了時刻] (01:00) を設定します。

ステップ9:タスクのデプロイ

基本モードのワークスペースでは、タスクは提出後に定期的にスケジュールされます。標準モードのワークスペースでは、提出されたタスクは「デプロイ待ち」の状態になります。その後、タスクを本番環境にデプロイして、定期的なスケジューリングを有効にする必要があります。

説明
  • DataWorks は、本番環境にデプロイされたタスクの自動スケジューリングのみをサポートします。スモークテストが成功したら、タスクを本番環境のスケジューリングシステムにデプロイして、定期的なスケジューリングを有効にする必要があります。

  • ワークスペースモード間の違いの詳細については、「ワークスペースモード間の違い」をご参照ください。

標準モードのワークスペースでは、Data Studio で提出したすべての変更 (ノード、リソース、関数の作成、更新、削除など) は、タスクデプロイメントページに送信され、デプロイ待ちになります。これらの変更を適用するには、タスクデプロイメント > Create Deploy Task に移動し、デプロイメントパッケージを作成して、本番環境にリリースする必要があります。変更は、デプロイメントが成功した後にのみ有効になります。詳細については、「タスクのデプロイ」をご参照ください。

デプロイメントプロセスについて、次の表で説明します。

デプロイメントトピック

説明

デプロイメントプロセスの制御

ロール権限とプロセス制御により、デプロイメント操作が制約されます。デプロイメントを実行した後、デプロイメントパッケージのステータスが「成功」であることを確認してください。

説明
  • デプロイメント後、[Deployment Packages] ページでデプロイメントパッケージのステータスを確認してください。

  • 開発者はデプロイメントパッケージの作成のみを行うことができます。実際のデプロイメントには運用保守権限が必要です。

デプロイメント有効化時刻の制御

日次インスタンス生成ウィンドウ (22:0024:00) 中に実行されたデプロイメントの場合、変更は明後日以降にスケジュールされたインスタンスにのみ適用されます。

説明

この制限は、[Next Day] と [Immediately After Deployment] の両方のインスタンス生成モードに影響します。これらのモードの詳細については、「インスタンス生成モード」をご参照ください。

次のステップ

Operation Center > 定期タスクの運用保守に移動して、本番環境にデプロイされたバッチスケジューリングタスクを表示し、関連する運用保守操作を実行できます。 詳細については、「定期タスクの基本的な運用保守」をご参照ください。