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

Platform For AI:SQLスクリプト

最終更新日:Jun 22, 2026

SQLスクリプトコンポーネントを使用すると、カスタム SQL ステートメントを作成して MaxCompute で実行できます。このトピックでは、コンポーネントの構成とそのユースケースについて説明します。

コンポーネントの構成

ビジュアルモデリングでは、SQLスクリプトコンポーネントのパラメーターをその構成タブで設定できます。

パラメーター

説明

スクリプトモードを使用

スクリプトモードでは、ノードの出力ポートとして機能する ${o1} という名前の出力テーブルを作成する必要があります。詳細については、「SQL スクリプトモード」をご参照ください。

入力ソース

上流の入力テーブルの名前を表示します。

システムが Create Table 文を追加するかどうか

  • [システムが Create Table 文を追加するかどうか] チェックボックスを選択した場合、[SQL スクリプト] の最後の文は Select 文である必要があります。 Platform for AI (PAI) は、クエリ結果を格納するための一時テーブルを自動的に作成します。

  • [システムが Create Table 文を追加するかどうか] チェックボックスのチェックを外した場合、SQL ステートメントで ${o1} という名前のデータテーブルを作成して、ダウンストリームコンポーネントにデータを渡す必要があります。

SQL スクリプト

カスタム SQL スクリプトを作成して、ロジックを実装できます。SQL 構文の詳細については、「SQL 概要」をご参照ください。

コードエディタは、コード補完 (インテリジェントなキーワード提案) や組み込みのクエリテンプレートなどの機能を提供し、コードをより速く作成するのに役立ちます。詳細については、「コード開発効率の向上」をご参照ください。

  • SQLスクリプトコンポーネントは、0~4 個の入力と 1 個の出力をサポートします。

  • SQLスクリプトコンポーネントが上流テーブルに接続されると、入力ソースが t1、t2、t3、t4 に自動的にマッピングされます。変数 ${t1}${t2}${t3}、または ${t4} を使用して、ソーステーブル名を指定せずにこれらのテーブルを直接参照できます。

  • SQLスクリプトコンポーネントは 1 つの出力をサポートします。SQL ステートメントで ${o1} 変数を使用して、出力データテーブルを表すことができます。

  • SQL ステートメントで ${lifecycle} パラメーターを使用して、ワークスペースに構成されているデフォルトの一時テーブルのライフサイクルを適用できます。デフォルト値は 28 日です。

    説明

    SQL ステートメントでデータテーブルを作成する場合は、必要に応じて一時テーブルのライフサイクルを設定してください。詳細については、「ワークスペース内の一時テーブルのクリーンアップ時間を設定する」をご参照ください。

  • パラメーター構成パネルで [システムが Create Table 文を追加するかどうか] チェックボックスを選択した場合、スクリプトに他の SQL ステートメントを含めることができますが、最後の文は Select 文である必要があります。PAI はクエリ結果を格納するための一時テーブルを自動的に作成します。

ユースケース

SQLスクリプトコンポーネントは、以下のユースケースをサポートします。

シナリオ 1:単一の上流テーブルからのデータ分析

[システムが Create Table 文を追加するかどうか] チェックボックスにチェックを入れます。PAI は、出力として一時テーブルを自動的に作成し、ダウンストリームコンポーネントに渡します。次のコードは、SQL スクリプトの例です。

select age,
(case sex when 'male' then 1 else 0 end) as sex,
(case cp when 'angina' then 0  when 'notang' then 1 else 2 end) as cp,
trestbps,
chol,
(case fbs when 'true' then 1 else 0 end) as fbs,
(case restecg when 'norm' then 0  when 'abn' then 1 else 2 end) as restecg,
thalach,
(case exang when 'true' then 1 else 0 end) as exang,
oldpeak,
(case slop when 'up' then 0  when 'flat' then 1 else 2 end) as slop,
ca,
(case thal when 'norm' then 0  when 'fix' then 1 else 2 end) as thal,
(case status  when 'sick' then 1 else 0 end) as ifHealth
from  ${t1};

コンポーネントペインで SQLスクリプト を検索し、SQLスクリプト コンポーネントをキャンバスにドラッグします。データテーブルの読み込み-1 コンポーネントの出力を SQLスクリプト-1 コンポーネントの入力に接続します。

シナリオ 2:複数の上流テーブルからのデータ結合

[システムが Create Table 文を追加するかどうか] チェックボックスのチェックを外します。${o1} および ${lifecycle} 変数を使用して、出力として一時テーブルを作成します。次のコードは SQL スクリプトの例です。

create table if not exists ${o1} lifecycle ${lifecycle}
as
with
    a as (select * from ${t1}),
    b as (select * from ${t2}),
    c as (select * from ${t3})
select * from a
    UNION all
select * from b
    UNION all
select * from c;

コンポーネントペインで SQLスクリプト を検索し、キャンバスにドラッグします。3 つの データテーブルの読み込み ノードを SQLスクリプト ノードに接続します。パラメーター設定パネルで、入力ソースを次のようにマッピングします:t1データテーブルの読み込み-1 に、t2データテーブルの読み込み-2 に、t3データテーブルの読み込み-3 にマッピングします。

シナリオ 3:テーブル名によるデータ読み込み

[システムが Create Table 文を追加するかどうか] チェックボックスのチェックを外します。${o1} および ${lifecycle} 変数を使用して、出力として一時テーブルを作成します。次のコードは SQL スクリプトの例です。

set odps.sql.mapper.split.size=128;
set odps.sql.executionengine.batch.rowcount=100;
drop table if exists test_a_5_1;
create table test_a_5_1
as
select * from pai_online_project.wumai_data;
drop table if exists test_a_5_2;
create table test_a_5_2
as
select * from pai_online_project.wumai_data;
create table if not exists ${o1}
LIFECYCLE ${lifecycle}
as
select a.pm2, a.pm10, a.so2, b.co, b.no2
from
test_a_5_1 a join test_a_5_2 b
on a.time = b.time
and a.hour = b.hour;
select * from ${o1};

set 文は、SQL スクリプトの先頭で実行環境変数を設定します。

シナリオ 4:PAI コマンドの実行

[システムが Create Table 文を追加するかどうか] チェックボックスをオフにし、変数 ${o1}${lifecycle} を使用して出力として一時テーブルを作成します。 次のコードは SQL スクリプトの例です。

drop table if exists ${o1};
PAI -name type_transform_v1 -project algo_public
-Dlifecycle=${lifecycle} -DoutputTable=${o1}
-Dcols_to_double="time,hour,pm2,pm10,so2,co,no2"
-Ddefault_double_value="0.0" -Ddefault_int_value="0"
-DreserveOldFeat="false" -DinputTable="pai_online_project.wumai_data";