BigQuery でデータエンジニアリングするときに使ったドキュメントまとめた

# 用途
- BigQuery で機械学習のデータの大規模分析を高速にやりたい
- BigQuery 書けてきたからチューニングしたい
- BigQuery で機械学習プロダクトのデータエンジニアリングしたい

# 公式ドキュメント
英語の方が更新早い、日本語更新されてないことがしばしばある。

## [BigQuery の料金](https://cloud.google.com/bigquery/pricing)
BigQuery の料金体系はわかりやすく、5 $ / 参照データ TB 。(2019年12月18日現在)

## [割り当てと上限](https://cloud.google.com/bigquery/quotas)
実用に値するかは、上限を確認しよう。

## [標準 SQL 関数と演算子](https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-and-operators)
便利な関数が用意されている。数字をこねる前に、実装がないか確認しよう。

## [BigQuery のおすすめの方法: ストレージの最適化](https://cloud.google.com/bigquery/docs/best-practices-storage)
保存コストがかかりすぎる？Google のベストプラクティスを見よう。

## [クエリ パフォーマンスの最適化の概要](https://cloud.google.com/bigquery/docs/best-practices-performance-overview)
クエリが遅い？まずは Google のベストプラクティスを確認しよう。

## [BigQuery のおすすめの方法: 費用を抑える](https://cloud.google.com/bigquery/docs/best-practices-costs)
クエリが高い？汎用的なポイントは Google のベストプラクティスを確認しよう。

## [BigQuery Release notes](https://cloud.google.com/bigquery/docs/release-notes)
BigQuery のリリースノート。日本語じゃないけど、苦労が激減するアップデートがあるかも。


# SQL はじめての方
## [SQL Cheat Sheet](http://www.sqltutorial.org/wp-content/uploads/2016/04/SQL-cheat-sheet.pdf)
Cheat Sheet が良くまとまっているので（英語）、書きながらクエリに慣れよう。

# BigQuery はじめての方

## [BigQuery サンドボックスの使用](https://cloud.google.com/bigquery/docs/sandbox)
サンドボックスモードなら、クレジットカード不要で登録して、無料枠を使い倒せる。まずは触ろう。

## command + e と WITH 句を使いこなす
サブクエリで複雑なクエリ書くのは難しいため、WITH 句でクエリを分割して command + e で選択部分の実行して、正しいを積み重ねてクエリを書く。ちなみに、command + return で全体実行できる。

## [BigQuery FAQ](https://cloud-textbook.com/3635/)
BigQuery について FAQ 形式で調査したい時に見る。

# BigQuery に慣れてきたら

## [Google BigQuery: The Definitive Guide](https://learning.oreilly.com/library/view/google-bigquery-the/9781492044451/)
BigQuery のドキュメンタリを交えつつ、BigQuery の使い方を体系的に学べる良書。（英語）

## [BigQueryによるデータ分析のための前処理Tips](https://techblog.zozo.com/entry/bigquery_data_reduction)
データ前処理の鉄板の方法がまとまっている。

## [BigQuery の ベストプラクティス 〜 2017年度版 〜](https://qiita.com/tkngue/items/a6f6f21dabe392041af8)
実践的節約方法がまとまっている。

## [BigqueryStandardSQLの黒魔術ってなに！？記してみました！](https://medium.com/eureka-engineering/bigquery-standard-sql-f13b04c0b6c4)
BigQuery のちょっと便利な技法がまとまっている。

## [安い速い旨い BigQuery の 19 の最適化法](https://qiita.com/na0/items/2b58237cae08a217e3a7)
そこそこ使えるグレーゾーン節約方法までをまとめている。

## [BigQuery — WITHはネストできる ( サブクエリの中に書ける )](https://qiita.com/YumaInaura/items/2e5ffdec04224bf0620f)
サブクエリを避けて WITH 句で構造を持った SQL を書こう。

## [【BigQuery】LAG関数，LEAD関数の使い方](https://qiita.com/kota_fujimura/items/cff732bb9acb47510a03)
分析関数を使えるようになろう。サブクエリが減って高速化が目指せるかも。

## [My 15th solution features (mainly using BigQuery)](https://www.kaggle.com/tkm2261/my-15th-solution-features-mainly-using-bigquery)
BigQuery 中心の Kaggle 解法。


## [BigQueryで統計量を出す時に使うクエリメモ](https://qiita.com/hagino3000/items/e9ed62638ebe54391188)
関数で作れる統計量からそうでないものまで。

# コーディングスタイル
各人が巨大なクエリ作成すると、品質保持できないので、共通認識を持つ。

