成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Hive 內置的 Json 解析函數

數據庫 其他數據庫
在數據預處理層需要將 json 串進行“拍平”處理,所謂“拍平”是指將 json 中的 key 轉換為表的列字段,其 key 對應的 value 值則為列字段對應的值。

背景

在大數據 ETL(Extract-Transfer-Load) 過程中,經常需要從不同的數據源來提取數據進行加工處理,比較常見的是從 Mysql 數據庫來提取數據,而 Mysql 數據庫中數據存儲的比較常見方式是使用 json 串進行存儲。

通過大數據加工處理出來的數據是需要具有可直觀分析的特點,可從數據分析中挖掘出商業價值的。

因此在數據預處理層需要將 json 串進行“拍平”處理,所謂“拍平”是指將 json 中的 key 轉換為表的列字段,其 key 對應的 value 值則為列字段對應的值。

“拍平”的處理行業內也可稱為“行轉列”處理,我舉個例子你就能明白什么是行轉列了。

舉例:

user表字段如下:

現需要將 user 表中字段 detail_info 中的 json 串值,以每個 key 作為 user_detail_info 表的字段來進行存儲。

實現的 user_detail_info 表字段如下:

從 user 表到 user_detail_info 表的轉換,就是“行轉列”的過程。

你是否會好奇,在 Hive 中這個過程是如何實現的呢?

下文會解答你的疑惑。

Hive內置的json解析函數:get_json_object

語法:

get_json_object(json_string, '$.column')

說明:

解析 json 的字符串 json_string, 返回 path 指定的內容。如果輸入的 json 字符串無效,結果返回 NULL。

這個函數每次只能返回一個數據項。

舉例:

test_data = '{"name": "zhangsan",
"age": 18,
"preference": "music"}'

查詢sql語句:

select get_json_object(test_data,'$.preference');

解析結果:

如果需要同時解析 age, preference 這兩個字段。

sql語句如下:

select get_json_object(test_data,'$.age'),get_json_object(test_data,'$.preference');

執行結果如下:

如果需要同時解析的字段很多,很顯然使用這種方式寫就比較麻煩了,這時候 json_tuple 這個函數是個更好的選擇。

Hive內置的json解析函數:json_tuple

語法:

json_tuple(json_string, column1, column2, column3 ...)

說明:

解析 json 的字符串 json_string,可同時指定多個 json 數據中的 column,返回對應的 value。如果輸入的 json 字符串無效,結果返回 NULL。

舉例:

例如:test_table1 表的 data 字段存儲的是以下 json 串信息,現在想要獲取這個 json 串的每個 key 并將其對應的 value 值查詢出來。

(1). 準備 test_table1 表 data 字段的 json 數據

data = '{
"name": "rocky",
"age": 20,
"prefer": "dance",
"height": 1.8,
"nation": "China"
}'

(2). sql查詢語句

select t1.name,
t1.age,
t1.prefer,
t1.height,
t1.nation
from (select data
from test_table1
) t0
lateral view json_tuple(t0.data,
'name',
'age',
'prefer',
'height',
'nation'
) t1 as name,age,prefer,height,nation;

解析結果:

  • get_json_object函數 & json_tuple函數。
  • get_json_object 函數的使用語法中,使用到$.加上 json 的 key。
  • json_tuple 函數的使用語法中,不能使用$.加上 json 的 key,如果使用則會導致解析失敗。
  • json_tuple 函數與 get_json_object 函數對比,可以發現 json_tuple 函數的優點是一次可以解析多個 json 字段。
  • 但是如果被要求解析的 json 是一個 json 數組,那么這兩個函數都無法完成解析。
責任編輯:姜華 來源: 今日頭條
相關推薦

2022-03-31 07:32:33

Hivejson解析函數

2023-05-06 07:15:59

Hive內置函數工具

2021-04-28 07:22:13

HiveJson數組

2019-07-17 10:19:36

MySQL數據庫SQL

2025-01-06 12:00:00

Python函數內置函數

2016-09-18 17:24:58

php函數json_encodeunicode

2010-05-11 11:29:11

Unix awk

2009-02-24 16:17:41

日期時間函數

2010-09-14 17:27:27

SQL函數

2023-12-22 15:44:43

2020-06-24 07:44:12

Python數據技術

2021-05-28 08:52:45

Hive分析函數

2021-06-09 07:32:18

C++內置函數函數傳參

2024-05-20 13:02:30

Python編程開發

2010-01-06 14:24:40

Javascript解

2011-03-04 14:58:40

jqueryJSON

2023-04-09 23:09:59

Go語言函數

2024-04-29 14:58:48

Python內置函數

2021-06-05 21:29:53

數據庫MySQL函數

2010-07-19 11:17:28

SQL Server
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 啪啪网页 | 亚洲精品国产a久久久久久 中文字幕一区二区三区四区五区 | 国产一伦一伦一伦 | 香蕉久久a毛片 | 国产成人综合在线 | 国产一区欧美 | 国产精品福利在线 | 秋霞电影一区二区 | 黄色在线免费观看视频网站 | 国产免费看 | 毛片区 | 国产激情视频在线免费观看 | 成人h视频在线 | 黄视频网站在线 | 精品视频一区二区 | 麻豆一区二区三区精品视频 | 全免费a级毛片免费看视频免费下 | 国产精品日日做人人爱 | 国产极品车模吞精高潮呻吟 | 国产精品久久久久久久三级 | 日韩不卡一区二区 | 国产不卡一 | 国产精品一区二区三区在线 | 久久国 | 国产精品国产精品国产专区不蜜 | 国产成人99久久亚洲综合精品 | 国产一区二区视频在线 | 久久在线 | 日韩精品一区二区三区在线播放 | 欧美日韩免费在线 | 亚洲一区二区三区免费视频 | 欧美视频二区 | 久日精品| 91电影| 992人人草 | 在线观看中文字幕 | 天天操夜夜骑 | 国产一区二区不卡 | 久久精品中文字幕 | 美女在线观看av | 精品国产精品三级精品av网址 |