Невозможно найти запись из внешнего соединения - PullRequest
0 голосов
/ 17 марта 2019

У меня есть два отношения, схема и данные которых приведены ниже:

latest_extract

ticket_num,employee_id,assigned_to,team,assigned_date
1234567,1122525,michael,printer,2019-01-03
1234569,1122536,julie,printer,2019-01-03
1234571,1122538,priscila,printer,2019-01-03
1234572,1122539,susan,scanner,2019-01-03
1234573,1122540,walter,network,2019-01-03

previous_extract

ticket_num,employee_id,assigned_to,team,assigned_date
1234567,1122525,michael,printer,2019-01-02
1234568,1122525,michale,printer,2019-01-02
1234569,1122536,julie,printer,2019-01-02
1234570,1122537,john,scanner,2019-01-02
1234574.1122541,hudson,windows,2019-01-02
join_latest_previous = JOIN previous_extract BY (ticket_num,employee_id) FULL OUTER, latest_extract BY (ticket_num,employee_id);

latest_extract::ticket_num,latest_extract::employee_id,latest_extract::assigned_to,latest_extract::team,latest_extract::assigned_date,
previous_extract::ticket_num,previous_extract::employee_id,previous_extract::assigned_to,previous_extract::team,previous_extract::assigned_date;
1234567,1122525,michael,printer,2019-01-03,1234567,1122525,michael,printer,2019-01-02
,,,,,1234568,1122525,michale,printer,2019-01-02
1234569,1122536,julie,printer,2019-01-03,1234569,1122536,julie,printer,2019-01-02
1234571,1122538,priscila,printer,2019-01-03,,,,,
1234572,1122539,susan,scanner,2019-01-03,,,,,
,,,,,1234570,1122537,john,scanner,2019-01-02
,,,,,1234573,1122540,walter,network,2019-01-03
1234574.1122541,hudson,windows,2019-01-02,,,,,,

Мне нужно сделать ниже: если в команде есть один emp, а запись о сотруднике не существует в предыдущем извлечении, но в последнем, тогда флаг равен 1,
иначе, если в команде есть один emp и запись о сотруднике не существует в последнем извлечении, но в предыдущем, тогда флаг равен 2,
в противном случае, если в команде несколько emp и запись о сотруднике не существует в предыдущем извлечении, но в последнем случае флаг равен 3,
иначе, если в команде несколько emp и запись о сотруднике не существует в последнем извлечении, но в предыдущем, тогда флаг равен 4,
иначе это будет 5.

diff_latest_previous = FOREACH join_latest_previous GENERATE 
((((previous_extract::ticket_num IS NULL) AND (latest_extract::ticket_num IS NOT NULL))OR (previous_extract::ticket_num !=latest_extract::ticket_num))?1:
(((previous_extract::ticket_num IS NOT NULL) AND (latest_extract::ticket_num IS NULL))OR (previous_extract::ticket_num !=latest_extract::ticket_num))?2:
3) AS flag, latest_extract::ticket_num AS l_ticket_num,latest_extract::employee_id AS l_employee_id,latest_extract::assigned_to AS l_assigned_to,latest_extract::team AS l_team,latest_extract::assigned_date AS l_assigned_date,previous_extract::ticket_num AS p_ticket_num,previous_extract::employee_id AS p_employee_id,previous_extract::assigned_to AS p_assigned_to,previous_extract::team AS p_team,previous_extract::assigned_date AS p_assigned_date;

flag,ticket_num,employee_id,assigned_to,team,assigned_date
5,1234567,1122525,michael,printer,2019-01-03,1234567,1122525,michael,printer,2019-01-02
1,,,,,1234568,1122525,michale,printer,2019-01-02
5,1234569,1122536,julie,printer,2019-01-03,1234569,1122536,julie,printer,2019-01-02
2,1234571,1122538,priscila,printer,2019-01-03,,,,,
2,1234572,1122539,susan,scanner,2019-01-03,,,,,
1,,,,1234570,1122537,john,scanner,2019-01-02
1,,,,,,1234573,1122540,walter,network,2019-01-03
2,1234574.1122541,hudson,windows,2019-01-02,,,,,,

Здесь я не могу получить значения 3 и 4.

Пожалуйста, помогите мне найти способ для этого.

...