トランスフォーメーション > 式トランスフォーメーション > 例: ウィンドウを使用した有効期限の計算
  

例: ウィンドウを使用した有効期限の計算

あなたは自分の担当顧客2社の財務プランに関する情報を持つ銀行家です。各プランに、開始日が関連付けられています。
各顧客のために、次のプランの有効化日付に基づいて、現在のプランの有効期限を知りたいとします。前のプランは新しいプランの開始時に終了するため、前のプランの終了日は、次のプランの開始日マイナス1日です。
次の表に、顧客コード、関連プランコード、各プランの開始日を示します。
CustomerCode
PlanCode
StartDate
C1
00001
2014-10-01
C2
00002
2014-10-01
C2
00002
2014-11-01
C1
00004
2014-10-25
C1
00001
2014-09-01
C1
00003
2014-10-10
有効期限を計算するには、次のタスクを実行します。
  1. 1パーティションキーおよびオーダーキーを定義します。
  2. 次のウィンドウプロパティを設定して、データを顧客コードでパーティション化し、データを開始日の昇順に並べます。
    プロパティ
    説明
    フレーム
    指定されていません。
    LEAD関数は、オフセット引数に基づいて行にアクセスし、フレームを無視します。
    パーティションキー
    CustomerCode
    行を顧客コード別にグループ化し、計算が個々の顧客に基づくようにします。
    オーダーキー
    StartDate昇順
    開始日の昇順で、データを時系列に配置します。
    次の表に、顧客コードでグループ化された開始日順のデータを示します。
    CustomerCode
    PlanCode
    StartDate
    C1
    00001
    2014-09-01
    C1
    00002
    2014-10-01
    C1
    00003
    2014-10-10
    C1
    00004
    2014-10-25
    C2
    00001
    2014-10-01
    C2
    00002
    2014-11-01
  3. 2ウィンドウ関数の定義
  4. 入力ごとに次の行にアクセスするLEAD関数を定義します。
    次の計算を実行する式フィールドを設定します。
    LEAD ( StartDate, 1, '01-Jan-2100' )
    LEAD関数の詳細については、『関数リファレンス』を参照してください。
  5. 3ADD_TO_DATE関数の定義
  6. アクセスした日付から1日を除算するADD_TO_DATE関数を使用します。
    次の計算を実行する式フィールドを設定します。
    ADD_TO_DATE ( LEAD ( StartDate, 1, '01-Jan-2100' ), 'DD', -1, )
    次のプランの開始日から1日を除算することで、現在のプランの終了日がわかります。
    次の表に、各プランの終了日を示します。
    CustomerCode
    PlanCode
    StartDate
    EndDate
    C1
    00001
    2014-09-01
    2014-09-30
    C1
    00002
    2014-10-01
    2014-10-09
    C1
    00003
    2014-10-10
    2014-10-24
    C1
    00004
    2014-10-25
    2099-12-31*
    C2
    00001
    2014-10-01
    2014-10-31
    C2
    00002
    2014-11-01
    2099-12-31*
    *LEAD関数は、これらのプランがまだ終了していないために、デフォルト値を返しました。これらの行はパーティション外であるため、ADD_TO_DATE関数は01-Jan-2100から1日を除算し、2099-12-31を返しました。