目次

Search

  1. はじめに
  2. トランスフォーメーション言語
  3. 定数
  4. 演算子
  5. 変数
  6. 日付
  7. 関数
  8. カスタム関数の作成
  9. カスタム関数APIリファレンス

トランスフォーメーション言語リファレンス

トランスフォーメーション言語リファレンス

LAG

LAG

式トランスフォーメーションで現在の行の前にある行のオフセット番号である値を返します。この関数は、Hadoop環境のSparkエンジンでマッピングを実行するときに、現在の行の値を前の行の値と比較するために使用します。
遅延値は一連のデータの現在の行の前に表示されます。
トランスフォーメーションでLAGを使用するときは、ウィンドウ化のトランスフォーメーションを構成する必要があります。ウィンドウ化プロパティは、データのパーティション化と順序付けの方法を定義します。

構文

LAG (
column_name
,
offset
,
default
)
以下の表に、このコマンドの引数を示します。
引数
必須/
オプション
説明
column_name
必須
関数で操作する対象の列または式。
offset
必須
整数データ型。値の取得元である現在の行の前の行数。
default
オプション
オフセットがパーティションまたはテーブルの境界の外側にある場合に返されるデフォルト値。デフォルトはNULLです。

戻り値

指定された
column_name
のデータ型。
戻り値が指定されたパーティションの境界の外側にある場合は
Default
default
が省略されている場合、またはNULLに設定されている場合は、NULL。

次の式は、前の順序が配置された日付を返します。
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を返しました。
次の例では、組織がトリップ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つ返しました。