このトピックでは、スクリプトテンプレートの定義と構成、およびスクリプトテンプレートの作成方法について説明します。

定義

スクリプトテンプレートは、複数の入力および出力パラメーターを含む SQL コードプロセスを定義します。 各 SQL コードプロセスは、1 つ以上のソーステーブルを参照します。 ソーステーブルのデータをフィルタリングし、ソーステーブルを結合し、それらを集約して、新しい業務に必要な結果テーブルを生成できます。

利点

実際の業務では、SQL コードプロセスの多くが類似しています。 これらのプロセス内の入力テーブルと出力テーブルは、同じまたは互換性のある構造になっていますが、名前が異なります。 この場合、開発者は SQL コードプロセスをスクリプトテンプレートとして抽象化し、SQL コードを再利用できます。 スクリプトテンプレートは、入力テーブルから入力パラメーターを抽出し、出力テーブルに出力パラメーターを生成します。

SQL スクリプトテンプレートを作成するには、業務プロセスに従ってスクリプトテンプレートリストからスクリプトテンプレートを選択し、選択したスクリプトテンプレート用に業務内の特定の入力および出力テーブルを構成します。これは、コードを繰り返しコピーすることなく実施できます。 これにより開発効率を大幅に向上させ、繰り返し開発を行うことを防ぐことができます。 作成された SQL スクリプトテンプレートは、他の SQL ノードと同じ方法で展開および実行できます。

構成

関数と同様に、スクリプトテンプレートは入力パラメーター、出力パラメーター、および SQL コードプロセスで構成されます。

入力パラメーター

スクリプトテンプレートの入力パラメーターには、パラメーター名、パラメータータイプ、パラメーターの説明、パラメーター定義などのプロパティがあります。 パラメーターのタイプは、テーブルまたは文字列です。
  • テーブルタイプのパラメーターは、SQL コードプロセスで参照されるテーブルを指定します。 スクリプトテンプレートを使用する場合、特定の業務に必要な入力テーブルを指定できます。
  • 文字列タイプのパラメーターは、SQL コードプロセスでの変数制御パラメーターを指定します。 たとえば、SQL コードプロセスの結果テーブルの各地域の上位 N 都市の売上高のみをエクスポートするには、文字列型パラメーターを使用して N の値を指定します。

    SQL コードプロセスの結果テーブルで都道府県の総売上高をエクスポートするには、文字列型パラメーターを設定して都道府県を指定し、指定した都道府県の売上データを取得します。

  • パラメーターの説明は、SQL コードプロセスのパラメーターの役割を指定します。
  • パラメーター定義は、テーブル構造のテキスト定義で、これはテーブルタイプのパラメーターに対してのみ必要です。 テーブルタイプのパラメーターのパラメーター定義を指定する場合、テーブルタイプパラメーターで定義されたものと同じフィールド名と互換性のあるタイプを含む入力テーブルを提供して、SQL コードプロセスが正しく実行できるようにする必要があります。 提供されていない場合、指定されたフィールド名が入力テーブルで見つからないため、SQL コードプロセスの実行時にエラーが返されます。 入力テーブルには、テーブルタイプパラメーターで定義されたフィールド名とタイプが含まれている必要があります。 入力テーブルには他のフィールドも含めることができます。 入力テーブルのフィールド名とタイプは、任意の順序で指定できます。 パラメーター定義は参考情報です。
  • パラメーター定義は次の形式で入力することを推奨します。
    Name of field 1 Type of field 1 Description of field 1 
    Name of field 2 Type of field 2 Description of field 2 
    Name of field n Type of field n Description of field n
    例:
    area_id string 'Region ID' 
    city_id string 'City ID' 
    order_amt double 'Order amount'

出力パラメーター

  • スクリプトテンプレートの出力パラメーターには、パラメーター名、パラメータータイプ、パラメーターの説明、パラメーター定義などのプロパティがあります。 パラメータータイプは、テーブルのみです。 文字列タイプの出力パラメーターは論理的な意味を持ちません。
  • テーブルタイプのパラメーターは、SQL コードプロセスから生成されるテーブルを指定します。 スクリプトテンプレートを使用する場合は、特定の業務に対して SQL コードプロセスが生成する結果テーブルを指定できます。
  • パラメーターの説明は、SQL コードプロセスのパラメーターの役割を指定します。
  • パラメーターの定義は、テーブル構造のテキスト定義です。 テーブルタイプのパラメーターのパラメーター定義を指定する場合、テーブルタイプパラメーターで定義されたものと同じ数のフィールドと互換性のあるタイプを含む出力テーブルを指定して、SQL コードプロセスが正しく実行できるようにする必要があります。 指定されていない場合、フィールド数が一致しない、またはタイプに互換性がないため、SQL コードプロセスの実行時にエラーが返されます。 出力テーブルのフィールド名は、テーブルタイプパラメーターで定義された名前と一致させる必要はありません。 パラメーター定義は参考情報です。
  • パラメーター定義は次の形式で入力することを推奨します。
    Name of field 1 Type of field 1 Description of field 1 
    Name of field 2 Type of field 2 Description of field 2 
    Name of field n Type of field n Description of field n
    例:
    area_id string 'Region ID' 
    city_id string 'City ID' 
    order_amt double 'Order amount' 
    rank bigint 'Ranking'

