У меня есть набор данных, который показывает пользователей, коллекции фруктов, которые им нравятся, и родной город:
Alice\tApple:Orange\tSacramento
Bob\tApple\tSan Diego
Charlie\tApple:Pineapple\tSacramento
Я хотел бы создать запрос свиньи, который сопоставляет количество пользователей, которые наслаждаются видами фруктов в разных городах, где результаты запроса для приведенных выше данных будут выглядеть следующим образом:
Apple\tSacramento\t2
Apple\tSan Diego\t1
Orange\tSacramento\t1
Pineapple\tSacramento\t1
Часть, которую я не могу понять, заключается в том, как перекрестно соединить разделенные строки фруктов с остальными данными из той же строки, поэтому:
Alice\tApple:Orange\tSacramento
становится:
Alice\tApple\tSacramento
Alice\tOrange\tSacramento
Я знаю, что могу использовать TOKENIZE для разделения строки "Apple:Orange" на кортеж ("Apple", "Orange"), но я не знаю, как получить перекрестное произведение этого кортежа с остальной частью строки ( «Алиса»).
Одно решение грубой силы, которое я придумал, состоит в том, чтобы использовать потоковую передачу для запуска входной коллекции через внешнюю программу и обрабатывать «перекрестное соединение» для создания нескольких строк в строке.
Хотя кажется, что это должно быть ненужным. Есть ли лучшие идеи?