1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【BigQuery】クエリキャッシュを使うなら半角スペースひとつ変えてはいけない

Posted at

クエリキャッシュとは

BigQuery は従量課金制のため、クエリを実行するたびにコストがかかります。
ただし SELECT クエリを実行すると結果がキャッシュに保存され、24時間以内に同じクエリを実行した場合はキャッシュから結果を取得できます。その場合はコストがかかりません。

初回のクエリ実行時
image.png

キャッシュ利用時
image.png

クエリキャッシュが効かなくなるケース

クエリ内で CURRENT_DATE() 等を使うとキャッシュが効かなくなるのもそうですが、ここで伝えたいのは記事タイトルの通りです。

公式ドキュメントには制限事項として次のように書かれています。

同じクエリを重複して実行すると、BigQuery はキャッシュに保存された結果を再利用しようとします。キャッシュからデータを取得するには、重複するクエリテキストを元のクエリと同じにする必要があります。

「元のクエリと同じ」とは実質同じではなく、完全に一致するということです。
下記のパターンは全部NG。クエリキャッシュが効かなくなってしまうので注意しましょう。

  • AS句でテーブル or カラムに別名をつけた
  • クエリに改行やスペースを入れた or 消した
  • 予約後を小文字から大文字に変えた(逆も然り)
  • クエリにコメントを入れた or 消した

安全な方法

クエリキャッシュが効くかどうかをクエリ実行前に知ることはできません。
大きなクエリを複数回実行して余計コストをかけたくないですよね。
そんな時はジョブ履歴から前回実行のクエリを探しましょう。

ジョブ履歴なら前回実行したクエリを確認できるのはもちろん、その結果が格納された一時テーブルにアクセスすることもできます。
積極的に利用しましょう。

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?