最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

數(shù)倉json字段提取通用方案

2023-01-16 14:00 作者:Koy1  | 我要投稿

統(tǒng)一方案

  1. 普通Json字符串可直接使用 方法1 方法2 ?get_json_object 或 json_tuple

  2. Json數(shù)組直接使用udf函數(shù),杜絕使用 方法3,目前數(shù)倉中多數(shù)是方法3,建議統(tǒng)一整改,消除隱患

背景

數(shù)據(jù)倉庫目前的數(shù)據(jù)主要源于業(yè)務(wù)系統(tǒng),數(shù)據(jù)結(jié)構(gòu)內(nèi)容繁雜,在做數(shù)據(jù)清洗時(shí),常常會(huì)需要解析提取字符串類型的json數(shù)據(jù),不同的人有不同的處理方法,雖然有些方法看起來能解決當(dāng)前的需求,但卻存在隱患,下面會(huì)給出具體的場景說明為什么,因此就需要一個(gè)通用的方案來解析這些Json,消除隱患,提升數(shù)據(jù)質(zhì)量。

hive內(nèi)置函數(shù)

1.get_json_object(string json_string, string path)

返回值:json字符串中的1個(gè)數(shù)據(jù)項(xiàng)

說明:解析json的字符串json_string,返回path指定的內(nèi)容。如果輸入的json字符串無效,那么返回NUll,這個(gè)函數(shù)每次只能返回一個(gè)數(shù)據(jù)項(xiàng)

select get_json_object(jsonstr, '$.website') as website from?tmp;

返回值:json字符串中的多個(gè)數(shù)據(jù)項(xiàng)

說明:解析json的字符串json_string,返回k1,k2,...,kn指定的內(nèi)容。如果輸入的json字符串無效,那么返回NUll,這個(gè)函數(shù)每次能返回多個(gè)數(shù)據(jù)項(xiàng),需配合 LATERAL VIEW 一起使用

select

????b.website

????, b.name

from?

????tmp?a

lateral view

json_tuple(a.jsonstr,'website','name') b as website,name

where XXX?

注意1??

json_tuple相較于get_json_object的優(yōu)勢就是一次可以解析多個(gè)Json字段。但是如果我們有個(gè)Json數(shù)組,這兩個(gè)函數(shù)都無法處理

udf函數(shù)提取Json數(shù)組

歸根結(jié)底,我們想要在hive中提取Json數(shù)組中的數(shù)據(jù),首先得讓它是個(gè)數(shù)組,而非字符串,那么想要通過hive內(nèi)置函數(shù)將 String 類型的Json數(shù)組轉(zhuǎn)成數(shù)組類型,就要用到分割符分割的方式去實(shí)現(xiàn)(目前好像也只能這么干),只要用到分割符,就會(huì)存在隱患

通過java程序,可規(guī)避使用分割符分割字符串?dāng)?shù)組的目的

/*

這是自定義函數(shù),可將一個(gè)string類型的json數(shù)組,轉(zhuǎn)成hive可接受的json數(shù)組

*/


數(shù)倉json字段提取通用方案的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
时尚| 麻栗坡县| 烟台市| 基隆市| 洞口县| 焦作市| 武胜县| 宁武县| 抚顺县| 和田市| 镇江市| 清河县| 陆良县| 新河县| 洪湖市| 涞水县| 乐东| 望江县| 峨边| 昆山市| 个旧市| 河津市| 霍邱县| 周宁县| 巫山县| 香格里拉县| 盐源县| 台东县| 达拉特旗| 正镶白旗| 上栗县| 柳林县| 石狮市| 祁门县| 托克逊县| 荣昌县| 姜堰市| 习水县| 新丰县| 新宾| 苏州市|