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

DataWorks:スクリプトテンプレートの作成と使用

最終更新日:Jul 25, 2026

スクリプトテンプレートは、入出力パラメーターを含む、再利用可能な SQL コードプロセスのテンプレートです。 スクリプトテンプレートを使用すると、フィルター処理、結合、集約などの操作を実行してソーステーブルのデータを処理し、出力テーブルを生成できます。 このトピックでは、スクリプトテンプレートの概要と、その作成方法および使用方法について説明します。

スクリプトテンプレートの概要

はじめに

多くのデータ処理シナリオでは、入出力テーブルの名前のみが異なり、スキーマは同一または互換性がある類似の SQL コードを記述することがあります。 このような冗長な作業を避けるため、このロジックをスクリプトテンプレートにカプセル化できます。 変数となるテーブル名を入出力パラメーターとして定義することで、異なるデータソースに対して同じ SQL コードを再利用できます。

SQL スニペットノードを作成した後、他の SQL ノードと同様にデプロイおよびスケジュールできます。 このアプローチにより、コードの再利用が促進され、開発効率が大幅に向上します。

権限

スクリプトテンプレートを作成して使用するには、DataWorks ワークスペースで 開発者 ロールが必要です。 ロールの割り当て方法の詳細については、「ワークスペースメンバーの追加とロールの割り当て」をご参照ください。

制限事項

  • SQL スニペットノード機能は、DataWorks Standard Edition 以降でのみ利用可能です。 詳細については、「DataWorks のエディションと機能」をご参照ください。

  • 現在のワークスペースのメンバーによって作成されたスクリプトテンプレートは、コンポーネント タブに表示されます。

  • テナントメンバーによって作成されたスクリプトテンプレートは、共通コンポーネント タブに表示されます。

スクリプトテンプレートの種類

スクリプトテンプレートは、ワークスペースレベルと公開の 2 種類に分類されます。 スクリプトテンプレートを作成する開発者は、その種類を定義できます。

  • ワークスペースレベルのスクリプトテンプレート:ワークスペースレベルのスクリプトテンプレートが公開されると、同じ DataWorks ワークスペース内のユーザーのみが使用できます。 この種類のテンプレートを使用するには、ワークスペースのメンバーである必要があります。 詳細については、「ワークスペースメンバーの追加とロールの割り当て」をご参照ください。

  • 公開スクリプトテンプレート:開発者は 公開スクリプトテンプレート 機能を使用して、汎用的なスクリプトテンプレートをテナント全体で利用可能にできます。 公開されると、そのスクリプトテンプレートはテナント内のすべてのユーザーが利用できるようになります。

ワークフロー

DataWorks で作成された コンポーネント は、SQL スクリプトテンプレートノード と一緒に使用する必要があります。 ワークフローは次のとおりです:

  1. スクリプトテンプレートの定義

    DataStudio の コンポーネントの管理 ペインで、開発者は SQL コードプロセスとその入出力パラメーターを定義します。 この抽象的な SQL プロセスは、指定された入力テーブルを入力パラメーターとして受け取り、それらを処理して出力テーブルを生成します。 コード内では、入出力パラメーターは @@{ParameterName} のフォーマットを使用します。

    • 次の種類の入力パラメーターがサポートされています:

      • テーブル:テーブルベースの入力に使用します。

      • 文字列:フィルター条件などの変数値として SQL に渡すために使用します。

    • 実際には、出力パラメーターはテーブル型として設定する必要があります。

  2. スクリプトテンプレートの参照

    データ開発 ページで、ユーザーは SQL スニペットノードを作成し、必要なスクリプトテンプレートを参照して、入出力パラメーターを設定してコードを再利用します。

スクリプトテンプレートの定義

スニペットページへの移動

  1. データ開発 ページに移動します。

    DataWorks コンソールにログインします。 対象リージョンで、左側のナビゲーションウィンドウの データ開発と О&М > データ開発 をクリックします。 ドロップダウンリストからワークスペースを選択し、移動 データ開発 をクリックします。

  2. 左側のナビゲーションウィンドウで コンポーネントの管理 をクリックして、スニペット管理ページに移動します。

    説明

    左側のナビゲーションウィンドウに コンポーネントの管理 が表示されない場合は、左下隅の 设置 アイコンをクリックし、[モジュール管理] セクションで追加します。

