
Google BigQueryでのデータモデリング、どこから始めればよいか迷っていませんか?シンプルなリポジトリと実例で解説します。
Photo by Steady Hand Co. on Unsplash。荒れたデータの中を、見通しの良い道筋で進みましょう。
世の中には、扱いにくいデータが大量に飛び交っています。多くの担当者が、何から手をつけて意味を読み解けばよいのか、そしてさらに重要な点として、自社で活用できる形にどう構造化すればよいのかと頭を抱えています。
本記事では、整形済みのデータをビューとしてGoogle BigQueryに投入できる、シンプルなスクリプトとリポジトリをご紹介します。さらにJinjaのテンプレート機能を使えば作業がぐっと楽になり、お好みで変数をあらかじめ定義しておくことも可能です。
仕組みは?
select_101.sql.j2というファイルに、次のようなクエリを記述します。
SELECT {{aNumber}} as numテンプレート内のaNumberは、設定ファイルconfiguration.jsonであらかじめ定義した変数から読み込まれます。
{ "aNumber": 101}あわせて、select_101.jsonというスキーマファイルも用意します。
{ "metric": "First example", "metric_description": "Select only a constant number as output", "purpose" : "", "usage_example" : "", "usage_description" : "", "fields": [\```\\```\ {\```\\```\ "field": "num",\```\\```\ "description": "A small number",\```\\```\ "type": "INTEGER",\```\\```\ "typical_values": [ 4 ]\```\\```\ }\```\\```\ ]````}
これでGoogle BigQueryへデプロイする準備が整いました。
`-m` デプロイするメトリックを指定
`-v` ビューとしてデプロイすることを指定
`-d` 対象のデータセットを指定
`-p` 対象のprojectIdを指定./compile.py -m select_101.sql.j2 -v -d
実行すると、以下のような結果が表示されます。

## テンプレートの中にテンプレートを読み込む
テンプレートの中に別のテンプレートを読み込むこともできます。
`select_101_include.sql.j2`というファイルに、次のようなクエリを記述します。SELECT *
FROM (
{% include 'select_101/select_101.sql.j2' %}
)
このクエリは次のように展開され、デプロイされます。SELECT * FROM ( SELECT 101 as num )
それでは、よいモデリングを!
ほかの記事もぜひ[ブログ](https://doit.com/blog/)でご覧ください。[EbenのTwitter](https://twitter.com/eebsidian)もおすすめです。
## 参考リソース
[https://github.com/ebendutoit/google-bigquery-data-modeller](https://github.com/ebendutoit/google-bigquery-data-modeller)