SQL分析データ準備と基礎統計#11:時系列データの変数化
幾つか時系列データを変数化する際によく使われる例を以下に記します。
標準化、Zスコア
平均0、標準偏差1の分布に変換します。これは時系列データに限らず変数に利用することもありますし、温度と売上とか、単位の異なる指標を同じ折れ線グラフ上で表示するためにも利用します。
最初の値、最後の値
積上累積式、消費漸近式の指標を切り取る際に用います。例えば走行距離、燃料の残量などです。last_valueの関数はデフォルトの対象行がcurrent rowまでとなっているため、注意が必要です。first_valueで書いてorder byのときに順序をdescにしてあげるか、last_valueならrows between unbounded preceding and unbounded followingとしてあげる必要があります。
前期間値と前期間比
前年値、前年比などを横に並べる際に利用します。lagを用いて期間単位でN行前の値を取得します。注意が必要なのは前期間比をとるときで、分母がゼロだと除算エラーで割ってくれないため、nullなどにしてエラーを回避します。
累積、N期間累積(移動累計)
ウィンドウ関数のrows between ..を用います。型としてはrows between A and BでAとBの間の行を指し、A、BにはN行前(N preceding)、N行後(N following)、現在行(current row)で組み立てます。N行前/後の縛りを入れない場合にはNの代わりにunboundedを利用します。月別履歴で11 preceding and current rowなら、現在行と11行前までで、12ヶ月間の集計をしますし、unbounded preceding and current rowならpartition内の頭から現在行までを取得するので、累積となります。同様にsum()ではなく、avg()を使えば移動平均です。
///