Заменить список чисел из таблицы Hive - PullRequest
1 голос
/ 09 марта 2019

У меня есть таблица улья, где данные похожи на это -

enter image description here

, где ключ - это просто уникальный столбец, а ph1, ph2 .. являютсяномера телефонов.Цель - заменить популярные номера телефонов на пустые.У меня уже есть таблица, которая содержит популярные телефонные номера.Для этого, например, предположим, что 100 и 50 являются популярными телефонными номерами.Таким образом, результат должен выглядеть следующим образом -

enter image description here

Я пробовал этот запрос, но куст не поддерживает это -

        select 
        case when ph1 in (select phone_no from popular_phone_number)
        then "" end as ph1_masked,
        case when ph2 in (select phone_no from popular_phone_number)
        then "" end as ph2_masked
        from base_table;

1 Ответ

1 голос
/ 09 марта 2019

Вам необходимо использовать left join и некоторую case логику:

select bt.key,
       (case when ppn1.phone_no is not null then null else ph1 end) as ph1,
       (case when ppn2.phone_no is not null then null else ph2 end) as ph2,
       (case when ppn3.phone_no is not null then null else ph3 end) as ph3,
       (case when ppn4.phone_no is not null then null else ph4 end) as ph4
from base_table bt left join
     popular_phone_number ppn1
     on ppn1.phone_no = bt.ph1 left join
     popular_phone_number ppn2
     on ppn2.phone_no = bt.ph2 left join
     popular_phone_number ppn3
     on ppn3.phone_no = bt.ph3 left join
     popular_phone_number ppn4
     on ppn4.phone_no = bt.ph4;
...