日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

json_tuple,get_json_object提取日志埋点信息

發(fā)布時間:2024/3/26 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 json_tuple,get_json_object提取日志埋点信息 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

現(xiàn)數(shù)據(jù)庫有一張日志表,有個字段存放的json字符串,需要獲取orders數(shù)組里的is_store_delivery,delivery_warehouse字段

以下是該字段的json數(shù)據(jù)

{"returnCode":"0","result":{"total":2,"orders":[{"buyer_province":"廣東省","transport_time":"","buyer_country_id":"CN","remark":"","transport_no":"05365368605","merged_sn":"","order_status":"23","delivery_kpi_start_time":"2021-09-06 22:31","buyer_mobile":"138****3907","order_goods":[{"vendor_code":"10**06","quantity":1,"size":"均碼","price":"147.00","vendor_id":22,"brand_name":"XXXXX","sn":"KYT**-15AW","cooperation_no":"300921","barcode":"6939426","product_name":"迷你電風(fēng)扇臺扇","promotion_price":"","po_no":"21030877"}],"pay_type":"移動微信wap支付","package_received_time":"2021-09-07","transport_day":"送貨時間不限","parent_order_sn":"","cod_type":"0","is_forbidden_delivery":0,"is_pre_transport_no":"0","carrier_name":"速運","order_type":1,"buyer_county":"海珠區(qū)","cod_money":"0.00","delivery_warehouse":"SPD589","buyer_address":"廣東省.廣州市.海珠區(qū)","buyer_postcode":"5120","vendor_name":"深圳市有限公司","buyer_city":"廣州市","buyer":"楊***","merged_code":"","last_update_time":"2021-09-08 10:10:02.0","buyer_tel":"","is_store_delivery":0,"vendor_id":22,"add_time":"2021-09-06 21:58:59.0","order_sn":"21092226","carrier_code":"shunfeng"},{"buyer_province":"廣東省","transport_time":"","buyer_country_id":"CN","remark":"","transport_no":"05378847236","merged_sn":"","order_status":"23","delivery_kpi_start_time":"2021-09-07","buyer_mobile":"137****6112","order_goods":[{"vendor_code":"1006","quantity":1,"size":"均碼","price":"188.00","vendor_id":22,"brand_name":"XXXXXXXXX","sn":"FSYF","cooperation_no":"3001","barcode":"6934680","product_name":"低噪搖頭風(fēng)扇落地扇","promotion_price":"","po_no":"2103077"}],"pay_type":"微信支付app","package_received_time":"2021-09-07","transport_day":"送貨時間不限","parent_order_sn":"","cod_type":"0","is_forbidden_delivery":0,"is_pre_transport_no":"0","carrier_name":"順豐速運","order_type":1,"buyer_county":"端州區(qū)","cod_money":"0.00","delivery_warehouse":"SPD09","buyer_address":"廣東省.肇慶市.端州區(qū)","buyer_postcode":"520","vendor_name":"深圳市有限公司","buyer_city":"肇慶市","buyer":"黃*","merged_code":"","last_update_time":"2021-09-08","buyer_tel":"","is_store_delivery":0,"vendor_id":22,"add_time":"2021-09-07 12:48:28.0","order_sn":"21083502","carrier_code":"shunfeng"}]}}

對應(yīng)SQL,獲取數(shù)組里的值并將其轉(zhuǎn)換為列(行轉(zhuǎn)列)

select distinctdelivery_warehouse,is_store_delivery,vendor_id from(SELECT split(regexp_replace(regexp_extract(t.json_column, '^\\[(.+)\\]$',1),'\\}\\,\\{', '\\}\\|\\|\\{'),'\\|\\|') AS json_columnFROM -- 將response替換為上述字符串即可運行(select get_json_object('上述json字符串', '$.result.orders') as json_column ) t ) a lateral view explode(json_column) b as j_column LATERAL VIEW json_tuple(j_column, 'delivery_warehouse', 'is_store_delivery', 'vendor_id') d AS delivery_warehouse, is_store_delivery, vendor_id

?運行效果圖:

?獲取json數(shù)據(jù)的思路:
-- (1)json_tuple()獲取json腳本 里面json節(jié)點orders
-- (2)1)regexp_extract()去掉中括號[]
  -- 2)regexp_extract()用雙豎線替換 },{
? ? -- 3)split()根據(jù)雙豎線分割數(shù)組為多個小的json
-- (3)json_tuple()獲取json下vendor_id等節(jié)點值

附加一個presto的寫法:

select distinct vendor_id,x.delivery_warehouse,x.is_store_delivery from hive.xxx cross join unnest(cast(json_extract("json字符串", '$.result.orders') as array(row(delivery_warehouse VARCHAR,is_store_delivery INTEGER )))) as x

總結(jié)

以上是生活随笔為你收集整理的json_tuple,get_json_object提取日志埋点信息的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。