公式ドキュメントに記載のある「BigQuery best practices」をまとめてみるシリーズ。
今回は「Managing query outputs」をまとめます。
イタリック体はドキュメントに記載のない追加コメント
クエリアウトプットに関するベストプラクティス
Avoid repeatedly joining the same tables and using the same subqueries.
繰り返し、同じテーブルや同じサブクエリをジョインすることを避ける。
- 何度も同じテーブルをJOINする場合は、ネストされたカラムを利用して非正規化する。
- 何度も同じサブクエリを使う場合は、サブクエリをテーブルとしてマテリアライズする。
Carefully consider materializing large result sets to a destination table. Writing large result sets has performance and cost impacts.
巨大な結果セットを書き込む場合、パフォーマンスとコストに影響があるので注意する。
- キャッシュされた結果セットの上限は10GB程度なので、これを越すと
Response too large
エラーに繋がる - 避けるには、以下の手段を用いる
- 適切にフィルターする
-
ORDER BY
を利用する場合はLIMIT
を利用する - 出力テーブルを指定する
- 巨大なテーブルを作成する場合は、有効期限を設定するなどしてコスト管理する。
If you are sorting a very large number of values, use a LIMIT clause.
巨大なデータセットをそーとする場合、 LIMIT
を利用しよう
- 巨大なデータセットに
ORDER BY
をすると、Resource exceeded
が発生する。これは、ソートの最終ステージは一つのスロットのみで行われるため、スロットの容量を超えてしまうことで発生する。
Top comments (0)