SQL データ管理 sql-data-management
「SQL データ管理」アクティビティでは、独自の SQL スクリプトを記述して、ワークテーブルを作成および設定する独自の SQL クエリを記述できます。
前提条件 prerequisites
アクティビティを設定する前に、以下の前提条件を満たしていることを確認してください。
- このアクティビティは、リモートデータソースに対してのみ使用できます。
- アウトバウンドスキーマがデータベースに存在し、FDA データベースにリンクされている必要があります。
「SQL データ管理」アクティビティの設定 configuring-the-sql-data-management-activity
-
アクティビティの「ラベル」を指定します。
-
使用する 外部アカウント を選択し、この外部アカウントにリンクする アウトバウンドスキーマ を選択します。
note caution CAUTION アウトバウンドスキーマは固定されており、編集することはできません。 -
SQL スクリプトを追加します。
note caution CAUTION SQL スクリプトが機能し、その参照(フィールド名など)がアウトバウンドスキーマに従っていることを確認するのは、SQL スクリプト作成者の責任です。 既存の SQL コードを読み込む場合は、「データベースに格納されているエンティティに SQL スクリプトを含める」オプションを選択します。管理/設定/SQL スクリプト メニューで SQL スクリプトを作成し、格納する必要があります。
または、専用の領域に SQL スクリプトを入力するか、コピーして貼り付けます。
このアクティビティでは、スクリプト内で次の変数を使用できます。
-
activity.tableName:アウトバウンドワークテーブルの SQL 名
-
task.incomingTransitionByName('name').tableName:使用する受信トランジションによって実行される作業用テーブルの SQL 名(トランジションは名前で識別されます)
note note NOTE ('name') 値は、トランジションプロパティの「名前」フィールドに対応しています。
-
-
アウトバウンド作業用テーブルを作成するコマンドが SQL スクリプトに既に含まれている場合は、「作業用テーブルを自動作成」オプションの選択を解除します。選択を解除しない場合、ワークフローが実行されるとワークテーブルが自動的に作成されます。
-
「OK」をクリックして、アクティビティの設定を確定します。
これでアクティビティが設定され、ワークフローで実行する準備が整いました。
SQL スクリプトのサンプル sql-script-samples
以下のスクリプトは、ワークテーブルを作成し、この同じワークテーブルにデータを挿入します。
CREATE UNLOGGED TABLE <%= activity.tableName %> (
iRecipientId INTEGER DEFAULT 0,
sFirstName VARCHAR(100),
sMiddleName VARCHAR(100),
sLastName VARCHAR(100),
sEmail VARCHAR(100)
);
INSERT INTO <%= activity.tableName %>
SELECT iRecipientId, sFirstName, sMiddleName, sLastName, sEmail
FROM nmsRecipient
GROUP BY iRecipientId, sFirstName, sMiddleName, sLastName, sEmail;
以下のスクリプトは、CTAS 操作(CREATE TABLE AS SELECT)を実行し、ワークテーブルのインデックスを作成します。
CREATE TABLE <%= activity.tableName %>
AS SELECT iRecipientId, sEmail, sFirstName, sLastName, sMiddleName
FROM nmsRecipient
WHERE sEmail IS NOT NULL
GROUP BY iRecipientId, sEmail, sFirstName, sLastName, sMiddleName;
CREATE INDEX ON <%= activity.tableName %> (sEmail);
ANALYZE <%= activity.tableName %> (sEmail);
以下のスクリプトは、2 つのワークテーブルを結合します。
CREATE TABLE <%= activity.tableName %>
AS SELECT i1.sFirstName, i1.sLastName, i2.sEmail
FROM <%= task.incomingTransitionByName('input1').tableName %> i1
JOIN <%= task.incomingTransitionByName('input2').tableName %> i2 ON (i1.id = i2.id)