スクリプトテンプレートの作成と設定

このセクションでは、開発者が コンポーネントの管理 でスクリプトテンプレートを作成し、特定の SQL プロセスを再利用可能なテンプレートとして抽象化する方法について説明します。 スクリプトテンプレートは通常、SQL コードプロセス、入力パラメーター、および出力パラメーターで構成されます。 SQL コードプロセスは、テンプレートの機能の実装コードを定義します。 このプロセス内で、@@{VariableName} 形式を使用して、入力テーブル、文字列、および出力テーブルのプレースホルダーを定義します。 これらのプレースホルダーは、テンプレートの入出力パラメーターとして機能し、SQL コードの再利用を可能にします。

説明

スクリプトテンプレートには、複数の入出力パラメーターを設定できます。

たとえば、プロセス本体のコードは INSERT OVERWRITE TABLE @@{my_output} SELECT ... FROM @@{my_input} WHERE col1 = @@{my_input_parameter1} AND col2 = @@{my_input_parameter2} となります。ここで、@@{my_output} は出力テーブルパラメーター、@@{my_input} は入力テーブルパラメーター、@@{my_input_parameter1} と @@{my_input_parameter2} は入力文字列パラメーターです。

ステップ 1:スクリプトテンプレートの作成

スニペットページでは、次のいずれかの方法でスクリプトテンプレートを作成できます:

  • 方法 1:左側の [スニペット] パネルで、[スニペット] ノードを右クリックし、[新規作成] > [スニペット] を選択します。

  • 方法 2:[スニペット] パネルの上部にあるツールバーで、新規作成アイコンをクリックし、[新規作成] > [スニペット] を選択します。

説明
  • 現在のワークスペースのメンバーによって作成されたスクリプトテンプレートは、コンポーネント タブに表示されます。

  • テナントメンバーによって作成されたスクリプトテンプレートは、共通コンポーネント タブに表示されます。

ステップ 2:スクリプトテンプレートの設定

  1. SQL コードプロセスの設定

    SQL コードプロセスには、スクリプトテンプレートの実装コードが含まれています。 抽象的な SQL コードを記述し、@@{ParameterName} 形式を使用して入出力パラメーターを導入することで、指定された入力テーブルを処理し、価値のある出力テーブルを生成できます。 後でテンプレートを使用する際に、異なる入出力パラメーターを設定して、このテンプレートから有効な SQL コードを生成します。

  2. 入力パラメーターの設定

    SQL コードプロセスの入力パラメーターを定義します。 サポートされている型は [テーブル] と [文字列] です。

    • [テーブル]:テーブルベースの入力に使用します。

      次の表に、この型の主な設定を説明します。

      パラメーター

      説明

      例

      パラメータ定義

      列名、データ型、コメントなど、入力テーブルに期待されるスキーマを定義します。 実行時エラーを防ぐため、提供するテーブルは、ここで定義されたものと同じ列数と互換性のあるデータ型を持つ必要があります。

      説明

      この定義はガイドラインとして機能し、即時または強制的なチェックをトリガーするものではありません。

      推奨されるフォーマットは次のとおりです:

      Column1Name Column1Type 'Column1Comment'
      Column2Name Column2Type 'Column2Comment'
      ...
      ColumnNName ColumnNType 'ColumnNComment'

      例:

      area_id string ‘エリア ID’ 
      city_id string ‘都市 ID’ 
      order_amt double ‘注文金額’ 
    • [文字列]:フィルター条件などの変数値として SQL に渡すために使用します。

      次の表に、この型の主な設定を説明します。

      項目

      説明

      デフォルト値

      上書きされない限り、この値が自動的に使用されます。

      シナリオ例

      • シナリオ 1:出力テーブルに各地域のトップ N 都市の売上を表示する必要がある場合、N を入力パラメーターとして設定できます。 N の値は、文字列型のパラメーターを使用して制御できます。

      • シナリオ 2:出力テーブルに特定の省の総売上を表示する必要がある場合、省の文字列パラメーターを入力パラメーターとして設定できます。 異なる省を指定することで、対応する売上データを取得できます。

  3. 出力パラメーターの設定

    SQL コードプロセスの出力パラメーターを定義します。これは、スクリプトテンプレートの最終的な出力テーブルを表します。 他のユーザーを支援するために、パラメーター設定で出力テーブルのスキーマを参照用に指定できます。

    次の表に、出力パラメーターの主な設定を説明します:

    パラメーター

    説明

    例

    パラメータ定義

    列名、データ型、コメントなど、出力テーブルに期待されるスキーマを定義します。 実行時エラーを防ぐため、提供するテーブルは、ここで定義されたものと同じ列数と互換性のあるデータ型を持つ必要があります。

    説明

    この定義はガイドラインとして機能し、即時または強制的なチェックをトリガーするものではありません。

    推奨されるフォーマットは次のとおりです:

    Column1Name Column1Type 'Column1Comment'
    Column2Name Column2Type 'Column2Comment'
    ...
    ColumnNName ColumnNType 'ColumnNComment'

    さらに、ランクや総収益など、目的の処理結果に基づいて出力パラメーター定義に集計列を追加できます。

    例:

    area_id string ‘エリア ID’ 
    city_id string ‘都市 ID’ 
    order_amt double ‘注文金額’ 
    rank bigint ‘ランク’

