Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Google BigQuery Data Modeller

By Eben Du ToitMar 5, 20202 min read

Diese Seite ist auch in English, Español, Français, Italiano, 日本語 und Português verfügbar.

1 tzqg2nhqfudmca2bc6vilw

Sie wissen nicht, wo Sie bei der Datenmodellierung in Google BigQuery anfangen sollen? Dieser Beitrag zeigt es Ihnen – mit Repo und Beispiel.

1 tzqg2nhqfudmca2bc6vilwFoto von Steady Hand Co. auf Unsplash. Mit klarem Kurs durchs Datendickicht.

Heute schwirren Unmengen unsauberer Daten durchs Netz. Und davor sitzen oft ziemlich frustrierte Leute, die sich fragen, wo sie überhaupt anfangen sollen, um daraus etwas Sinnvolles zu machen – und vor allem, wie sich diese Daten so strukturieren lassen, dass sie für das eigene Unternehmen wirklich nutzbar werden.

Ich schlage hier ein schlankes Skript samt Repo vor, mit dem Sie Ihre bereinigten Daten als Views nach Google BigQuery bringen. Zusätzlich können Sie Jinja-Templating einsetzen, um sich die Arbeit zu erleichtern, und bei Bedarf sogar Variablen vordefinieren.

Wie funktioniert das?

In einer Datei namens select_101.sql.j2 können Sie folgende Query hinterlegen:

SELECT {{aNumber}} as num

Die Template-Referenz aNumber stammt aus einem vordefinierten Variablensatz in der Konfigurationsdatei configuration.json:

{
"aNumber": 101
}

Außerdem gibt es eine Schemadatei namens 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 ]\
```\
\
```\
}\
```\
\
```\
]
````

}

Jetzt können Sie das Ganze nach Google BigQuery deployen:
`-m` gibt die zu deployende Metrik an
`-v` signalisiert, dass Sie eine View deployen möchten
`-d` übernimmt Ihr Dataset
`-p` übernimmt Ihre projectId

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

Und Sie erhalten folgende Ausgabe:
![1 xjb6e ziayoryplnz53ytq](https://media.doit.com/imports/wordpress/2020/03/1306ab6a6531-1_xjb6e_ziayoryplnz53ytq.png)
## Templates in Templates einbinden …
Sie können Templates auch ineinander verschachteln.
In einer Datei namens `select_101_include.sql.j2` können Sie folgende Query hinterlegen:

SELECT *

FROM (

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

)

Die Query wird gerendert und deployt als:

SELECT * FROM ( SELECT 101 as num )


Viel Erfolg beim Modellieren!

Lust auf mehr? Schauen Sie in unserem [Blog](https://doit.com/blog/) vorbei oder [folgen Sie Eben auf Twitter](https://twitter.com/eebsidian).

## Ressourcen

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