LEFT SEMI JOIN возвращает строки слева, для которых есть совпадение справа; LEFT ANTI JOIN — строки без совпадения. Колонки правой стороны не выводятся.
Что такое LEFT SEMI JOIN и LEFT ANTI JOIN в Spark SQL, приходилось ли использовать?
LEFT SEMI JOIN возвращает строки слева, для которых есть совпадение справа; LEFT ANTI JOIN — строки без совпадения. Колонки правой стороны не выводятся.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
LEFT SEMI JOIN возвращает строки слева, для которых есть совпадение справа; LEFT ANTI JOIN — строки без совпадения. Колонки правой стороны не выводятся.
SEMI JOIN удобен для отбора клиентов, имеющих заказы, ANTI JOIN — клиентов без заказов. Множество совпадений справа не размножает одну исходную строку слева, как это мог бы сделать обычный JOIN.
SELECT c.*
FROM clients c
LEFT ANTI JOIN orders o ON c.id = o.client_id;
При обычном равенстве NULL не совпадает с NULL. Если в задаче нужна другая семантика, задайте её явно. Собственный опыт иллюстрируйте реальным сценарием, а не вымышленным проектом.
Источник: Документация Apache Kafka.