SQL コードプロセス

SQL コードプロセスのパラメーターは、@@{Parameter name} の形式で参照されます。

抽象 SQL コードプロセスを含めることにより、スクリプトテンプレートは入力パラメーターに基づいて入力テーブルを制御および処理し、業務に必要な出力テーブルを生成します。

SQL コードプロセスを開発する際は必要に応じて設定を行い、プロセス中に正しい SQL コードを生成し実行するために、コード内の入力パラメーターと出力パラメーターを適切に使用する必要があります。

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

  1. DataWorks コンソールにログインします。 左側のナビゲーションペインで、[ワークスペース] をクリックします。 [ワークスペース] ページでテンプレートを作成するワークスペースを確認し、[操作] 列の [データ分析] をクリックします。
  2. 左側のナビゲーションペインで [スニペット] をクリックします。
  3. 作成 アイコンにポインターを合わせ、[作成] > [スニペット] をクリックします。
  4. [スニペットを作成] ダイアログボックスで、[スニペット名][説明][ロケーション] を設定します。
  5. [送信] をクリックします。

ソーステーブルの構造

下表に、販売データを含むソース MySQL テーブルの構造を説明します。
フィールド タイプ 説明
order_id varchar 注文 ID
report_date datetime 注文日
customer_name varchar 顧客名
order_level varchar 注文の優先度
order_number double 注文数
order_amt double 注文金額
back_point double 割引
shipping_type varchar 配送方法
profit_amt double 利益額
price double 単価
shipping_cost double 配送料
area varchar 地域
province varchar 都道府県
city varchar 市町村
product_type varchar 製品のタイプ
product_sub_type varchar 製品のサブタイプ
product_name varchar 製品名
product_box varchar 製品の梱包
shipping_date datetime 配送日

業務への影響

スクリプトテンプレート名 ::get_top_n

このスクリプトテンプレートは、指定された販売データテーブルをテーブルタイプの入力パラメーターとして使用し、上位の都市の数を文字列タイプの入力パラメーターとして使用し、都市の総売上を使用してランク付けします。 この SQL コードプロセスを使用すると、各地域の指定された上位都市のランキングを簡単に取得できます。

スクリプトテンプレートパラメーター

入力パラメーター 1
  • パラメーター名:myinputtable
  • タイプ :テーブル
入力パラメーター 2
  • パラメーター名:topn
  • タイプ:文字列
出力パラメーター 3
  • パラメーター名:myoutput
  • タイプ:テーブル
パラメーター定義
  • area_id string
  • city_id string
  • order_amt double
  • rank bigint
サンプルのテーブル作成ステートメントは次のとおりです。
CREATE TABLE IF NOT EXISTS company_sales_top_n
( 
area STRING COMMENT 'Region', 
city STRING COMMENT 'City', 
sales_amount DOUBLE COMMENT 'Sales amount', 
rank BIGINT COMMENT 'Ranking'
)
COMMENT 'Company sales rankings'
PARTITIONED BY (pt STRING COMMENT '')
LIFECYCLE 365;

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_150546813****_sum,
    profit_amt_15054681****_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_15054681****_sum, 
    order_number_15054681****sum,
    profit_amt_1505468****_sum
FROM     
    (SELECT area AS area_id,
     city AS city_id,
     SUM(order_amt) AS order_amt_1505468****_sum,
     SUM(order_number) AS order_number_15054681****_sum,
     SUM(profit_amt) AS profit_amt_1505468****_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;

共有範囲

スクリプトテンプレートは、ワークスペース内で共有することも、公開することもできます。

デフォルトでは、展開されたスクリプトテンプレートは現在のワークスペース内のユーザーが閲覧および使用できます。 スクリプトテンプレートの開発者は、[スニペットを公開] アイコンをクリックして、アカウントのすべてのユーザーがスクリプトテンプレートを表示および使用できるように、汎用スクリプトテンプレートを現在のテナントアカウントに公開できます。

下図のように、[スニペットを公開] アイコンはスクリプトテンプレートの構成タブに表示されます。 アイコンがクリック可能な場合、スクリプトテンプレートは公開されています。

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

開発済のスクリプトテンプレートの使用方法については、「スクリプトテンプレートの使用」をご参照ください。

参照レコード

スクリプトテンプレートリストで、スクリプトテンプレートをダブルクリックします。 表示される設定タブで、右側のナビゲーションウィンドウの [スニペットノード] タブをクリックして、スクリプトテンプレートの参照レコードを表示します。スニペットノードタブ