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

Platform For AI:SQLスクリプト

最終更新日:Jul 22, 2024

Platform for AI (PAI) が提供するSQLスクリプトコンポーネントを使用すると、SQLスクリプトエディターでカスタムSQLステートメントを記述できます。 ステートメントをMaxComputeに送信して実行できます。 このトピックでは、コンポーネントを設定する方法と、コンポーネントを使用できるシナリオについて説明します。

コンポーネント設定

SQLスクリプトコンポーネントは、Machine Learning Designerでのみ構成できます。 次の表に、コンポーネントの設定に使用されるパラメーターを示します。

パラメーター

説明

スクリプトモードの使用

スクリプトモードでは、出力テーブルを作成する必要があります。 テーブル名を ${o1} として指定します。 このように、システムは、テーブルをコンポーネントの出力として使用することができる。 詳細については、「スクリプトモードのSQL」をご参照ください。

入力ソース

入力テーブルの名前。

システムがテーブル作成ステートメントを追加するかどうか

  • CREATE TABLEステートメントを実行してテーブルを作成するようにPAIに要求するかどうかを指定します。 チェックボックスをオンにする場合は、指定したSQLスクリプトの最後のステートメントがselectステートメントであることを確認します。 この場合、PAIは、SELECTステートメントのクエリ結果を格納する一時テーブルを自動的に作成します。

  • このチェックボックスをオンにしない場合は、SQLスクリプトの ${o1} 変数を含むCREATE TABLEステートメントを指定して、出力テーブルとして機能するテーブルを作成する必要があります。

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};

image

シナリオ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;

image

シナリオ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ステートメントは、環境変数を設定するために使用されます。 image

シナリオ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";

image