記事検索

検索ワードを入力してください。
Sky Tech Blog
SQL Server ~ 1つ前の​行を​参照する​ LAG関数

SQL Server ~ 1つ前の​行を​参照する​ LAG関数

システムやアプリケーションのログをExcelで分析していたが、データ量が増えたためSQL Serverを利用し、LAG関数を使って前の値との差分を計算する方法を紹介しています。

私は業務の中でシステムやアプリケーションのログを分析することが多く、主にExcelへログを取り込んで確認しています。

分析の仕方はいろいろありますが、「前の値との差分を計算して、変化が大きい部分に着目する」といった方法もよく使います。

A B C
1 time Available_Bytes Available Bytes(delta)
2 09:42:14 760,311,808
3 09:42:19 767,492,096 =B3-B2
4 09:42:24 785,698,816

ただ最近は、データ量が多すぎてExcelへ取り込めないといったことも多くなり、その代わりとしてSQL Serverを利用することが増えてきました。

SQL Serverで、「前の値との差分を計算して、変化が大きい部分に着目する」といったことができないかと調べたところ、LAG関数で実現できることが分かりました。

例えば、以下のようなクエリを使用します。

SELECT *,
Available_Bytes - (LAG(Available_Bytes) OVER (ORDER BY [time])) Available_Bytes_Delta
FROM [Memory]
time Available_Bytes Available_Bytes_Delta
09:42:14 760,311,808 NULL
09:42:19 767,492,096 7,180,288
09:42:24 785,698,816 18,206,720

このクエリではLAG関数を使用して、前の行のAvailable_Bytesの値を取得し、現在の行のAvailable_Bytesとの差分を計算しています。

SQL ServerではExcelで計算しにくかった日時の差分など、少し凝った分析も進めやすくなりそうですので、使いこなせるように勉強していきたいと思います。


\シェアをお願いします!/
  • X
  • Facebook
  • LINE
キャリア採用募集中!

入社後にスキルアップを目指す若手の方も、ご自身の経験を幅広いフィールドで生かしたいベテランの方も、お一人おひとりの経験に応じたキャリア採用を行っています。

Sky株式会社のソフトウェア開発や製品、採用に関するお問い合わせについては、下記のリンクをご確認ください。
お問い合わせ
ホーム