У меня есть таблица Hive, сделанная из user_id и item_id (идентификатор элементов, которые были приобретены пользователем). Я хочу получить список всех пользователей, которые приобрели пункт 1, но не 2 и 3.
Для этого я написал простой запрос:
SELECT user_id, collect_set(item_id) itemslist FROM mytable
WHERE item_id in (1, 2)
GROUP BY user_id
HAVING -- what should I put here???
Как вы можете видеть, я не знаю, как проверить, содержит ли список элементов массива 1, а не 2.
Как вы это делаете? Если есть более эффективный способ, можете ли вы рассказать мне обоим (или более) методам?