2017-04-03 2 views
0

J'insère des données Json dans Hive. c'est le format -Option d'explosion de données Hive json n'éclosant pas tableau

A1 Array < 
struct < 
     product array < 
        struct < 
          dim1 array < struct <> > 
          dim2 array < struct <> > 
          > 
         > 
     >> 

dans la clause tableau j'utilise exploser:

Lateral view outer explode(A1.product) t1 as prod Lateral view outer explode(prod.dim1) t2 as prod_d1 Lateral view outer explode(prod.dim2) t3 as prod_d2 

données Exemple:

A1["product":[{"productsku":"p_dmf_qs:click: page load","v2productname":"Quality Score - click: page load","v2productcategory":"DMF","productvariant":"(not set)","productbrand":"xxxx","productrevenue":"1000","localproductrevenue":null,"productprice":"100","productquantity":"1","productrefundamount":null,"productlistname":"(not set)","dim1":[],"dim2":[]}]] 

quand je l'appelle t2 et t3 dans l'instruction select Comme prod_d1 et prod_d2, j'obtiens une structure dans le résultat, pas dans le tableau. S'il vous plaît aidez-moi. C'est une structure imbriquée. Si je n'avais pas le premier tableau de produit, j'aurais pu le décrire facilement comme A1.dim1 et A1.dim2 comme deux fonctions explosives. Merci de m'aider.

+0

Veuillez ajouter la définition du tableau + petit échantillon de données (quelques rangées) –

+0

Mise à jour des données d'échantillon dans ma question. Bien vouloir vérifier. merci – Bala

Répondre

0
select t2.dim1,t2.dim2 
... 
Lateral view outer inline (A1)   t1 
Lateral view outer inline (t1.product) t2 
+0

Merci Dudu .. même si j'utilise t2.dim1 et t2.dim2, je n'adresse pas un tableau (le tableau dim1 et dim2). Dans la table, le résultat est [], ce qui signifie qu'un tableau est omis. nous adressons le tableau de A1 avec t1 et le tableau de produit avec t2 mais dim1 et dim2 's? c'est où je suis coincé – Bala

+0

Si vous allez exploser les deux tableaux, vous obtiendrez une jointure de produit –