Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 3 additions & 13 deletions 03_Fiches_thematiques/Fiche_arrow.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,10 @@

L'utilisateur souhaite manipuler des données structurées sous forme de `data.frame` par le biais de l'écosystème `Arrow` (sélectionner des variables, sélectionner des observations, créer des variables, joindre des tables).

::: {.callout-important}
## Tâches concernées et recommandations

- Pour des tables de données de taille petite et moyenne (inférieure à 1 Go ou moins d'un million d'observations), il est recommandé d'utiliser les *packages* `tibble`, `dplyr` et `tidyr` qui sont présentés dans la fiche [Manipuler des données avec le `tidyverse`](#tidyverse);

- Pour des tables de données de grande taille (plus de 1 Go en CSV, plus de 200 Mo en Parquet, ou plus d'un million d'observations), il est recommandé d'utiliser soit les *packages* `arrow` (qui fait l'objet de la présente fiche) et `#duckdb` (voir la fiche [Manipuler des données avec `duckdb`](#duckdb)), soit le *package* `data.table` qui fait l'objet de la fiche [Manipuler des données avec `data.table`](#datatable).

- Il est essentiel de travailler avec la dernière version d'`arrow`, de `duckdb` et de `R` car les *packages* `arrow` et `duckdb` sont en cours de développement. Par ailleurs, les recommandations d'`utilitR` peuvent évoluer en fonction du développement de ces _packages_.


- Si les données traitées sont très volumineuses (plus de 5 Go en CSV, plus de 1 Go en Parquet ou plus de 5 millions d'observations), il est essentiel de manipuler uniquement des objets `Arrow Table`, plutôt que des `tibbles`. Cela implique notamment d'utiliser la fonction `compute()` plutôt que `collect()` dans les traitements intermédiaires.
::: {.callout-tip}
## Astuce : Utiliser un exemple de script pour se familiariser avec arrow

- Pour les personnes qui découvrent `arrow`, il est recommandé de partir de l'exemple de script de la @sec-template-arrow pour se familiariser avec l'usage `d'arrow`.
Pour les personnes qui découvrent `arrow`, il est recommandé de partir de l'exemple de script de la @sec-template-arrow pour se familiariser avec l'usage `d'arrow`.

:::

Expand All @@ -25,7 +16,6 @@ L'utilisateur souhaite manipuler des données structurées sous forme de `data.f
Apprendre à utiliser `arrow` n'est pas difficile, car la syntaxe utilisée est quasiment identique à celle du `tidyverse`. Toutefois, une bonne compréhension du fonctionnement de `R` et de `arrow` est nécessaire pour bien utiliser `arrow` sur des données volumineuses. Voici quelques conseils pour bien démarrer:

- Il est indispensable de lire les fiches [Importer des fichiers Parquet](#importparquet) et [Manipuler des données avec le `tidyverse`](#tidyverse) avant de lire la présente fiche.
- Il est complètement normal de rencontrer des erreurs difficiles à comprendre lorsqu'on commence à utiliser `arrow`, il ne faut donc pas se décourager.
- Il ne faut pas hésiter à demander de l'aide à des collègues, ou à poser des questions sur les salons Tchap adaptés (le salon Langage `R` par exemple).
:::

Expand Down
29 changes: 29 additions & 0 deletions 03_Fiches_thematiques/Fiche_choisir_son_paradigme.qmd
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Quel paradigme choisir pour la manipulation de données

L'utilisateur souhaite choisir un éco-système pour la manipulation de données dans `R`.

## Pourquoi choisir un paradigme pour manipuler des données ?

`R base`, `tidyverse`, `data.table`, `duckdb`, `arrow`... La multiplication des outils de manipulation de données en R peut être déroutante, en particulier pour les utilisateurs débutants.

L'utilisation de `R base` (toutes les fonctions natives de `R`) bien que stable par définition, est vite limité dans la manipulation de tables : peu de cas d'utilisations possibles, code difficilement lisible sur des traitements complexes, fonctions non optimisées pour des données volumineuses...

Au final, choisir son paradigme suit des règles très simples, axées notamment sur la volumétrie des données et le niveau des utilisateurs.

Le schéma suivant présente le paradigme à utiliser selon la taille des tables à manipuler :

![](../resources/img/choix_paradigme.png)

Ce qu'il faut retenir :

* Pour des tables de données de **taille petite et moyenne** (**inférieure à 1 Go ou moins d'un million d'observations**), il est recommandé d'utiliser les *packages* `tibble`, `dplyr` et `tidyr` qui font l'objet d'une fiche [Manipuler des données avec le `tidyverse`](#tidyverse) ;

* Pour des tables de données de **grande taille** (**plus de 1 Go en CSV, plus de 200 Mo en Parquet, ou plus d'un million d'observations**), il est recommandé d'utiliser le *package* `duckdb` (voir la fiche [Manipuler des données avec `duckdb`](#duckdb)). L'utilisation des *packages* `data.table`, qui fait l'objet de la fiche [Manipuler des données avec `data.table`](#datatable), et `arrow`, qui fait l'objet de la fiche [Manipuler des données avec `arrow`](#arrow), n'est plus recommandée.

* Si les données sont **très volumineuses** (**plus de 5 Go en CSV, plus de 1 Go en Parquet ou plus de 5 millions d’observations**), il est recommandé de manipuler les données avec `duckdb` plutôt qu’avec le `tidyverse`. Il peut arriver que le volume de données soit tellement important qu’il ne soit pas possible de les traiter avec `duckdb`; il faut s’orienter vers des infrastructures big data permettant le calcul distribué et utiliser des logiciels adaptés (Spark par exemple).

::: {.callout-important}

Il est essentiel de travailler avec la dernière version d'`arrow`, de `duckdb` et de `R` car les packages `arrow` et `duckdb` sont en cours de développement. Par ailleurs, les recommandations d’utilitR peuvent évoluer en fonction du développement de ces packages.

:::
8 changes: 0 additions & 8 deletions 03_Fiches_thematiques/Fiche_datatable.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,6 @@

L'utilisateur souhaite manipuler des données structurées sous forme de `data.frame` (sélectionner des variables, sélectionner des observations, créer des variables, joindre des tables).

::: {.callout-important}
## Tâche concernée et recommandation

* Pour des tables de données de taille petite et moyenne (inférieure à 1 Go ou moins d'un million d'observations), il est recommandé d'utiliser les *packages* `tibble`, `dplyr` et `tidyr` qui sont présentés dans la fiche [Manipuler des données avec le `tidyverse`](#tidyverse);
* Pour des tables de données de grande taille (plus de 1 Go ou plus d'un million d'observations), il est recommandé d'utiliser soit le _package_ `data.table` qui fait l'objet de la présente fiche, soit les _packages_ `arrow` et `duckdb` présentés dans les fiches [Manipuler des données avec `arrow`](#arrow) et [Manipuler des données avec `duckdb`](#duckdb).
:::


## Présentation de `data.table`

Ne pas oublier de charger le *package* avec `library(data.table)`.
Expand Down
Loading