Presto Query для фильтрации из одного оператора select в другой - PullRequest
0 голосов
/ 20 февраля 2020

У меня есть две массивные таблицы, и каждая из них запрашивает около 1 минуты, что приемлемо. То, что я пытаюсь сделать, это ..

table1

job    | profile_value | type
-------------------------------------------
job1   | p1            | order
job2   | p1            | order
job3   | p3            | order

table2

job_no | profile_no       | status
-------------------------------------------
job1   | p1               | completed
job2   | p2               | completed
job3   | p3               | finished
job4   | p3               | started

Принципиально job2 здесь другой. Этот запрос определенно плох, поскольку он выполняет сравнение методом грубой силы.

SELECT A.jobuuid 
FROM ( 
select job as job_id, profile_value as profile_id
from table1
CROSS JOIN ....
where type = 'order' and datestr >= '{{min_date}}'

) AS A

JOIN ( 

SELECT job_no as job_id, profile_no as profile_no as profile_id
FROM table2
CROSS JOIN ....
WHERE datestr >= '{{min_date}}' AND status IN ('completed', 'finished')

) AS B

ON A.profile_id != B.profile_id AND A.job_id=B.job_id

Запрос должен получить число несинхронных запросов c ...

Вывод:

job_id | profile_id       
--------------------------
job2   | p2                (Since the job_ids are same and profile_id is diff)
...