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

  1. 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.
  2. Particionament per columna de temps:

    • Les dades es particionen en funció d'una columna de tipus TIMESTAMP, DATE o DATETIME.
    • Útil per a dades històriques o dades que tenen una columna de temps específica.
  3. 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

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