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
,ciutat
icodi_postal
.comandes
: Camp repetit que conté una llista de comandes, on cada comanda és un camp niat ambcomanda_id
iimport
.
{ "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