Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Google BigQuery Data Modeller

By Eben Du ToitMar 5, 20202 min read

Questa pagina è disponibile anche in English, Deutsch, Español, Français, 日本語 e Português.

1 tzqg2nhqfudmca2bc6vilw

Non sa da dove partire per modellare i dati in Google BigQuery? In questo articolo trova una repo semplice e un esempio pratico.

1 tzqg2nhqfudmca2bc6vilwFoto di Steady Hand Co. su Unsplash. Trovi la sua strada tra i dati grezzi seguendo un percorso chiaro.

Oggi nell'etere circolano enormi quantità di dati poco curati. Spesso, chi ci si trova davanti fatica a capire da dove cominciare per dargli un senso e, soprattutto, come strutturarli per renderli davvero utili all'azienda.

Qui propongo l'utilizzo di un semplice script e di una repo che consentono di pubblicare i dati ripuliti come View su Google BigQuery. In più, è possibile sfruttare il templating Jinja per semplificarsi il lavoro e, volendo, predefinire alcune variabili.

Come funziona?

In un file chiamato select_101.sql.j2 si può inserire questa query:

SELECT {{aNumber}} as num

Il riferimento al template aNumber viene letto da un set predefinito di variabili nel file di configurazione configuration.json:

{
"aNumber": 101
}

È previsto anche un file di schema chiamato 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 ]\
```\
\
```\
}\
```\
\
```\
]
````

}

A questo punto è tutto pronto per il deploy su Google BigQuery:
`-m` consente di specificare la metrica da deployare
`-v` indica che si vuole deployare una view
`-d` riceve in input il dataset
`-p` riceve in input il projectId

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

Il risultato è il seguente:
![1 xjb6e ziayoryplnz53ytq](https://media.doit.com/imports/wordpress/2020/03/1306ab6a6531-1_xjb6e_ziayoryplnz53ytq.png)
## Includere template dentro altri template…
Si possono anche includere template all'interno di altri.
In un file chiamato `select_101_include.sql.j2` si può scrivere questa query:

SELECT *

FROM (

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

)

La query verrà renderizzata e deployata così:

SELECT * FROM ( SELECT 101 as num )


Buon modeling!

Vuole approfondire? Visiti il nostro [blog](https://doit.com/blog/) oppure [segua Eben su Twitter](https://twitter.com/eebsidian).

## Risorse

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