Улей Авро, напоминающий поле, только что выписан - PullRequest
0 голосов
/ 08 мая 2018

Я использую HIVE и пытаюсь записать данные в таблицу и хотел бы узнать, можно ли вызвать поле, в которое я только что записал, для создания другой переменной поля.

Case When Substr(Upper(Trim(MBRCHR)),-3) rlike '[8-9][0-9][A-E]'
    Then
        Substr(Upper(trim(regexp_replace(MBRCHR,'[^0-9]',''))),1,Length(Upper(Trim(regexp_replace(MBRCHR,'[^0-9]',''))))-2)
    Else
        Upper(trim(regexp_replace(MBRCHR,'[^0-9]+','')))
    End as MBR_DRVD,
Case when Length(MBR_DRVD) between 7 and 9
    Then ***** use this to derive the new field.

Я пытался записать его как таковой, но поскольку MBR_DRVD нет в таблице, из которой я заполняю текущую таблицу, он выдает ошибку.

Любые предложения будут с благодарностью.

1 Ответ

0 голосов
/ 09 мая 2018

невозможно сделать это напрямую, вы можете сделать это, используя подзапрос, такой как

select ....
Case when Length(MBR_DRVD) between 7 and 9
        Then ***** use this to derive the new field.
from (
select 
Case When Substr(Upper(Trim(MBRCHR)),-3) rlike '[8-9][0-9][A-E]'
    Then
        Substr(Upper(trim(regexp_replace(MBRCHR,'[^0-9]',''))),1,Length(Upper(Trim(regexp_replace(MBRCHR,'[^0-9]',''))))-2)
    Else
        Upper(trim(regexp_replace(MBRCHR,'[^0-9]+','')))
    End as MBR_DRVD,
...
from yourtable
) t;
...