Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Modélisation de données dans Google BigQuery

By Eben Du ToitMar 5, 20202 min read

Cette page est également disponible en English, Deutsch, Español, Italiano, 日本語 et Português.

1 tzqg2nhqfudmca2bc6vilw

Par où commencer pour modéliser vos données dans Google BigQuery ? Cet article vous met sur les rails avec un repo simple et un exemple concret.

1 tzqg2nhqfudmca2bc6vilwPhoto de Steady Hand Co. sur Unsplash. Tracez votre chemin à travers des données brutes.

Aujourd'hui, des quantités de données mal dégrossies circulent un peu partout. Et bien souvent, des équipes excédées se demandent par où commencer pour y voir clair, et surtout comment les structurer afin qu'elles deviennent réellement utiles à l'entreprise.

Je vous propose ici un script et un repo simples pour pousser vos données nettoyées sous forme de Views vers Google BigQuery. Vous pouvez aussi vous appuyer sur le templating Jinja pour vous faciliter la tâche, et même prédéfinir certaines variables si vous le souhaitez.

Comment ça marche ?

Dans un fichier nommé select_101.sql.j2, vous pouvez écrire cette requête :

SELECT {{aNumber}} as num

La référence de template aNumber est tirée d'un ensemble de variables prédéfinies dans un fichier de configuration configuration.json :

{
"aNumber": 101
}

Vous disposez également d'un fichier de schéma nommé 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 ]\
```\
\
```\
}\
```\
\
```\
]
````

}

Vous êtes prêt à déployer le tout dans Google BigQuery :
`-m` permet d'indiquer la métrique à déployer
`-v` indique que vous souhaitez déployer une view
`-d` prend votre dataset en entrée
`-p` prend votre projectId en entrée

./compile.py -m select_101.sql.j2 -v -d -p

Et voici le résultat obtenu :
![1 xjb6e ziayoryplnz53ytq](https://media.doit.com/imports/wordpress/2020/03/1306ab6a6531-1_xjb6e_ziayoryplnz53ytq.png)
## Imbriquer des templates…
Vous pouvez aussi imbriquer un template dans un autre.
Dans un fichier nommé `select_101_include.sql.j2`, vous pouvez écrire cette requête :

SELECT *

FROM (

{% include 'select_101/select_101.sql.j2' %}

)

La requête sera rendue et déployée comme suit :

SELECT * FROM ( SELECT 101 as num )


Bonne modélisation !

Envie de lire d'autres articles ? Consultez notre [blog](https://doit.com/blog/), ou [suivez Eben sur Twitter](https://twitter.com/eebsidian).

## Ressources

[https://github.com/ebendutoit/google-bigquery-data-modeller](https://github.com/ebendutoit/google-bigquery-data-modeller)