ステップ 3:スクリプトテンプレートの保存とコミット

保存 アイコンをクリックしてスクリプトテンプレートを保存し、提交 アイコンをクリックしてコミットします。 スクリプトテンプレートが作成されると、SQL スニペットノードでそれを参照して、ビジネスに必要なテーブルを迅速に生成できます。 詳細については、「スクリプトテンプレートの参照」をご参照ください。

スクリプトテンプレートの参照

前提条件

スクリプトテンプレートの参照

SQL スニペットノードの設定タブで、スクリプトテンプレートを参照します。 この例では、[get_top_n (V1)] スクリプトテンプレートを選択し、右側の [パラメーター設定] パネルでパラメーター値を設定します:

  • 入力パラメーター [myinputtable]: 型はテーブル、値は company_sales_record です。

  • 入力パラメーター [topn]:型は文字列、値は 10

  • 出力パラメーター [myoutput]:型はテーブル、値は company_sales_top_n

  1. 使用するスクリプトテンプレートを選択します。

    利用可能なスクリプトテンプレートがない場合は、作成します。 詳細については、「スクリプトテンプレートの定義」をご参照ください。

    • 選択したスクリプトテンプレートの新しいバージョンが存在する場合、コードバージョンの更新 をクリックして最新バージョンを使用できます。

    • コンポーネントを開く をクリックして、スクリプトテンプレートの詳細を表示します。

  2. ユースケースに基づいて、スクリプトテンプレートのパラメーター値を設定します。

次のステップ

ノードの開発が完了したら、次の操作を実行できます:

  • スケジューリングプロパティの設定:ノードが定期的に実行される必要がある場合は、再実行設定や依存関係などのスケジューリングプロパティを設定します。 詳細については、「タスクスケジューリング設定の概要」をご参照ください。

  • ノードのデバッグの実行:ノードを実行してコードをテストし、ロジックを検証します。 詳細については、「ノードのデバッグプロセス」をご参照ください。

  • タスクのデプロイ:開発が完了したら、タスクをデプロイします。 デプロイされると、ノードはスケジューリング設定に従って定期的に実行されます。 詳細については、「タスクのデプロイ」をご参照ください。

スクリプトテンプレートの管理

公開と使用状況の表示

必要に応じて、スクリプトテンプレートを公開したり、その使用履歴を表示したりできます。

  • スニペットの公開:この機能は、ワークスペースレベルのスクリプトテンプレートを公開スクリプトテンプレートに昇格させ、テナント内のすべてのユーザーが利用できるようにします。 デフォルトでは、新しいスクリプトテンプレートはそのワークスペース内でのみ利用可能です。

  • スニペットノード:現在のスクリプトテンプレートを使用しているノードを確認できます。 これにより、テンプレートに変更を加える前に影響を評価できます。

スクリプトテンプレートのアップグレード

開発者向けのアップグレードプロセス

開発者は、必要に応じてスクリプトテンプレートのコードとパラメーター設定を編集できます。 変更を保存してコミットすると、テンプレートは新しいバージョンにアップグレードされます。 バージョン履歴で各バージョンの詳細を表示できます。

