Adaptateur BigQuery
L'adaptateur BigQuery permet d'utiliser Noria avec Google BigQuery — idéal pour les entrepôts de données cloud à grande échelle.
Installation
Authentification
BigQuery utilise les Application Default Credentials (ADC) de Google Cloud. Authentifie-toi avant de lancer Noria :
# Option 1 — compte utilisateur (dev)
gcloud auth application-default login
# Option 2 — compte de service (prod)
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json
Configuration
database:
dialect: bigquery
database: mon-projet-gcp # Project ID Google Cloud
schema: mon_dataset # Dataset BigQuery (optionnel)
Schema = Dataset
Dans BigQuery, le "schéma" correspond au dataset. La table cible mon_dataset.ma_table sera créée dans le dataset mon_dataset du projet mon-projet-gcp.
Macros spécifiques BigQuery
| Macro | Résultat BigQuery |
|---|---|
{{ cast('col', 'STRING') }} |
CAST(col AS STRING) |
{{ date_trunc('month', 'col') }} |
DATE_TRUNC(col, MONTH) |
{{ current_timestamp() }} |
CURRENT_TIMESTAMP() |
{{ concat('a', 'b') }} |
CONCAT(a, b) |
{{ to_char('col', '%Y-%m') }} |
FORMAT_TIMESTAMP('%Y-%m', col) |
{{ safe_divide('a', 'b') }} |
SAFE_DIVIDE(a, b) |
Syntaxe DATE_TRUNC BigQuery
BigQuery inverse les arguments : DATE_TRUNC(col, MONTH) au lieu de DATE_TRUNC('month', col). La macro {{ date_trunc() }} gère cette différence automatiquement.
SAFE_DIVIDE natif
BigQuery dispose de SAFE_DIVIDE() nativement — la macro l'utilise directement au lieu de la version CASE WHEN.
Types de données BigQuery
| SQL standard | BigQuery |
|---|---|
VARCHAR |
STRING |
INTEGER |
INT64 |
FLOAT |
FLOAT64 |
BOOLEAN |
BOOL |
TIMESTAMP |
TIMESTAMP |
DATE |
DATE |
-- Avec les macros (portables)
{{ cast('id', 'STRING') }}
{{ cast('montant', 'FLOAT64') }}
-- SQL BigQuery natif (non portable)
CAST(id AS STRING)
Particularités BigQuery
Tables partitionnées
Pour les grandes tables, utilise le partitionnement BigQuery avec output_write: incremental :
nodes:
commandes:
sql: sql/commandes.sql
target: "mon_dataset.commandes"
output_write: incremental
incremental_key: date_commande
Coût des requêtes
BigQuery facture au volume de données scannées. output_write: safe_replace est particulièrement utile pour éviter de remplacer une table par un résultat vide suite à une requête incorrecte.
MERGE natif
L'adaptateur BigQuery utilise la syntaxe MERGE ... USING ... ON ... WHEN MATCHED THEN DELETE WHEN NOT MATCHED THEN INSERT ROW — plus efficace que la version delete+insert.
Limitations
- Seeds : les seeds utilisent les fonctions DuckDB localement. Pour charger un fichier dans BigQuery, utilise
bq loadou Google Cloud Storage en pre_hook. - DDL transactionnel : BigQuery ne supporte pas les transactions DDL — les opérations sont atomiques par statement.
- Quota : BigQuery impose des limites de taux d'API — ajoute
retry: 3sur les tâches sensibles.