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 camps carrer, ciutat i codi_postal.
  • comandes: Camp repetit que conté una llista de comandes, on cada comanda és un camp niat amb comanda_id i import.
{
  "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 camps preu (float) i stock (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ó:

SELECT
  nom,
  detalls.preu
FROM
  `projecte.dataset.productes`;

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

Mòdul 2: SQL bàsic a BigQuery

Mòdul 3: SQL intermedi a BigQuery

Mòdul 4: SQL avançat a BigQuery

Mòdul 5: Gestió de dades a BigQuery

Mòdul 6: Optimització del rendiment de BigQuery

Mòdul 7: Seguretat i compliment de BigQuery

Mòdul 8: Integració i automatització de BigQuery

Mòdul 9: Aprenentatge automàtic a BigQuery (BQML)

Mòdul 10: Casos d'ús de BigQuery en el món real

© Copyright 2024. Tots els drets reservats