SQL データ管理

SQL データ管理」アクティビティでは、作業用テーブルを作成および設定する独自の SQL クエリを記述できます。

前提条件

アクティビティを設定する前に、以下の前提条件を満たしていることを確認してください。

  • このアクティビティは、リモートデータソースに対してのみ使用できます。そのため、インスタンスに FDA(Federated Data Access)パッケージをインストールする必要があります。詳細情報
  • アウトバウンドスキーマがデータベースに存在し、FDA データベースにリンクされている必要があります。 詳細情報
  • ワークフローを実行するオペレーターには、USE SQL DATA MANAGEMENT ACTIVITY (useSqlDmActivity) ネームド権限が必要です。詳細情報

「SQL データ管理」アクティビティの設定

  1. アクティビティの「ラベル」を指定します。

  2. 使用する​外部アカウント​を選択し、この外部アカウントにリンクする​アウトバウンドスキーマ​を選択します。

    注意

    アウトバウンドスキーマは固定されており、編集することはできません。

  3. SQL スクリプトを追加します。

    注意

    SQL スクリプトが機能し、その参照(フィールド名など)がアウトバウンドスキーマに従っていることを確認するのは、SQL スクリプト作成者の責任です。

    既存の SQL コードを読み込む場合は、「データベースに格納されているエンティティに SQL スクリプトを含める」オプションを選択します。管理設定SQL スクリプト​メニューで SQL スクリプトを作成し、格納する必要があります。

    または、専用の領域に SQL スクリプトを入力するか、コピーして貼り付けます。

    このアクティビティでは、スクリプト内で次の変数を使用できます。

    • activity.tableName:アウトバウンド作業用テーブルの SQL 名

    • task.incomingTransitionByName(‘name’).tableName:使用する受信トランジションによって実行される作業用テーブルの SQL 名(トランジションは名前で識別されます)

      メモ

      ('name') 値は、トランジションプロパティの「名前」フィールドに対応しています。

  4. アウトバウンド作業用テーブルを作成するコマンドが SQL スクリプトに既に含まれている場合は、「作業用テーブルを自動作成」オプションの選択を解除します。選択を解除しない場合、ワークフローが実行されると作業用テーブルが自動的に作成されます。

  5. OK」をクリックして、アクティビティの設定を確定します。

これでアクティビティが設定され、ワークフローで実行する準備が整いました。

注意

アクティビティ実行後のアウトバウンドトランジションレコード数は単なる目安です。SQL スクリプトの複雑さのレベルによって異なる場合があります。

アクティビティを再開すると、実行ステータスに関係なく、スクリプト全体が最初から実行されます。

SQL スクリプトのサンプル

メモ

この節にあるスクリプトのサンプルは、PostgreSQL で実行することを想定しています。

以下のスクリプトは、作業用テーブルを作成し、この同じ作業用テーブルにデータを挿入します。

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)

このページ

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now