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
-
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.
-
Agrupament de Taules:
- Organitzar les dades dins de les particions per valors de columna.
- Redueix el temps de consulta agrupant dades similars juntes.
-
Tipus de Dades Eficients:
- Utilitzar tipus de dades adequats per a les columnes.
- Redueix l'espai d'emmagatzematge i millora el rendiment.
-
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.
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
- 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