SQL アップグレード・スクリプトの検討および変更

Interact に含まれているデフォルトのデータ定義言語 (DDL) を変更したランタイム・システム・テーブルに対するカスタマイズが Interact ランタイム環境に含まれる場合、そのカスタマイズに合わせてデータベースのデフォルトの SQL アップグレード・スクリプトを変更する必要があります。

このタスクについて

共通のカスタマイズには、複数のオーディエンス・レベルやテーブルのビューの使用をサポートするための変更が含まれます。列サイズが正しくマップしていること、および追加の製品の外部キー制約が競合していないことを確認するために、新規バージョンの IBM® 製品について、データ・ディクショナリーを確認できます。

SQL アップグレード・スクリプトである aci_runtab_upgrd および aci_usrtab_upgrd については、ほとんどの場合、改訂が必要です。

重要: Interact アップグレード・ツールを実行する前に、これらの変更を完了しておく必要があります。

以下のステップを実行し、SQL アップグレード・スクリプトを検討して変更します。

手順

  1. データベース・タイプのアップグレード・スクリプトを見つけます。スクリプトは、アップグレード・モードで IBM Marketing Software インストーラーを実行した後の Interact インストールの下の /ddl/Upgrades または /ddl/Upgrades/Unicode ディレクトリーにインストールされます。
  2. Interact に含まれているデータ定義言語 (DDL) とデータベース・スキーマが一致することを確認します。アップグレード・スクリプトの DDL とデータベース・スキーマが一致しない場合、環境と一致するように、ご使用のデータベース・タイプ用にスクリプトを編集してください。

    以下の例は、Household オーディエンス・レベルをサポートするために aci_runtab_upgrd SQL アップグレード・スクリプトに対して加える必要がある変更を示しています。

    既存の Interact 設計時環境には、Household という名前の追加オーディエンス・レベルが含まれています。Household オーディエンス・レベルをサポートするため、Interact ランタイム環境データベースには HH_CHStaging および HH_RHStaging という名前のテーブルが含まれています。

    アップグレード・スクリプトに対する必要な変更:

    1. Customer オーディエンス・レベルのレスポンス履歴および処理サイズを更新する SQL アップグレード・スクリプト内のコードを見つけ、Household オーディエンス・レベルに複製します。これらの SQL ステートメント内のテーブル名を、Household オーディエンス・レベルで適切な名前に変更します。
    2. UACI_RHStaging テーブルの SeqNum 列のデータ型の変更をサポートするように SQL スクリプトを改訂する必要もあります。SeqNum の値は、すべてのレスポンス履歴ステージング・テーブル全体の連続番号です。次に使用される値は、UACI_IdsByType テーブルの NextID 列によってトラッキングされます。TypeID は 2 です。例えば、Customer、Household、Account という 3 つのオーディエンス・レベルがあります。Customer レスポンス履歴ステージング・テーブルで最も高い SeqNum は 50 です。Household レスポンス履歴ステージング・テーブルで最も高い SeqNum は 75 です。Account レスポンス履歴ステージング・テーブルで最も高い SeqNum は 100 です。したがって、SQL を変更して UACI_IdsByType の TypeID = 2 の NextID を 101 に設定する必要があります。

    以下のサンプル SQL ステートメントは、Household オーディエンス・レベルが含まれる、SQL Server データベースの aci_runtab_upgrd_sqlsvr.sql スクリプトで必要な追加を示しています。Household オーディエンス・レベルをサポートするために追加されるテキストは、太字で示されています。

    ALTER TABLE UACI_CHStaging ADD RTSelectionMethod int NULL
    go
    
    ALTER TABLE UACI_RHStaging ADD RTSelectionMethod int NULL
    go
    
    ALTER TABLE HH_CHStaging ADD RTSelectionMethod int NULL
    go
    
    ALTER TABLE HH_RHStaging ADD RTSelectionMethod int NULL
    go
    
    insert into UACI_IdsByType (TypeID, NextID) (select 2, 
    	IDENT_CURRENT('UACI_RHStaging') + IDENT_CURRENT('HH_RHStaging') 
    	+ IDENT_INCR( 'UACI_RHStaging' ))
    go
    
    select * into UACI_RHStaging_COPY from UACI_RHStaging
    go
    
    select * into HH_RHStaging_COPY from HH_RHStaging
    go
    
    DROP TABLE UACI_RHStaging
    go
    
    CREATE TABLE UACI_RHStaging (
           SeqNum               bigint NOT NULL,
           TreatmentCode        varchar(512) NULL,
           CustomerID           bigint NULL,
           ResponseDate         datetime NULL,
           ResponseType         int NULL,
           ResponseTypeCode     varchar(64) NULL,
           Mark                 bigint NOT NULL
                                              DEFAULT 0,
           UserDefinedFields    char(18) NULL,
    	 RTSelectionMethod    int NULL,
           CONSTRAINT iRHStaging_PK 
                  PRIMARY KEY (SeqNum ASC)
    )
    go
    
    insert into UACI_RHStaging (SeqNum, TreatmentCode, CustomerID, ResponseDate, 
    	ResponseType, ResponseTypeCode, Mark, UserDefinedFields, RTSelectionMethod) 
      (select SeqNum, TreatmentCode, CustomerID, ResponseDate, ResponseType, 
    		ResponseTypeCode, Mark, UserDefinedFields, RTSelectionMethod from 
    		UACI_RHStaging_COPY)
    go
    
    DROP TABLE UACI_RHStaging_COPY
    go
    
    DROP TABLE HH_RHStaging
    go
    
    CREATE TABLE HH_RHStaging (
           SeqNum               bigint NOT NULL,
           TreatmentCode        varchar(512) NULL,
           HouseholdID           bigint NULL,
           ResponseDate         datetime NULL,
           ResponseType         int NULL,
           ResponseTypeCode     varchar(64) NULL,
           Mark                 bigint NOT NULL
                                              DEFAULT 0,
           UserDefinedFields    char(18) NULL,
    	 RTSelectionMethod    int NULL,
           CONSTRAINT iRHStaging_PK 
                  PRIMARY KEY (SeqNum ASC)
    )
    go
    
    insert into HH_RHStaging (SeqNum, TreatmentCode, HouseHoldID, ResponseDate, 
    	ResponseType, ResponseTypeCode, Mark, UserDefinedFields, RTSelectionMethod) 
      (select SeqNum, TreatmentCode, HouseHoldID, ResponseDate, ResponseType, 
    		ResponseTypeCode, Mark, UserDefinedFields, RTSelectionMethod from 
    		HH_RHStaging_COPY)
    go
    
    DROP TABLE HH_RHStaging_COPY
    go

    DB2® および Oracle データベースの場合、UACI_IdsByType テーブルに値を挿入するために以下のステートメントが使用されます。

    INSERT into UACI_IdsByType (TypeID, NextID)  
    	(select 2, COALESCE(max(a.seqnum)+1,1)  
    	+ COALESCE(max(b.seqnum)+1,1) 
    	from UACI_RHSTAGING a, ACCT_UACI_RHSTAGING b );

    オーディエンスが複数存在する場合、以下のセクションを、それぞれのオーディエンス・レベルの aci_usrtab_upgrd SQL スクリプトに追加する必要があります。

    ALTER TABLE HH_ScoreOverride  ADD 
            OverrideTypeID       int NULL,
            CellCode             varchar(64) NULL,
            Zone                 varchar(64) NULL
    go
    
    ALTER TABLE HH_ScoreOverride  ADD
            Predicate            varchar(4000) NULL,
            FinalScore           float NULL,
            EnableStateID        int NULL
    go
    
    CREATE INDEX iScoreOverride_IX1 ON HH_ScoreOverride
    (
           HouseHoldID                     ASC
    )
    go