Support Questions

Find answers, ask questions, and share your expertise
Announcements
Welcome to the upgraded Community! Read this blog to see What’s New!

converting nested json to rows in hive

avatar
New Contributor

I have this table (2 columns) with a json field (cart_items):

Column 1: order_id: 1234
Column 2 (json):
{
"rows": [{
"id": "13422992",
"price": "40.18952581520672",
"quantity": 1,
"name": "product 1",
"itemIndex": 1,
"basicItemData": {
"name": "product 1",
"quantity": 1,
"type": "digital",
"price": {
"amountLocalCurrency": "35.82",
"currency": "EUR"
},
"productId": "13422992",
"category": "APPAREL"
},
"itemSpecificData": {
"physicalGoods": {
"size": "M",
"color": "010",
"weight": 0,
"brand": "mybrand",
"condition": "NEW",
"wrapAsGift": false,
"removeReceipt": false,
"customDesign": false,
"prepayCustomsTaxesAndFees": false,
"style": "5626"
}
}
}, {
"id": "13203164",
"price": "22.596790896657268",
"quantity": 1,
"name": "product 2",
"itemIndex": 2,
"basicItemData": {
"name": "product 2",
"quantity": 1,
"type": "physical",
"price": {
"amountLocalCurrency": "20.14",
"currency": "EUR"
},
"productId": "13203164",
"category": "APPAREL"
},
"itemSpecificData": {
"physicalGoods": {
"size": "M",
"color": "645",
"weight": 0,
"brand": "mybrand",
"condition": "NEW",
"wrapAsGift": false,
"removeReceipt": false,
"customDesign": false,
"prepayCustomsTaxesAndFees": false,
"style": "6509"
}
}
}]
}

I have been trying the following query:

select
trans_id
,get_json_object (cart_items,concat('$.rows[',e.i,'].quantity')) as quantity
,get_json_object (cart_items,concat('$.rows[',e.i,'].name')) as name
,get_json_object (cart_items,concat('$.rows.basicItemData[',f.g,'].type')) as type

from My_Table

    lateral view    posexplode  (split(get_json_object (cart_items,'$.rows[*].name'),',')) e as i,x
    lateral view    posexplode  (split(get_json_object (cart_items,'$.rows.basicItemData[*].name'),'},')) f as g,k
    where order_id='1234'

=====================================================
Outcome of this is:
Order_id.      Quantity.         Name.         Type
1234.              1.                product 1      null
1234.              1.                product 2      null

As you see, I get the first columns right but the 'Type' column shows null, obviously there's something wrong with my query. Any help is appreciated.

Thanks
Abel

0 REPLIES 0
Labels