Skip to content

Commit

Permalink
précisions sur comment grouper les commandes dans DBI et l'utilisatio…
Browse files Browse the repository at this point in the history
…n de la clause WITH
  • Loading branch information
nbc committed Dec 21, 2024
1 parent 942206c commit d87fe1a
Showing 1 changed file with 21 additions and 0 deletions.
21 changes: 21 additions & 0 deletions 03_Fiches_thematiques/Fiche_duckdb.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -597,6 +597,27 @@ resultats <- dbGetQuery(conn_ddb, "SELECT * FROM data1_nettoye LEFT JOIN data2_n

Et vous pouvez bien sûr créer des tables intermédiaires (temporaires ou non) à la place des vues (en utilisant `CREATE TABLE` pluôt que `CREATE VIEW`) pour éviter de les recalculer à chaque fois.

A noter, vous pouvez grouper les requêtes SQL dans un même `dbExecute` :
```{r eval=FALSE}
# Créer une vue qui correspond à la première étape du traitement
dbExecute(conn_ddb,
"CREATE OR REPLACE VIEW data1_nettoye AS SELECT ... FROM read_parquet('data1.parquet');
CREATE OR REPLACE VIEW data2_nettoye AS SELECT ... FROM read_parquet('data2.parquet');
SELECT * FROM data1_nettoye LEFT JOIN data2_nettoye ON data1.id = data2.id")"
)
```

Ou utiliser la clause SQL `WITH` :

```{r eval=FALSE}
# Créer une vue qui correspond à la première étape du traitement
dbExecute(conn_ddb,
"WITH data1_nettoye AS (SELECT ... FROM read_parquet('data1.parquet')),
data2_nettoye AS (SELECT ... FROM read_parquet('data2.parquet'))
SELECT * FROM data1_nettoye LEFT JOIN data2_nettoye ON data1.id = data2.id")"
)
```

#### Écrire des fichiers {#sec-ecrire-parquet}

Vous pouvez exporter des données vers des fichiers en utilisant [`COPY ... TO ...`](https://duckdb.org/docs/sql/statements/copy.html#copy--to) :
Expand Down

0 comments on commit d87fe1a

Please sign in to comment.