削除
後続のロード中に削除を適用して、ソースからの削除(追跡または監査)を反映するか、明示的に指示されたとおりにクリーンアップします。
- 暗黙的な伝播: 削除は系統を経由してダウンストリーム・データセットに流れます。
- 明示的防止: 削除は伝播から制限されます。
アップストリーム削除の追跡
TRACKDELETES: 現在のデータセットと元のアップストリーム・コピーを比較して、削除を自動的に検出します。
構文:
IMPORT文を参照してください。
- インポートされたソース自体(デフォルトの動作)。
- 名前付きトラックセット。一意の名前で個別に追跡されます。
IMPORT SOURCE SALES WITH TRACKDELETES
IMPORT SOURCE SALES WITH TRACKDELETES IN [SALESREMOVALS] AS SALES_DEL1 // Named Track Setノート:
アップストリーム・システムで削除の追跡または監査がすでに行われている場合は、その監査を活用してパフォーマンスを向上させ、比較および追跡のコストを削減できます。ハード削除
伝播または明示的なアプリケーションを使用して、データ・ウェアハウス・データセットからレコードを完全に削除できます。
- インポートされたソースがトラッキングされている場合(デフォルトの動作): TRACKDELETES 例:
SALES_Fで自動的に伝播します。IMPORT SOURCE SALES WITH TRACKDELETES DEFINE DATASET SALES_F FROM SALES END - 名前付き追跡セットの使用インポートされたソースとデータセットの両方にこれを適用するには、次を使用します。
- 次に削除: IMPORT SOURCE文でインポートされたソースに適用できる明示的ディレクティブ。
IMPORT文を参照してください。
例:IMPORT SOURCE DEL_SALES //delete records //Clean up SALES with DEL_SALES IMPORT SOURCE SALES THEN DELETE [DEL_SALES [SALES_ID] MATCHING [SALES_ID]] // Delete for keys in DEL_SALES are automatically propagated to NET_SALES_F DEFINE DATASET NET_SALES_F FROM SALES END - ソースの削除: データセット定義のデータセットに適用できる明示的な削除。
削除セット(サブストランド)は、削除名前付きトラック・セットにすることも、任意のデータセットにすることもできます。
構文: 汎用データセット定義を参照してください。
ノート:
DELETESOURCEは、そのデータセットのすべての伝播をオーバーライドします。例: TRACKDELETESからのサブトレード:
IMPORT SOURCE SALES WITH TRACKDELETES IN [REMOVALS] DEFINE DATASET SALES_F ROWSOURCE SALES; THIS = SALES; DELETESOURCE REMOVALS [SALES_ID] MATCHING [SALES_ID] END例:データセットでDELETESOURCEを使用して、インポートされたソースからサブトレードします。
IMPORT SOURCE SALES_REMOVALS //Audited from upstream, no tracking IMPORT SOURCE SALES DEFINE DATASET SALES_F ROWSOURCE SALES; THIS = SALES; DELETESOURCE SALES_REMOVALS [SALES_ID] MATCHING [SALES_ID]; END
- 次に削除: IMPORT SOURCE文でインポートされたソースに適用できる明示的ディレクティブ。
ソフト削除
データ拡張スクリプトは、物理的に削除されるのではなく、削除レコードに削除されたフラグを付けます。 特に指定しない場合、フラグ名はISDELETEDにデフォルト設定されます。
ノート:
- 必要に応じて、問合せおよびダウンストリーム・データセットからソフト削除されたレコードをフィルタで除外する必要があります。
- ソフト削除はデータを保持しますが、システム効率を維持するために効率的なクエリーフィルタリングが必要です。
構文: IMPORT文を参照してください。
ハード削除と同様に、ソフト削除ではTRACKDELETE、THEN DELETEおよびDELETESOURCEが使用されます。
- TRACKDELETEおよびソフト削除
次に、インポート時のソフト削除の例を示します。
例:TRACKDELETESでフラグ名が指定されていない(デフォルト)。IMPORT SOURCE CUSTOMERS DELETETYPE[ SOFT ] WITH PRIMARYKEY[CUST_ID] TRACKDELETES DEFINE UPDATEABLE DATASET CUSTOMERS_SD_D FROM CUSTOMERS END例: 指定されたフラグ名IMPORT SOURCE SALES DELETETYPE[ SOFT[ISTRANDELETED] ] TRACKDELETES[ IN [THDELETE] ] DEFINE UPDATEABLE DATASET CUSTOMERS_SD_D FROM CUSTOMERS END - THEN DELETEおよびソフト削除例: インポート時に、他のインポート済データを使用してソフト削除します。
IMPORT SOURCE SALESDEL IMPORT SOURCE SALES DELETETYPE[ SOFT ] THEN DELETE [ SALESDEL [SALES_ID] MATCHING [SALES_ID] ] DEFINE DATASET SALES_SD_F FROM SALES END - DELETESOURCEおよびSoft Delete
構文: 汎用データセット定義を参照してください。
例: データセットに対するソフト削除。IMPORT SOURCE SALESDEL IMPORT SOURCE SALES DEFINE UPDATEABLE DATASET SALES_F ROWSOURCE SALES; THIS = SALES; DELETETYPE[ SOFT[SALESDELETED] ]; DELETESOURCE SALESDEL[SALE_ID] MATCHING [SALE_ID]; END
伝播制御
伝播制御は、次のもので構成されます。
- 削除伝播の無効化
DELETEPROPAGATIONを無効にすると、削除がカスケードされてダウンストリーム・データセットにならないようにできます。- デフォルトの動作: デフォルトでは、データ拡張スクリプトは、伝播を定義しないかぎり、ダウンストリーム・データセットに削除を適用します。
- 伝播の無効化: データ拡張スクリプトは削除を自動的に伝播しませんが、
DELETESOURCEを使用する明示的な削除は適用されます。
構文:disable_delete_propagation ::= DISABLE DELETEPROPAGATION FOR { ALL DATASETS | DATASETS '[' table_name ']' }例: すべてのデータセットの削除伝播を無効にします。DISABLE DELETEPROPAGATION FOR ALL DATASETS例: 製品ディメンション・データセットの削除伝播を無効にします。DISABLE DELETEPROPAGATION FOR DATASETS[PRODUCTS_D] - 削除時にリフレッシュ
削除がデータセットに与える影響を制御できます。
構文: 汎用データセット定義を参照してください。
例: 次の例では、増分実行の場合、Sales削除のみが考慮されます。IMPORT SOURCE SALES WITH TRACKDELETES IMPORT SOURCE PRODUCTS DEFINE DATASET SALES_F ROWSOURCE PRODUCTS INNER JOIN SALES ON SALES.PROD_ID = PRODUCTS.PROD_ID; THIS = SALES; REFRESH ON DELETES IN[SALES]; REFRESH ON UPSERTS IN[PRODUCTS] END - 安定期間
前回のロード以降の定義済時間枠(またはスライド・ウィンドウ)内のデータ変更の処理を制限できます。 この制限は、アップストリーム・データのレコードの初期抽出日(IED)または最終更新日(LUD)のいずれかに適用できます。
構文: IMPORT文を参照してください。
最終更新日(LUD)に基づく変更トラッキングの動作を次に示します。- ソースのLUDを特定していない場合、抽出時に過去
n日間に作成されたレコードに対する変更のみが追跡されます。 - ソースに定義されているLUDが識別された場合、前回の抽出以降の変更と、抽出時に過去
n日に作成されたレコードの変更の両方が追跡されます。
次の例では、初期抽出日(IED)を指定していますが、最終更新日(LUD)を指定していません。IMPORT SOURCE CUSTOMERS WITH IED [CUST_EFF_FROM] STABILITYPERIOD[30, CUST_EFF_FROM] TRACKDELETES DEFINE DATASET CUSTOMERS_D ROWSOURCE CUSTOMERS; THIS = CUSTOMERS; ENDこのコード例では、過去30日間のSALESの変更(削除を含む)のみが、各ロードの伝播によって処理されるように指定しています。ノート:
IMPORT定義で最終更新日(LUD)列を明示的に定義しない場合でも、ソース・メタデータに増分キーが定義されている場合、データ拡張スクリプトでは最終更新日(LUD)として自動的にそのキーが使用されます。 この動作をオーバーライドするには、LUD[NULL]を使用します。次の例では、最終更新日(LUD)を無視します。IMPORT SOURCE CUSTOMERS WITH IED [CUST_EFF_FROM] LUD[null] STABILITYPERIOD[30, CUST_EFF_FROM] TRACKDELETES - ソースのLUDを特定していない場合、抽出時に過去
最適な削除戦略の選択
| シナリオ | 推奨される削除方法 |
|---|---|
| データを完全に削除する必要があります。 | ハード削除(THEN DELETE、DELETESOURCE、TRACKDELETES)
|
| 履歴トラッキングのために削除済レコードを保持する必要があります。 | ソフト削除(ISDELETEDフラグ)
|
| ソース・システムでは削除は追跡されません。 | TRACKDELETES |
| 削除は、名前付きデータセットによって明示的に指定する必要があります。 | DELETESOURCE |
| ダウンストリーム・データセットでのカスケード削除を回避します。 | DISABLE DELETEPROPAGATION |
| インポートされたソースに必要な削除を適用してパフォーマンスを最適化します | THEN DELETE |