スクリプトテンプレートエディターで、次のパラメーター化された SQL コードを記述します。 @@{} を使用して入出力パラメーターを参照し、${} を使用してスケジューリングパラメーターを参照します:

insert overwrite table @@{my_output_table}
partition (ds='${bizdate}')
select
    *
from
    @@{my_input_table}
where   category in ('@@{my_input_parameter1}', '@@{my_input_parameter2}')
  AND   substr(pt, 1, 8) in ('${bizdate}')
;

バージョンアップグレードがユーザーに与える影響

スクリプトテンプレートがアップグレードされた後、SQL スニペットノードがそれを参照している場合、最新バージョンを使用するかどうかを選択できます。 使用しない場合は、古いバージョンを引き続き使用できます。 アップグレードを選択した場合は、新しいパラメーター設定が SQL スニペットノードでまだ有効であることを確認し、新しいバージョンの説明に基づいて必要な調整を行う必要があります。 編集後、ノードをコミットしてデプロイします。 デプロイプロセスは、通常の SQL ノードと同じです。 アップグレードするには、次の手順を実行します:

  1. コードエディターの上部にあるスクリプトテンプレートセレクターで、テンプレートのバージョン (例:[スニペット (V1)]) を選択し、[コードバージョンの更新] をクリックして新しいバージョンを使用する必要があるかどうかを判断します。

  2. 右側の [パラメーター設定] パネルで、[入力パラメーター] (例:パラメーター名 table1、型 文字列) と [出力パラメーター] (例:パラメーター名 table2、型 文字列) に適切な値を設定します。

アップグレード例

開発者 C がスクリプトテンプレートのバージョン V1.0 を作成し、ユーザー A が使用を開始します。 その後、開発者 C はテンプレートを V2.0 にアップグレードします。 ノードを使用する際、ユーザー A は新しいバージョン V2.0 が利用可能であることに気づきます。 ユーザー A はテンプレートを開き、異なるバージョンの詳細を表示して比較できます。 新しいバージョンがより良いビジネス結果をもたらす場合、ユーザー A はノードを更新してスクリプトテンプレートの最新バージョンを使用できます。

リファレンス

UI 機能

機能

説明

保存

スクリプトテンプレートの現在の設定を保存します。

ロック横取りの編集

他のユーザーによってロックされているノードの編集権限を取得できます。

コミット

現在のスクリプトテンプレートを開発環境に送信します。

公開スクリプトテンプレート

汎用的なスクリプトテンプレートをテナント全体に公開し、テナント内のすべてのユーザーが表示および使用できるようにします。

入出力パラメーターの解析

現在のコードから入出力パラメーターを解析します。

実行

開発環境でスクリプトテンプレートを実行します。

実行の停止

実行中のスクリプトテンプレートを停止します。

初期化

SQL キーワードに基づいてスクリプトテンプレートのコードをフォーマットします。

パラメータ設定

スクリプトテンプレート情報、入力パラメーター、および出力パラメーターを設定します。

バージョン

スクリプトテンプレートのコミット履歴を表示します。

リファレンスレコード

このスクリプトテンプレートを使用するすべてのノードを一覧表示します。

ベストプラクティス

前提条件

  • SQL スニペットノードが作成されていること。 詳細については、「MaxCompute ノードの作成と管理」をご参照ください。

  • [ODPS SQL] ノードで入力テーブルと出力テーブルを作成します。

スクリプトテンプレートの定義

