背景
私は普段AppEngineでWebアプリを作っていますが、ログはStackDriver LoggingからBigQueryへストリーミングインポートさせています。
3ヶ月ほど前のログを漁りたくなり、当然StackDriver側には残っていないためBigQueryを探したのですが書き方が割と面倒だったので備忘としてここに残します。
クエリー内容
timestamp
のカラムに対してWHEREする際、FORMAT_TIMESTAMP()
で好きな形のテキストに直してからそれに対してBETWEEN
で範囲を指定します。
2017年9月16日の05:00:00〜07:00:00までのログが欲しい場合、以下のようになります。
SELECT
*
FROM
`appengine_request.appengine_googleapis_com_request_log_2017091*`
WHERE
FORMAT_TIMESTAMP("%F %T", timestamp, "+09:00")
BETWEEN "2017-09-16 05:00:00" AND "2017-09-16 07:00:00"
ORDER BY
timestamp ASC
注意点
- BigQueryの基本ですが、今回はログ量がそう多くない事が予めわかっていたのであまり気にせず
SELECT *
にしました。大量のログがある合はスキャンの課金が嵩まないように絞りましょう- FROMの参照範囲も今回はいい加減に絞ったのでこれと同様
- AppEngineから流し込むとtimestampはUTCで記録されているので
"+09:00"
を付けて調整します
備考
- アドホックなクエリーなのでBigQueryのWeb画面からクエリーを流しました