2017-01-24 10 views
2

Я запускаю запрос, который дает неперекрывающийся набор идентификаторов first_party_id, связанных с одной третьей стороной, но не другой. Этот запрос не работает в Афинах, однако, дает ошибку: Correlated queries not yet supported.Вложенные альтернативы запросов в AWS Athena

смотрел на prestodb документы, https://prestodb.io/docs/current/sql/select.html (Афина prestodb под капотом), для альтернативы вложенных запросов. Приведенный примерне очень хорошо переводится для этого предложения not in. Изучение альтернативы вложенному запросу - запрос ниже.

SELECT 
     COUNT(DISTINCT i.third_party_id) AS uniques 
FROM 
     db.ids i 
WHERE 
     i.third_party_type = 'cookie_1' 
     AND i.first_party_id NOT IN (
      SELECT 
      i.first_party_id 
      WHERE 
      i.third_party_id = 'cookie_2' 
     ) 

ответ

2

Возможно, лучший способ сделать это - мне было бы любопытно увидеть его! Один из способов, я могу думать, - использовать внешнее соединение. (Я не совсем уверен, как структурированы ваши данные, так что простите надуманный пример, но я надеюсь, что это будет хорошо.) Как насчет этого?

with 
    a as (select * 
     from (values 
     (1,'cookie_n',10,'cookie_2'), 
     (2,'cookie_n',11,'cookie_1'), 
     (3,'cookie_m',12,'cookie_1'), 
     (4,'cookie_m',12,'cookie_1'), 
     (5,'cookie_q',13,'cookie_1'), 
     (6,'cookie_n',13,'cookie_1'), 
     (7,'cookie_m',14,'cookie_3') 
     ) as db_ids(first_party_id, first_party_type, third_party_id, third_party_type) 
    ), 
    b as (select first_party_type 
     from a where third_party_type = 'cookie_2'), 
    c as (select a.third_party_id, b.first_party_type as exclude_first_party_type 
     from a left join b on a.first_party_type = b.first_party_type 
     where a.third_party_type = 'cookie_1') 
select count(distinct third_party_id) from c 
     where exclude_first_party_type is null; 

Надеюсь, это поможет!

+0

Да, выяснилось, что заявления - это путь! Вы также можете вставлять с операторами -> 'с x as (с y as (...), z as (...) ....)' – pauld

 Смежные вопросы

  • Нет связанных вопросов^_^