まず、スクリプトテンプレートを定義する の説明に従って、get_top_n という名前のスクリプトテンプレートを作成します。構成の詳細は以下のとおりです。

  • パラメーター設定

    カテゴリ

    パラメーター名

    型

    説明

    パラメーター定義

    入力パラメーター

    myinputtable

    テーブル

    指定された売上詳細データテーブル。

    area_id string
    city_id string
    order_amt double
    rank bigint

    topn

    文字列

    取得する売上上位ランキングの数。

    N/A

    出力パラメーター

    myoutput

    テーブル

    各地域のトップ N 都市ランキングを格納する出力テーブル。

    area_id string
    city_id string
    order_amt double
    rank bigint
  • SQL コードプロセスの定義

    INSERT OVERWRITE TABLE  @@{myoutput}  PARTITION (pt='${bizdate}')
     SELECT r3.area_id,
     r3.city_id,
     r3.order_amt,
     r3.rank
    from (
    SELECT
       area_id,
       city_id,
       rank,
       order_amt_1505468133993_sum as order_amt ,
       order_number_1505468133991_sum,
       profit_amt_1505468134000_sum
    FROM
       (SELECT
       area_id,
       city_id,
       ROW_NUMBER() OVER (PARTITION BY r1.area_id ORDER BY r1.order_amt_1505468133993_sum DESC) AS rank,
       order_amt_1505468133993_sum,
       order_number_1505468133991_sum,
       profit_amt_1505468134000_sum
    FROM
       (SELECT
       area AS area_id,
       city AS city_id,
       SUM(order_amt) AS order_amt_1505468133993_sum,
       SUM(order_number) AS order_number_1505468133991_sum,
       SUM(profit_amt) AS profit_amt_1505468134000_sum
    FROM
      @@{myinputtable}
    WHERE
       SUBSTR(pt, 1, 8) IN ( '${bizdate}' )
    GROUP BY
       area,
       city )
       r1 ) r2
    WHERE
       r2.rank >= 1 AND r2.rank <= @@{topn}
    ORDER BY
       area_id,
       rank limit 10000) r3;

スクリプトテンプレートの使用

xc_ref_snippet_get_top_n という名前の SQL スニペットノードを作成し、ステップ 1 で作成した get_top_n スクリプトテンプレートを参照して、そのパラメーターを設定します。 詳細については、「スクリプトテンプレートの参照」をご参照ください。

コードコンポーネントエディターで、[get_top_n (V1)] スクリプトテンプレートを選択します。 左側のコードエディターの SQL ロジックは、INSERT OVERWRITE TABLE @@{myoutput} を使用して結果を出力テーブルに書き込み、ROW_NUMBER() OVER (PARTITION BY ...) ウィンドウ関数を使用して各地域内の都市を売上順にランク付けし、SUM(order_amt) を使用して総売上を計算します。 右側の [パラメーター設定] パネルで入出力パラメーターを設定します。 パラメーターは次のように設定されます:

  • 入力パラメーター myinputtable:データソースとして company_sales_record という名前の入力テーブルを指定します。 入力テーブルのスキーマは次のとおりです:

    company_sales_record

    CREATE TABLE IF NOT EXISTS company_sales_record
    (
        order_id         STRING COMMENT '注文 ID (プライマリキー)',
        report_date      STRING COMMENT '注文日',
        customer_name    STRING COMMENT '顧客名',
        order_level      STRING COMMENT '注文レベル',
        order_number     DOUBLE COMMENT '注文数量',
        order_amt        DOUBLE COMMENT '注文金額',
        back_point       DOUBLE COMMENT '割引ポイント',
        shipping_type    STRING COMMENT '配送方法',
        profit_amt       DOUBLE COMMENT '利益額',
        price            DOUBLE COMMENT '単価',
        shipping_cost    DOUBLE COMMENT '配送料',
        area             STRING COMMENT 'エリア',
        province         STRING COMMENT '省',
        city             STRING COMMENT '市',
        product_type     STRING COMMENT '製品タイプ',
        product_sub_type STRING COMMENT '製品サブタイプ',
        product_name     STRING COMMENT '製品名',
        product_box      STRING COMMENT '製品パッケージ',
        shipping_date    STRING COMMENT '出荷日'
    ) 
    COMMENT '売上詳細情報'
    PARTITIONED BY
    (
        pt               STRING
    )
    LIFECYCLE 365;
  • 入力パラメーター topn:売上金額でソートされた、各地域で取得する上位ランクの都市の数を指定します。 この例では、値は 10 です。

  • 出力パラメーター myoutput:処理された出力用のテーブルの名前 company_sales_top_n を指定します。 出力テーブルのスキーマは次のとおりです:

    company_sales_top_n

    CREATE TABLE IF NOT EXISTS company_sales_top_n
    ( 
    area STRING COMMENT 'エリア', 
    city STRING COMMENT '市', 
    sales_amount DOUBLE COMMENT '売上金額', 
    rank BIGINT COMMENT 'ランク'
    )
    COMMENT '企業売上ランキング'
    PARTITIONED BY (pt STRING COMMENT '')
    LIFECYCLE 365;