LAG
詳細モードでは、LAG関数は式トランスフォーメーションの前の行からのデータを返します。この関数を使用して、現在の行の値と、前の行の値を比較します。
LAG関数を使用するには、パーティションキーとオーダーキーをウィンドウプロパティとして設定し、式トランスフォーメーションでも設定を行う必要があります。
構文
LAG ( column_name, offset, default )
引数 | 必須/ オプション | 説明 |
---|
column_name | 必須 | 関数で操作する対象の列または式。 |
offset | 必須 | 整数データ型。値を取得する、現在の行の前の行数。 |
default | オプション | オフセットがパーティションまたはテーブルの範囲外にある場合に返されるデフォルト値。デフォルトはNULLです。 入力値と同じデータ型である引数、またはオフセット引数を使用したデフォルトの引数を指定できます。 複合データ型を含むデフォルトの引数、またはSYSTIMESTAMP引数を指定することはできません。 |
戻り値
指定されたcolumn_nameのデータ型。
戻り値が指定されたパーティションの境界の外側にある場合はdefault。
defaultが省略されている場合、またはNULLに設定されている場合は、NULL。
例1
次の式は、前の順序が配置された日付を返します。
LAG ( ORDER_DATE, 1, NULL )
次の表に、このコマンドの順序に関する情報を示します。
ORDER_DATE | ORDER_ID | RETURN VALUE |
---|
2017/09/25 | 1 | NULL |
2017/09/26 | 2 | 2017/09/25 |
2017/09/27 | 3 | 2017/09/26 |
2017/09/28 | 4 | 2017/09/27 |
2017/09/29 | 5 | 2017/09/28 |
2017/09/30 | 6 | 2017/09/29 |
|
最初の行の遅延値はパーティションの範囲外であるため、関数はデフォルトのNULL値を返します。
例2
あなたの組織はトリップID、イベントID、およびタイムスタンプを含む車両からのGPS pingを受信します。各pingの時間差を計算するとします。
次の式は、2つの別々のトリップについて、現在の行と前の行の時間差を計算します。
DATE_DIFF( EVENT_TIME, LAG ( EVENT_TIME, 1, NULL ), 'ss' )
データをトリップIDでパーティション化し、イベントIDで順序付けします。
次の表に、このコマンドのトリップに関する情報を示します。
TRIP_ID | EVENT_ID | EVENT_TIME | RETURN VALUE |
---|
101 | 1 | 2017-05-03 12:00:00 | NULL |
101 | 2 | 2017-05-03 12:00:34 | 34 |
101 | 3 | 2017-05-03 12:02:00 | 86 |
102 | 1 | 2017-05-03 12:00:00 | NULL |
102 | 2 | 2017-05-03 12:01:56 | 116 |
102 | 3 | 2017-05-03 12:02:00 | 4 |
|
最初の行および4番目の行の遅延値は指定されたパーティションの範囲外であるため、関数はデフォルトのNULL値を2つ返します。