En aquest tema, aprendrem diverses tècniques per optimitzar les consultes a BigQuery. L'optimització de consultes és crucial per millorar el rendiment, reduir els costos i assegurar-se que les consultes s'executin de manera eficient. A continuació, es presenten les tècniques clau per optimitzar les consultes a BigQuery.

  1. Seleccionar només les columnes necessàries

Explicació

Quan escrivim consultes, és important seleccionar només les columnes que realment necessitem. Això redueix la quantitat de dades que BigQuery ha de processar, la qual cosa pot millorar significativament el rendiment de la consulta.

Exemple

-- Evita seleccionar totes les columnes amb SELECT *
SELECT name, age, email
FROM `project.dataset.table`
WHERE age > 30;

Exercici

Escriu una consulta que seleccioni només les columnes product_id i product_name d'una taula products on el preu sigui superior a 100.

Solució

SELECT product_id, product_name
FROM `project.dataset.products`
WHERE price > 100;

  1. Utilitzar filtres adequats

Explicació

L'ús de filtres adequats en les consultes pot reduir la quantitat de dades que BigQuery ha de processar. Això es pot aconseguir utilitzant la clàusula WHERE per filtrar les dades abans de processar-les.

Exemple

-- Filtra les dades abans de processar-les
SELECT name, age
FROM `project.dataset.table`
WHERE age > 30;

Exercici

Escriu una consulta que seleccioni els noms i les edats de les persones d'una taula people on l'edat sigui superior a 25 i el país sigui 'Spain'.

Solució

SELECT name, age
FROM `project.dataset.people`
WHERE age > 25 AND country = 'Spain';

  1. Utilitzar particionament i agrupament

Explicació

El particionament i l'agrupament de taules poden millorar significativament el rendiment de les consultes. El particionament divideix una taula en segments més petits basats en una columna específica, mentre que l'agrupament organitza les dades dins de cada partició.

Exemple

-- Crear una taula particionada per data
CREATE TABLE `project.dataset.partitioned_table`
PARTITION BY DATE(timestamp_column) AS
SELECT * FROM `project.dataset.original_table`;

Exercici

Crea una taula particionada per la columna order_date a partir d'una taula orders.

Solució

CREATE TABLE `project.dataset.partitioned_orders`
PARTITION BY DATE(order_date) AS
SELECT * FROM `project.dataset.orders`;

  1. Utilitzar vistes materialitzades

Explicació

Les vistes materialitzades emmagatzemen els resultats d'una consulta i es poden actualitzar periòdicament. Això pot millorar el rendiment de les consultes que es realitzen freqüentment sobre les mateixes dades.

Exemple

-- Crear una vista materialitzada
CREATE MATERIALIZED VIEW `project.dataset.materialized_view` AS
SELECT product_id, SUM(sales) AS total_sales
FROM `project.dataset.sales`
GROUP BY product_id;

Exercici

Crea una vista materialitzada que calculi el total de vendes per cada customer_id a partir d'una taula sales.

Solució

CREATE MATERIALIZED VIEW `project.dataset.customer_sales` AS
SELECT customer_id, SUM(sales) AS total_sales
FROM `project.dataset.sales`
GROUP BY customer_id;

  1. Utilitzar funcions de finestra amb cura

Explicació

Les funcions de finestra poden ser molt útils, però també poden ser costoses en termes de rendiment. És important utilitzar-les amb cura i només quan sigui necessari.

Exemple

-- Utilitzar funcions de finestra per calcular el rang de vendes
SELECT product_id, sales,
       RANK() OVER (PARTITION BY category ORDER BY sales DESC) AS sales_rank
FROM `project.dataset.sales`;

Exercici

Escriu una consulta que utilitzi una funció de finestra per calcular el total acumulat de vendes per cada product_id en una taula sales.

Solució

SELECT product_id, sales,
       SUM(sales) OVER (PARTITION BY product_id ORDER BY sale_date) AS cumulative_sales
FROM `project.dataset.sales`;

Conclusió

En aquesta secció, hem après diverses tècniques per optimitzar les consultes a BigQuery, incloent seleccionar només les columnes necessàries, utilitzar filtres adequats, particionament i agrupament, vistes materialitzades i funcions de finestra. Aplicar aquestes tècniques pot ajudar a millorar el rendiment de les consultes i reduir els costos associats amb l'ús de BigQuery. En el proper tema, explorarem com comprendre els plans d'execució de consultes per identificar i solucionar problemes de rendiment.

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