0

現在、地理的領域で競合 (重複) が発生しているレコードを特定する次の SQL があります。テーブルの内容を説明するために、CTE として以下を提供しました。

   WITH
    A AS
    (
         SELECT
            AREA_ID,
                        AREA_CATEGORY,
            AREA_NAME,
            START_ZIP,
            END_ZIP
           FROM
            AREA_DEFINITION
    )
    ,
    B AS
    (
         SELECT
            AREA_ID,
                        AREA_CATEGORY,
            AREA_NAME,
            START_ZIP,
            END_ZIP
           FROM
            AREA_DEFINITION
    ) 
 SELECT
    A.AREA_ID,
    A.AREA_NAME,
        A.AREA_CATEGORY,
    A.START_ZIP      AS A_START_ZIP,
    A.END_ZIP        AS A_END_ZIP,
    B.START_ZIP      AS A_START_ZIP,
    B.END_ZIP        AS A_END_ZIP
   FROM
    A
CROSS JOIN
    B
  WHERE
    A.AREA_ID != B.AREA_ID
    AND A.AREA_NAME = B.AREA_NAME
    AND A.AREA_CATEGORY = B.AREA_CATEGORY
    AND((
            INT(A.START_ZIP) BETWEEN INT(B.START_ZIP) AND
            INT(B.END_ZIP))
        OR(
            INT(B.START_ZIP) BETWEEN INT(A.START_ZIP) AND
            INT(A.END_ZIP)))

入力シーケンシャル ファイル (CSV) ファイルで地域が提供されると、次のようなファイルが得られます。

AREA_NAME, AREA_CATEGORY, AREA_START_ZIP, AREA_END_ZIP
Domestic, Sales, 00000, 99999
South, Wholesale, 75000, 85000
East, HQ, 00200, 00210 

オーバーラップが存在し、DataStage でクロス結合をエミュレートする方法がわからない場合、ジョブを拒否または失敗させたいと考えています。

4

1 に答える 1

0

この問題を解決するために開発されたジョブの概要は次のとおりです。

最初に、ジョブは受信シーケンシャル ファイル (ステージ 0) の郵便番号を整数に変換し (ステージ 1)、カテゴリに基づいて並べ替え (ステージ 2)、次に郵便番号に基づいて並べ替えます (ステージ 3)。

これにより、次の作業データ セット (DS) が得られるようになります。

KEY, AREA_NAME, AREA_CATEGORY, AREA_START_ZIP, AREA_END_ZIP

ここから、Clockwork-Muse からの観測を使用して、JOIN(ステージ 4) に切り替えて、作業データ セットをそれ自体に結合し、AエイリアスBを on にしKEYます。

データセット (DS) を次のように変換します。

KEY, AREA_NAME, A_AREA_CATEGORY, A_AREA_START_ZIP, A_AREA_END_ZIP, B_AREA_CATEGORY, B_AREA_START_ZIP, B_AREA_END_ZIP

ここから、最終処理段階は、次の条件に基づいてオーバーラップのインジケーターを追加する追加のトランスフォーマーです。

If ((DS.A_AREA_START_ZIP <= DS.B_AREA_END_ZIP) AND (DS.B_AREA_START_ZIP <= DS.A_AREA_END_ZIP) AND DS.A_AREA_CATEGORY = DS.B_AREA_CATEGORY) Then 'Y' Else 'N'

さらに処理するために、次の情報を含むデータセット (DS) を残します。

KEY, AREA_NAME, A_AREA_CATEGORY, A_AREA_START_ZIP, A_AREA_END_ZIP, B_AREA_CATEGORY, B_AREA_START_ZIP, B_AREA_END_ZIP, OVERLAP
于 2014-06-19T12:31:45.563 に答える