Platform for AI (PAI) が提供するSQLスクリプトコンポーネントを使用すると、SQLスクリプトエディターでカスタムSQLステートメントを記述できます。 ステートメントをMaxComputeに送信して実行できます。 このトピックでは、コンポーネントを設定する方法と、コンポーネントを使用できるシナリオについて説明します。
コンポーネント設定
SQLスクリプトコンポーネントは、Machine Learning Designerでのみ構成できます。 次の表に、コンポーネントの設定に使用されるパラメーターを示します。
パラメーター | 説明 |
スクリプトモードの使用 | スクリプトモードでは、出力テーブルを作成する必要があります。 テーブル名を ${o1} として指定します。 このように、システムは、テーブルをコンポーネントの出力として使用することができる。 詳細については、「スクリプトモードのSQL」をご参照ください。 |
入力ソース | 入力テーブルの名前。 |
システムがテーブル作成ステートメントを追加するかどうか |
|
SQLスクリプト | カスタムSQLスクリプト。 サポートされている構文については、「MaxCompute SQLの概要」をご参照ください。 SQLスクリプトコンポーネントには、コードキーワードを推奨するオートコンプリート機能と、生産性の向上に役立つ組み込みの検索テンプレートが用意されています。 詳細については、「コード開発の効率を向上させる機能」をご参照ください。 |
SQLスクリプトコンポーネントの使用に関する注意事項:
コンポーネントは最大4つの入力と1つの出力をサポートします。
上流コンポーネントとこのコンポーネントの間に線を引くと、選択した入力ポートによって、入力テーブルのマップされた名前が決まります。 入力テーブルのマッピングされた名前は、t1、t2、t3、またはt4であり得る。 ${t1} 、${t2} 、${t3} 、${t4} 変数を直接使用して、元のテーブル名を指定しなくても入力テーブルを指定できます。
SQLスクリプトで ${o1} 変数を使用して、出力テーブルを指定できます。
SQLスクリプトで ${lifecycle} 変数を使用して、現在のワークスペースで設定されている一時テーブルのライフサイクルを指定できます。 デフォルトのライフサイクルは28日です。 ワークスペースの一時テーブルのライフサイクルを設定する方法については、「ワークスペースの管理」をご参照ください。
[システムがテーブルの作成文を追加するかどうか] チェックボックスをオンにした場合、指定したSQLスクリプトの最後の文がselect文であることを確認します。 この場合、PAIは、SELECTステートメントのクエリ結果を格納する一時テーブルを自動的に作成します。
SQLスクリプトでCREATE TABLEステートメントを指定して一時テーブルを作成する場合は、テーブルのライフサイクルを設定する必要があります。 詳細については、「ワークスペースの管理」をご参照ください。
シナリオ
次のシナリオでは、SQLスクリプトコンポーネントをさまざまな方法で使用できます。
シナリオ1: SQLスクリプトコンポーネントは、単一のアップストリームテーブルからデータを読み取り、いくつかの分析を実行します
この場合、PAIは自動的に、名前の先頭にpai_tempが付いた一時テーブルを出力テーブルとして作成します。 サンプル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};
シナリオ2: SQLスクリプトコンポーネントは、複合分析のために複数のアップストリームテーブルからデータを読み取ります
この場合、SQLスクリプトで ${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;
シナリオ3: SQLスクリプトコンポーネントにはアップストリーム入力がなく、テーブル名を使用してソーステーブルの内容を直接読み取ります。
この場合、SQLスクリプトで ${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};
SQLスクリプトの先頭にあるSETステートメントは、環境変数を設定するために使用されます。
シナリオ4: SQLスクリプトコンポーネント内でPAIコマンドを実行する
この場合、SQLスクリプトで ${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";