## [分析SQLのコーディングスタイル](https://techlife.cookpad.com/entry/2016/11/09/000033)

## [BigQueryで読みやすいSQLを書くコツ - たったの３つであなたの意図はもっと伝わる。](https://techblog.timers-inc.com/entry/2018/01/29/122206)

## [Bigquery時代における、分析SQLコーディングスタイルの提唱](https://qiita.com/piyoSakai/items/e1b97366ca5940dad517)

## [Colaboratoryを使ったSQLレビューのすヽめ](https://qiita.com/hogeta_/items/0a8e1566be7d00d567aa)

## [データ分析のためのSQLコード規約を考えた。](https://qiita.com/msdtakashi/items/91b2aaf6b1e492de9ba0)

# データ基盤
## [データ基盤構築をする際におさえておくべき7つのポイント](https://qiita.com/munaita_/items/7b666903a08e6b2543cb)
BigQuery / GCP 中心アーキテクチャを採用する場合の悩みポイントがまとまっている。

## [BigQuery アクセス権設定まとめ & グループ設計例](https://qiita.com/na0/items/dcb7030a1b5c5e707807)
BigQuery のアクセス権の設定についてまとめた。

# 便利ツール

## [AlphaSQL](https://github.com/Matts966/alphasql)
ZetaSQLのフォークで、スキーマチェックや依存関係解消して実行してくれる。

### [bq-airflow-dag-generator](https://github.com/Matts966/bq-airflow-dag-generator)
AlphaSQLの子供で、SQLクエリの依存関係を解消した結果をAirflow DAGにしてくれる。

## [BigQuery Data Lineage](https://github.com/GoogleCloudPlatform/bigquery-data-lineage)
Audit LogsやPub/Sub、Dataflow、Data Catalogを使ってData Lineageしてくれる。

## [ZetaSQL Formatter](https://github.com/Matts966/zetasql-formatter)
ZetaSQLのフォークで、SQLファイルをフォーマットしてくれます。
ZetaSQL 2020.04.01をそのまま使うとコメントが落ちてしまう不具合が解消されている。

## [BigQueryのクエリ結果の各種統計値を1コマンドで算出するbq_profileの紹介](https://qiita.com/rhoboro/items/c61e81246f87d346e656)
BigQuery のクエリ結果の統計値を出せる。pandas で開けないときに。

## [BigQuery View Analyzer](https://github.com/servian/bigquery-view-analyzer)
VIEW の依存関係を可視化してくれる。

## [BigQueryデータ基盤のテーブル依存関係を管理する](https://qiita.com/munaita_/items/0114dad655f6ccf758bf)
BigQueryの INFORMATION_SCHEMA.JOBS_BY_PROJECTから、データマートと依存テーブルのマッピングを生成してくれる。

## [BigQuery Visualiser](https://github.com/GoogleCloudPlatform/professional-services/tree/master/tools/bq-visualizer)
BigQuery の実行計画を可視化してくれる。クエリチューニングの際に。

## [実録！BigQuery 警察24時: コストのかかるクエリ一斉取り締まり SP 👮💰](https://qiita.com/kyoshidajp/items/5855b66d8c4d0dfb6cce)
課金額増大の犯 JOB を調査したい時に。

# BigQuery Storage API
従来の API より高速にデータをダウンロードできる。マシンでしかできない分析がある時に。

## [BigQuery Storage APIの速度比較をやってみる](https://qiita.com/n-suzuki/items/a67155ee6fffa07f2707)

# BigQuery BI Engine
BI 連携を超速に。

## [BigQuery BI Engine解説](https://ex-ture.com/blog/2019/04/14/bigquery-bi-engine/)

# Data Portal(Data Studio)

BigQuery BI Engine でリアルタイム、データ可視化。

## [データポータルへようこそ](https://support.google.com/datastudio/answer/6283323)

# BigQuery ML
BigQuery だけで機械学習できる。

## [BigQuery MLの使い方についてのまとめ](https://qiita.com/Hase8388/items/5631ffd31380fb5337c8)

## [BQMLに新たに追加されたTRANSFORM句で、モデルの前処理を自動的に行う](https://qiita.com/Hase8388/items/2b95533c491879f7719f)


# Airflow
BigQuery 中心のデータパイプラインを作る時に。

## [Airflowを使用してDWH向けデータパイプラインを作る](https://qiita.com/yakamazu/items/aff066b0ae811dd61f02)

# Connected Sheets
SQL を書かずに、BigQuery のデータをフィルタしたりできる。公開待ち。