蜂巢:当列值由定界符(〜)分隔时,将单个记录扩展为多个记录

我有以下信息

id     user                 date                          test

102   123~456~897   01JAN2019~6JUL2018~21DEC2017        abc~qwer~~wer~
103  13~45~88~34   01JAN2020~6JUN2019~21JAN2018~12MAR2017 pqr~~qw~wer*123~qwerty

我需要的结果是,记录必须根据升序进行扩展。

id      user     date            test 

102     897      21DEC2017        wer
102     456      06JUL2018        qwer
102     123      01JAN2019        abc
103     34       12MAR2017        qwerty
103     88       21JAN2018        wer*123
103     45       06JUN2019        qw
103     13       01JAN2020        pqr

我尝试使用横向View爆炸,但无法正常工作,请帮忙。

a.id,from demo a
    lateral view posexplode(a.test,'\\~')) t1 as exploded_test,test
    lateral view posexplode(a.user,'\\~')) t2 as exploded_user,user
    lateral view posexplode(a.date,'\\~')) t3 as exploded_date,date
    where exploded_test == exploded_user and exploded_user == exploded_date
    order by 1,3
randy8546 回答:蜂巢:当列值由定界符(〜)分隔时,将单个记录扩展为多个记录

波浪号(~)不是Java正则表达式中的元字符(Hive使用Java正则表达式),不需要转义。此外,posexplode或explode都可以应用于数组,爆炸之前,需要先拆分字符串以获取数组。使用posexplode(split(a.user,'~+')) t1 as (pos,user)

也(这只是一个意见):我不会将数组位置命名为“ exploded_test”。 posposition或简单地p看起来就不会那么混乱

本文链接:https://www.f2er.com/3142808.html

大家都在问