En aquest tema, explorarem dues tècniques avançades per optimitzar el rendiment de les consultes a BigQuery: el particionament i l'agrupament. Aquestes tècniques ajuden a millorar l'eficiència de les consultes reduint la quantitat de dades que cal escanejar.
Què és el particionament?
El particionament és una tècnica que divideix una taula gran en parts més petites i manejables, anomenades particions. Cada partició conté un subconjunt de les dades de la taula, i les consultes poden escanejar només les particions necessàries en lloc de tota la taula.
Tipus de particionament a BigQuery
-
Particionament per temps d'ingestió:
- Les dades es particionen automàticament en funció del temps en què es van ingerir a la taula.
- Útil per a dades que arriben contínuament, com registres de logs.
-
Particionament per columna de temps:
- Les dades es particionen en funció d'una columna de tipus
TIMESTAMP
,DATE
oDATETIME
. - Útil per a dades històriques o dades que tenen una columna de temps específica.
- Les dades es particionen en funció d'una columna de tipus
-
Particionament per interval d'ingestió:
- Similar al particionament per temps d'ingestió, però permet definir intervals personalitzats.
Exemple de particionament per columna de temps
CREATE TABLE my_dataset.my_partitioned_table ( id INT64, name STRING, created_at TIMESTAMP ) PARTITION BY DATE(created_at);
En aquest exemple, la taula my_partitioned_table
es particiona en funció de la columna created_at
.
Beneficis del particionament
- Millora del rendiment: Les consultes poden escanejar només les particions necessàries.
- Reducció de costos: Menys dades escanejades significa menys costos.
- Gestió més fàcil: Les dades es poden gestionar de manera més eficient.
Què és l'agrupament?
L'agrupament és una tècnica que organitza les dades dins d'una partició en funció d'una o més columnes. Això permet que les consultes que filtren o ordenen per aquestes columnes siguin més eficients.
Exemple d'agrupament
CREATE TABLE my_dataset.my_clustered_table ( id INT64, name STRING, created_at TIMESTAMP ) PARTITION BY DATE(created_at) CLUSTER BY name;
En aquest exemple, la taula my_clustered_table
es particiona per la columna created_at
i es clusteritza per la columna name
.
Beneficis de l'agrupament
- Millora del rendiment: Les consultes que filtren o ordenen per les columnes agrupades són més ràpides.
- Optimització de l'emmagatzematge: Les dades similars es guarden juntes, millorant l'eficiència de l'emmagatzematge.
Exercicis pràctics
Exercici 1: Crear una taula particionada
Crea una taula particionada per la columna created_at
en el teu conjunt de dades.
CREATE TABLE my_dataset.sales_data ( sale_id INT64, product_id INT64, sale_amount FLOAT64, created_at TIMESTAMP ) PARTITION BY DATE(created_at);
Exercici 2: Crear una taula particionada i agrupada
Crea una taula particionada per la columna created_at
i agrupada per la columna product_id
.
CREATE TABLE my_dataset.sales_data_clustered ( sale_id INT64, product_id INT64, sale_amount FLOAT64, created_at TIMESTAMP ) PARTITION BY DATE(created_at) CLUSTER BY product_id;
Errors comuns i consells
- No especificar la columna correcta per al particionament: Assegura't que la columna que utilitzes per al particionament sigui adequada per a les teves consultes.
- Agrupar per columnes amb alta cardinalitat: Agrupar per columnes amb molts valors únics pot no oferir beneficis significatius. Tria columnes amb una cardinalitat moderada.
Resum
En aquesta secció, hem après sobre el particionament i l'agrupament a BigQuery. Aquestes tècniques ajuden a millorar el rendiment de les consultes i a reduir els costos escanejant només les dades necessàries. Hem vist exemples pràctics de com crear taules particionades i agrupades, i hem discutit els beneficis i errors comuns associats amb aquestes tècniques.
Amb aquests coneixements, estàs preparat per optimitzar les teves taules a BigQuery i millorar l'eficiència de les teves consultes. En el proper mòdul, explorarem tècniques d'optimització de consultes per portar el rendiment al següent nivell.
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