У меня есть два набора данных; один содержит имя пользователя, назначенный идентификатор, и период времени, когда идентификатор является действительным,Выполнение комплекса, связанного с датами
data1: {username: chararray, id: chararray, start_time: datetime, stop_time: datetime}
, а другой содержит датируемые события, генерируемые пользователем, идентифицированного ID.
data2: {user_id: chararray, event_data: chararray, event_time: datetime)
Я пытаюсь соединить два набора, так что я могу совпадать с именем пользователя на событие в течение периода времени, идентификатор является действительным. По сути, я хочу, чтобы применить следующие критерии для объединения в SQL жаргоне:
WHERE (data1.id = data2.user_id) AND (data2.event_time > data1.start_time) AND (data2.event_time < data1.stop_time)
Я попробовал следующий сценарий:
joined = JOIN data1 BY id, data2 BY user_id;
matched = FILTER joined BY (SecondsBetween(start_time, event_time) < (long) 0) AND (SecondsBetween(event_time, stop_time) < (long) 0);
Проблема заключается в том, что я получаю ошибку «ОШИБКА 0: Скалярное имеет более одной строки в выходной ошибке ", когда я пытаюсь запустить ее. Я не уверен, что означает ошибка или как ее исправить.
я возможно, нашли мою проблему. Приведенный выше пример является необходимым упрощением фактических данных, с которыми я работаю. В фактическом сценарии я добавил префиксы отношения (то есть «data1 :: start_time», «data2 :: event_time») к определению согласованных отношений и позаботился об ошибке, которая была сгенерирована. – NestorDRod