👻

BigQueryを使ってみて思ったこと

2 min read
  1. テーブル作成でcsvでアップロードができる。(その時はスキーマ定義をする必要がある)(1行目を飛ばす設定など少しは必要ですが、要は慣れかと)
  2. クエリ結果をグラフ化することができる。(別にアプリケーションや外部ファイルに書き出す必要もない)
  3. データ放り込んでしまえばここで全て解決するんじゃね?
  4. クエリを保存することができるので担当者がクエリを保存するだけで自動的にすることも可能(それこそGASを使えば毎日別のクエリを(曜日によって異なるクエリを実施することも可能じゃね?)
  5. クエリのサイズが明確になるので料金計算しやすい
  6. 除外するとやっぱり少し減る
  7. 1200フィールドの検索対象で大体10KiBとなる。見積もりを出すときは列行/120010
  8. クエリするフィールドを減らすことでコスト削減につながる
  9. Analyticsを分析する場合はUNNEST関数がポイント

サンプル

select key, value.string_value from `flutter-firebase-training.analytics_264646772.events_20210524`
cross join unnest(event_params)
where key like ("regi%")

結果

[
  {
    "key": "registeredUser",
    "string_value": null
  },
  {
    "key": "registeredShopName",
    "string_value": "kumatori"
  },
  {
    "key": "registeredDateTime",
    "string_value": "2021-05-21"
  },
  {
    "key": "registeredDateTime",
    "string_value": "2021-05-21"
  },
  {
    "key": "registeredUser",
    "string_value": null
  },
  {
    "key": "registeredShopName",
    "string_value": "kumatori"
  },
  {
    "key": "registeredUser",
    "string_value": null
  },
  {
    "key": "registeredShopName2",
    "string_value": "hineno"
  },
  {
    "key": "registeredDateTime",
    "string_value": "2021-05-21"
  },
  {
    "key": "registeredShopName3",
    "string_value": "sennan"
  },
  {
    "key": "registeredShopName1",
    "string_value": "kumatori"
  },
  {
    "key": "registeredShopName3",
    "string_value": "sennan"
  },
  {
    "key": "registeredShopName2",
    "string_value": "hineno"
  },
  {
    "key": "registeredShopName1",
    "string_value": "kumatori"
  },
  {
    "key": "registeredUser",
    "string_value": null
  },
  {
    "key": "registeredDateTime",
    "string_value": "2021-05-21"
  },
  {
    "key": "registeredUser",
    "string_value": null
  },
  {
    "key": "registeredShopName1",
    "string_value": "kumatori"
  },
  {
    "key": "registeredShopName3",
    "string_value": "sennan"
  },
  {
    "key": "registeredShopName2",
    "string_value": "hineno"
  },
  {
    "key": "registeredDateTime",
    "string_value": "2021-05-21"
  }
]