Introducció
En aquest tema, explorarem els camps niats i repetits a BigQuery. Aquests tipus de camps permeten emmagatzemar dades complexes i estructurades dins d'una sola taula, cosa que pot simplificar l'anàlisi de dades relacionades. Aprendrem com crear, consultar i gestionar aquests camps.
Objectius
- Comprendre què són els camps niats i repetits.
- Aprendre a crear taules amb camps niats i repetits.
- Escriure consultes per accedir i manipular dades en camps niats i repetits.
- Veure exemples pràctics d'ús.
Què són els camps niats i repetits?
Camps niats
Els camps niats són camps que contenen altres camps dins d'ells, creant una estructura jeràrquica. Això és útil per representar dades que tenen una relació de pare-fill.
Camps repetits
Els camps repetits són camps que poden contenir múltiples valors del mateix tipus. Això és útil per representar llistes o col·leccions de dades.
Exemple d'estructura
Considerem una taula clients amb la següent estructura:
client_id: Identificador únic del client.nom: Nom del client.adreça: Camp niat que conté els campscarrer,ciutaticodi_postal.comandes: Camp repetit que conté una llista de comandes, on cada comanda és un camp niat ambcomanda_idiimport.
{
"client_id": "123",
"nom": "Joan",
"adreça": {
"carrer": "Carrer Major, 1",
"ciutat": "Barcelona",
"codi_postal": "08001"
},
"comandes": [
{
"comanda_id": "001",
"import": 100.50
},
{
"comanda_id": "002",
"import": 200.75
}
]
}Creació de taules amb camps niats i repetits
Definició de l'esquema
Per crear una taula amb camps niats i repetits, primer hem de definir l'esquema. A continuació es mostra com definir l'esquema per a la taula clients:
CREATE TABLE `projecte.dataset.clients` (
client_id STRING,
nom STRING,
adreça STRUCT<
carrer STRING,
ciutat STRING,
codi_postal STRING
>,
comandes ARRAY<STRUCT<
comanda_id STRING,
import FLOAT64
>>
);Inserció de dades
Podem inserir dades a la taula clients utilitzant la següent consulta:
INSERT INTO `projecte.dataset.clients` (client_id, nom, adreça, comandes)
VALUES (
'123',
'Joan',
STRUCT('Carrer Major, 1', 'Barcelona', '08001'),
[
STRUCT('001', 100.50),
STRUCT('002', 200.75)
]
);Consultes amb camps niats i repetits
Accés a camps niats
Per accedir a camps niats, utilitzem la notació de punt (.):
SELECT client_id, nom, adreça.carrer, adreça.ciutat, adreça.codi_postal FROM `projecte.dataset.clients`;
Desplegament de camps repetits
Per desplegar camps repetits, utilitzem la funció UNNEST:
SELECT client_id, nom, comanda.comanda_id, comanda.import FROM `projecte.dataset.clients`, UNNEST(comandes) AS comanda;
Exemple pràctic
Suposem que volem obtenir el total d'import de totes les comandes per a cada client:
SELECT client_id, nom, SUM(comanda.import) AS total_import FROM `projecte.dataset.clients`, UNNEST(comandes) AS comanda GROUP BY client_id, nom;
Exercicis pràctics
Exercici 1
Crea una taula productes amb els següents camps:
producte_id: Identificador únic del producte.nom: Nom del producte.categories: Camp repetit que conté una llista de categories (strings).detalls: Camp niat que conté els campspreu(float) istock(integer).
Solució:
CREATE TABLE `projecte.dataset.productes` (
producte_id STRING,
nom STRING,
categories ARRAY<STRING>,
detalls STRUCT<
preu FLOAT64,
stock INT64
>
);Exercici 2
Insereix un producte a la taula productes amb les següents dades:
producte_id: "001"nom: "Ordinador Portàtil"categories: ["Electrònica", "Informàtica"]detalls:preu: 999.99,stock: 50
Solució:
INSERT INTO `projecte.dataset.productes` (producte_id, nom, categories, detalls) VALUES ( '001', 'Ordinador Portàtil', ['Electrònica', 'Informàtica'], STRUCT(999.99, 50) );
Exercici 3
Escriu una consulta per obtenir el nom del producte i el preu de tots els productes de la taula productes.
Solució:
Conclusió
En aquest tema, hem après què són els camps niats i repetits, com crear taules que els continguin i com escriure consultes per accedir i manipular aquestes dades. Els camps niats i repetits són eines poderoses per gestionar dades complexes i estructurades a BigQuery. Amb la pràctica, podràs utilitzar aquestes tècniques per simplificar i millorar les teves anàlisis de dades.
Curs de BigQuery
Mòdul 1: Introducció a BigQuery
- Què és BigQuery?
- Configurar el teu entorn de BigQuery
- Comprendre l'arquitectura de BigQuery
- Visió general de la consola de BigQuery
Mòdul 2: SQL bàsic a BigQuery
Mòdul 3: SQL intermedi a BigQuery
Mòdul 4: SQL avançat a BigQuery
- Unions avançades
- Camps niats i repetits
- Funcions definides per l'usuari (UDFs)
- Particionament i agrupament
Mòdul 5: Gestió de dades a BigQuery
- Carregar dades a BigQuery
- Exportar dades de BigQuery
- Transformació i neteja de dades
- Gestió de conjunts de dades i taules
Mòdul 6: Optimització del rendiment de BigQuery
- Tècniques d'optimització de consultes
- Comprendre els plans d'execució de consultes
- Ús de vistes materialitzades
- Optimització de l'emmagatzematge
Mòdul 7: Seguretat i compliment de BigQuery
Mòdul 8: Integració i automatització de BigQuery
- Integració amb serveis de Google Cloud
- Ús de BigQuery amb Dataflow
- Automatització de fluxos de treball amb Cloud Functions
- Programació de consultes amb Cloud Scheduler
Mòdul 9: Aprenentatge automàtic a BigQuery (BQML)
- Introducció a BigQuery ML
- Creació i entrenament de models
- Avaluació i predicció amb models
- Funcions avançades de BQML
