SQL 資料管理 sql-data-management

SQL資料管理 活動可讓您撰寫自己的SQL指令碼,以建立和填入工作表。

先決條件 prerequisites

在設定活動之前,請確定已符合下列必要條件:

  • 活動僅適用於遠端資料來源。
  • 傳出綱要必須存在於資料庫中,並連結至FDA資料庫。

設定SQL資料管理活動 configuring-the-sql-data-management-activity

  1. 指定活動 Label.

  2. 選取 External account ,然後選取 Outbound schema 連結至此外部帳戶。

    note caution
    CAUTION
    傳出結構描述是固定的,無法編輯。
  3. 新增SQL指令碼。

    note caution
    CAUTION
    SQL指令碼編寫者有責任確認SQL指令碼正常運作,以及其參考(欄位名稱等) 符合傳出綱要。

    如果要載入現有的SQL程式碼,請選取 The SQL script is contained in an entity stored in the database 選項。 SQL指令碼必須建立並儲存在 Administration / Configuration / SQL scripts 功能表。

    否則,請在專用區域中輸入或複製貼上您的SQL指令碼。

    活動可讓您在指令碼中使用下列變數:

    • activity.tableName:傳出工作表的SQL名稱。

    • task.incomingTransitionByName('name')。tableName:要使用的傳入轉變所承載的工作表的SQL名稱(轉變由其名稱識別)。

      note note
      NOTE
      ('name')值對應至 Name 切換屬性中的欄位。
  4. 如果SQL命令檔已經包含建立出站工作表的命令,請取消選取 Automatically create work table 選項。 否則,工作流程執行後會自動建立工作表。

  5. 按一下 Ok 以確認活動設定。

該活動現已完成設定。它可以在工作流程中執行。

CAUTION
執行活動後,出站轉變記錄計數僅為指示性。 它可能會根據SQL指令碼的複雜度而有所不同。
如果活動重新啟動,則會從一開始執行整個指令碼,無論其執行狀態為何。

SQL指令碼範例 sql-script-samples

NOTE
本節中的指令碼範例旨在在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);

以下指令碼可讓您合併兩個工作表格:

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)
recommendation-more-help
cffff7e4-091f-472e-87ca-52087599f99d