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.
- 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ó
- 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ó
- 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`;
- 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;
- 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
- 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