Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Google BigQuery Data Modeller

By Eben Du ToitMar 5, 20202 min read

Esta página também está disponível em English, Deutsch, Español, Français, Italiano e 日本語.

1 tzqg2nhqfudmca2bc6vilw

Não sabe por onde começar a modelar seus dados no Google BigQuery? Este post te ajuda com um repositório simples e um exemplo prático.

1 tzqg2nhqfudmca2bc6vilwFoto de Steady Hand Co. no Unsplash. Abra um caminho claro em meio aos dados brutos.

Hoje, muito dado bagunçado circula por aí. E, normalmente, tem gente bem frustrada se perguntando por onde começar a fazer sentido disso tudo e, mais importante, como estruturar essas informações para que sejam úteis para a empresa.

Aqui eu proponho usar um script e um repositório simples que permitem subir seus dados já tratados como Views para o Google BigQuery. Além disso, dá para usar templates do Jinja para facilitar a vida e até pré-definir algumas variáveis, se quiser.

Como funciona?

Em um arquivo chamado select_101.sql.j2, você pode ter esta query:

SELECT {{aNumber}} as num

A referência aNumber do template vem de um conjunto pré-definido de variáveis no arquivo de configuração configuration.json:

{
"aNumber": 101
}

Você também tem um arquivo de schema chamado 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 ]\
```\
\
```\
}\
```\
\
```\
]
````

}

Agora é só fazer o deploy disso no Google BigQuery:
`-m` permite informar a métrica que vai entrar em deploy
`-v` indica que você quer fazer o deploy de uma view
`-d` recebe seu dataset como entrada
`-p` recebe seu projectId como entrada

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

E você obtém esta saída:
![1 xjb6e ziayoryplnz53ytq](https://media.doit.com/imports/wordpress/2020/03/1306ab6a6531-1_xjb6e_ziayoryplnz53ytq.png)
## Incluindo templates dentro de templates…
Você também pode incluir um template dentro de outro.
Em um arquivo chamado `select_101_include.sql.j2`, você pode ter esta query:

SELECT *

FROM (

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

)

A query será renderizada e implantada assim:

SELECT * FROM ( SELECT 101 as num )


Boa modelagem!

Quer mais conteúdos como este? Confira nosso [blog](https://doit.com/blog/) ou [siga o Eben no Twitter](https://twitter.com/eebsidian).

## Recursos

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