Semi joins
Semi joins são o oposto de anti joins: um anti-anti join, por assim dizer.
Um semi join retorna as linhas da primeira tabela onde ele consegue encontrar correspondência na segunda tabela. O princípio é mostrado neste diagrama.

A sintaxe é a mesma dos outros tipos de join; basta trocar a função de join pela semi_join()
semi_join(a_tibble, another_tibble, by = c("id_col1", "id_col2"))
Você talvez tenha reparado que os resultados de um semi join somados aos resultados de um anti join recuperam a tabela original. Então, independentemente do conteúdo das tabelas ou de como você as une, semi_join(A, B) mais anti_join(A, B) retornará A (talvez com as linhas em uma ordem diferente).
Este exercício faz parte do curso
Introdução ao Spark com sparklyr em R
Instruções do exercício
Uma conexão Spark já foi criada para você como spark_conn. Tibbles conectados aos metadados das faixas e aos termos dos artistas armazenados no Spark foram pré-definidos como track_metadata_tbl e artist_terms_tbl, respectivamente.
- Use um semi join para unir os termos dos artistas aos metadados das faixas pela coluna
artist_id. Atribua o resultado ajoined. - Use
sdf_dim()para determinar quantas linhas e colunas há na tabela resultante.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# 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?
___