LoginSignup
2
2

More than 5 years have passed since last update.

CloudLoggingからBigQueryに流したログ(tsv in json)をみる

Last updated at Posted at 2017-01-22

CloudLoggingのWebコンソールからBigQueryに簡単にエクスポートの設定ができます。
こういうときはtextPayloadを分割するViewを作っておくと便利。

viewのクエリ
-- use regacy sqlはoff
SELECT
  REGEXP_EXTRACT(textPayload,r'^(?:[^\t]*\t){0}([^\t]*).*') AS field1,
  REGEXP_EXTRACT(textPayload,r'^(?:[^\t]*\t){1}([^\t]*).*') AS field2,
  REGEXP_EXTRACT(textPayload,r'^(?:[^\t]*\t){2}([^\t]*).*') AS field3,
  ...
FROM
  `projectname.datasetname.somelogs_*`
;

Use regacy SQLのチェックを外しておくと*でテーブルをワイルドカード指定できるので、CloudLoggingが自動的に日ごとにテーブル分割したログをまとめられます。

課題

BigQueryのクエリは「処理したデータ量」(Query complete (13.1s elapsed, 32.4 MB processed)の32.4MBの部分)に応じて課金ます。インデックスはなく常に全レコードのフルスキャンなので、なるべく条件を減らして参照するカラムを減らしたほうが安く済みます。

料金  |  BigQuery のドキュメント  |  Google Cloud Platform
https://cloud.google.com/bigquery/pricing?hl=ja

上のようにtextPayloadからtsvにするviewを使っているとクエリを投げるたびにtextPayload内が全て読まれるため、無駄です(例えばfield1がhogehogeのときのfield2のcount distinctが欲しい時など)。

なのでデータ量が多いなら予めちゃんとtsvと同じ構造のテーブルにログを入れておいたほうがよいです。
Destination Tableを使うと楽に実現できそうなので今後試します。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2