Semi-joins
Les semi-joins sont l’inverse des anti-joins : un « anti anti-join », si vous préférez.
Un semi-join renvoie les lignes de la première table pour lesquelles il peut trouver une correspondance dans la seconde. Le principe est illustré dans ce schéma.

La syntaxe est la même que pour les autres types de jointure ; remplacez simplement la fonction de jointure par semi_join()
semi_join(a_tibble, another_tibble, by = c("id_col1", "id_col2"))
Vous aurez peut-être remarqué que les résultats d’un semi-join additionnés à ceux d’un anti-join redonnent la table d’origine. Ainsi, quels que soient le contenu des tables ou la façon dont vous les joignez, semi_join(A, B) plus anti_join(A, B) renverra A (éventuellement avec un ordre de lignes différent).
Cet exercice fait partie du cours
Introduction à Spark avec sparklyr en R
Instructions
Une connexion Spark a été créée pour vous sous le nom spark_conn. Des tibbles rattachés aux métadonnées des pistes et aux termes d’artistes stockés dans Spark ont été pré-définis respectivement sous track_metadata_tbl et artist_terms_tbl.
- Utilisez un semi-join pour joindre les termes d’artistes aux métadonnées des pistes par la colonne
artist_id. Affectez le résultat àjoined. - Utilisez
sdf_dim()pour déterminer combien de lignes et de colonnes contient la table jointe.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# track_metadata_tbl and artist_terms_tbl have been pre-defined
track_metadata_tbl
artist_terms_tbl
# Semi join artist terms to track metadata by artist_id
joined <- ___
# How many rows and columns are in the joined table?
___