En aquest tema, aprendrem com optimitzar l'emmagatzematge a BigQuery per millorar el rendiment i reduir els costos. L'optimització de l'emmagatzematge és crucial per gestionar grans volums de dades de manera eficient. A continuació, desglossarem els conceptes clau, proporcionarem exemples pràctics i oferirem exercicis per reforçar els coneixements adquirits.

Conceptes Clau

  1. Particionament de Taules:

    • Dividir una taula gran en segments més petits basats en valors de columna.
    • Millora el rendiment de les consultes i redueix els costos d'escaneig de dades.
  2. Agrupament de Taules:

    • Organitzar les dades dins de les particions per valors de columna.
    • Redueix el temps de consulta agrupant dades similars juntes.
  3. Tipus de Dades Eficients:

    • Utilitzar tipus de dades adequats per a les columnes.
    • Redueix l'espai d'emmagatzematge i millora el rendiment.
  4. Eliminació de Dades Innecessàries:

    • Netejar dades obsoletes o duplicades.
    • Redueix l'espai d'emmagatzematge i millora la qualitat de les dades.

Particionament de Taules

Explicació

El particionament de taules permet dividir una taula gran en segments més petits basats en valors de columna, com ara dates. Això permet que les consultes només escanegin les particions necessàries, millorant el rendiment i reduint els costos.

Exemple Pràctic

-- Crear una taula particionada per data
CREATE TABLE my_dataset.sales_data (
  sale_id INT64,
  sale_date DATE,
  amount FLOAT64
)
PARTITION BY sale_date;

Explicació del Codi

  • CREATE TABLE: Crea una nova taula.
  • PARTITION BY sale_date: Particiona la taula per la columna sale_date.

Agrupament de Taules

Explicació

L'agrupament de taules organitza les dades dins de les particions per valors de columna, com ara categories de productes. Això redueix el temps de consulta agrupant dades similars juntes.

Exemple Pràctic

-- Crear una taula particionada i agrupada
CREATE TABLE my_dataset.sales_data (
  sale_id INT64,
  sale_date DATE,
  product_category STRING,
  amount FLOAT64
)
PARTITION BY sale_date
CLUSTER BY product_category;

Explicació del Codi

  • CLUSTER BY product_category: Agrupa les dades dins de les particions per la columna product_category.

Tipus de Dades Eficients

Explicació

Utilitzar tipus de dades adequats per a les columnes pot reduir l'espai d'emmagatzematge i millorar el rendiment. Per exemple, utilitzar INT64 en lloc de STRING per a identificadors numèrics.

Exemple Pràctic

-- Crear una taula amb tipus de dades eficients
CREATE TABLE my_dataset.optimized_data (
  user_id INT64,
  user_name STRING,
  signup_date DATE
);

Explicació del Codi

  • INT64: Utilitzat per a identificadors numèrics.
  • STRING: Utilitzat per a cadenes de text.
  • DATE: Utilitzat per a dates.

Eliminació de Dades Innecessàries

Explicació

Eliminar dades obsoletes o duplicades pot reduir l'espai d'emmagatzematge i millorar la qualitat de les dades.

Exemple Pràctic

-- Eliminar dades duplicades
DELETE FROM my_dataset.sales_data
WHERE sale_id IN (
  SELECT sale_id
  FROM (
    SELECT sale_id, COUNT(*) AS count
    FROM my_dataset.sales_data
    GROUP BY sale_id
    HAVING count > 1
  )
);

Explicació del Codi

  • DELETE FROM: Elimina dades de la taula.
  • HAVING count > 1: Selecciona les files duplicades.

Exercicis Pràctics

Exercici 1: Crear una Taula Particionada

Crea una taula particionada per la columna order_date en el conjunt de dades ecommerce.

CREATE TABLE ecommerce.orders (
  order_id INT64,
  order_date DATE,
  customer_id INT64,
  total_amount FLOAT64
)
PARTITION BY order_date;

Exercici 2: Agrupar una Taula

Agrupa la taula ecommerce.orders per la columna customer_id.

CREATE TABLE ecommerce.orders (
  order_id INT64,
  order_date DATE,
  customer_id INT64,
  total_amount FLOAT64
)
PARTITION BY order_date
CLUSTER BY customer_id;

Exercici 3: Optimitzar Tipus de Dades

Revisa la taula ecommerce.customers i canvia els tipus de dades per a una millor eficiència.

CREATE TABLE ecommerce.customers (
  customer_id INT64,
  customer_name STRING,
  signup_date DATE
);

Exercici 4: Eliminar Dades Duplicades

Elimina les files duplicades de la taula ecommerce.orders.

DELETE FROM ecommerce.orders
WHERE order_id IN (
  SELECT order_id
  FROM (
    SELECT order_id, COUNT(*) AS count
    FROM ecommerce.orders
    GROUP BY order_id
    HAVING count > 1
  )
);

Resum

En aquest tema, hem après com optimitzar l'emmagatzematge a BigQuery mitjançant el particionament i l'agrupament de taules, l'ús de tipus de dades eficients i l'eliminació de dades innecessàries. Aquestes tècniques ajuden a millorar el rendiment de les consultes i a reduir els costos d'emmagatzematge. A continuació, passarem a tècniques d'optimització de consultes per millorar encara més el rendiment de BigQuery.

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