HIVE获取json字段特定值(单个json或者json数组)

这篇具有很好参考价值的文章主要介绍了HIVE获取json字段特定值(单个json或者json数组)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.获取单个json字符串里的某一特定值

函数:get_json_object(单个json,‘$.要获取的字段’)

示例:

代码:SELECT get_json_object(‘{“NAME”:“张三”,“ID”:“1”}’,‘$.NAME’) as name;

SELECT get_json_object(‘{“NAME”:“张三”,“ID”:“1”}’,‘$.NAME’);
HIVE获取json字段特定值(单个json或者json数组)
2. json_tuple

语法:json_tuple(json_string, k1, k2 …)

说明:解析json的字符串json_string,可指定多个json数据中的key,返回对应的value。如果输入的json字符串无效,那么返回NULL。

示例:

select  b.name ,b.age from tableName a lateral view json_tuple('{"name":"zhangsan","age":18}','name','age') b as name,age;

HIVE获取json字段特定值(单个json或者json数组)
注意:上面的json_tuple函数中没有 . 如果在使用 j s o n t u p l e 函数时加上 . 如果在使用json_tuple函数时加上 .如果在使用jsontuple函数时加上.就会解析失败.
Hive解析json数组
一、嵌套子查询解析json数组文章来源地址https://www.toymoban.com/news/detail-481228.html

select good_id,get_json_object(sale_json,'$.monthSales') as monthSales from tableName  LATERAL VIEW explode(split(goods_id,','))goods as good_id  LATERAL VIEW explode(split(regexp_replace(regexp_replace(json_str , '\\[|\\]',''),'\\}\\,\\{','\\}\\;\\{'),'\\;')) sales as sale_json;
select t1.* from (
select
    t0.*
    ,get_json_object(tmp.task_per_step_definition, '$.daysOfMedication') as daysOfMedication
    ,get_json_object(tmp.task_per_step_definition, '$.dosageForm') as dosageForm
    ,get_json_object(tmp.task_per_step_definition, '$.drugCode') as drugCode
    ,get_json_object(tmp.task_per_step_definition, '$.frequency') as frequency
    ,get_json_object(tmp.task_per_step_definition, '$.frequencyName') as frequencyName
    ,get_json_object(tmp.task_per_step_definition, '$.groupNo') as groupNo
    ,get_json_object(tmp.task_per_step_definition, '$.medicineName') as medicineName
    ,get_json_object(tmp.task_per_step_definition, '$.price') as price
    ,get_json_object(tmp.task_per_step_definition, '$.remark') as remark
    ,get_json_object(tmp.task_per_step_definition, '$.route') as route
    ,get_json_object(tmp.task_per_step_definition, '$.routeName') as routeName
    ,get_json_object(tmp.task_per_step_definition, '$.singleDose') as singleDose
    ,get_json_object(tmp.task_per_step_definition, '$.singleDoseUnit') as singleDoseUnit
    ,get_json_object(tmp.task_per_step_definition, '$.specification') as specification
    ,get_json_object(tmp.task_per_step_definition, '$.totalDose') as totalDose
    ,get_json_object(tmp.task_per_step_definition, '$.totalDoseUnit') as totalDoseUnit
    ,get_json_object(tmp.task_per_step_definition, '$.unitPrice') as unitPrice
 from wedw_dwd.pg_med_risk_emr_western_medicine_prescription_df t0
lateral view explode(split(regexp_replace(regexp_replace(regexp_replace(t0.medicines,'^\\[\\{', '\\{'), '\\}\\]$', '\\}'), '\\}\\,\\{\\"nodeId\\"', '\\}\\@\\#\\{\\"nodeId\\"'), '\\@\\#')) tmp as task_per_step_definition
where t0.date_id = date_sub(current_date(),1) 
and t0.org_name like '%辛口%'
) t1

到了这里,关于HIVE获取json字段特定值(单个json或者json数组)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Hive sql 将多个字段组合成json格式

    新的项目中,有一个需求,前端展示一个字段中要包含多个字段,讨论后决定将多个字段转成Json类型进行展示,新字段类型为 arraydict 经历了多次试验,参考多个文章版本,终于改成了符合需求的SQL版本。 SQL代码如下: 结果展示:

    2024年02月16日
    浏览(30)
  • 一百三十三、Hive——Hive外部表加载含有JSON格式字段的CSV文件数据

    在Hive的ODS层建外部表,然后加载HDFS中的CSV文件数据 注意 :CSV文件中含有未解析的JSON格式的字段数据,并且JSON字段中还有逗号 JSON数据的字段track_data只显示一部分数据,因为JSON格式数据里面也含有逗号 [{\\\"id\\\":\\\"14\\\",\\\"length\\\":5.0,\\\"height\\\":3.0,\\\"posX\\\":63.0,\\\"posY\\\":37.0,\\\"acs\\\":99.0,\\\"angle\\\":83.0,\\\"alti

    2024年02月16日
    浏览(33)
  • Hive解析嵌套JSON数组

    同时发生的埋点数据往往会在一个json字符串里发送,形式是[json,json,json]的埋点数组,需要把这些数据拉平 把最外层的\\\"[“和”]\\\"去除 把\\\"},{“转换为”}|||{\\\" ,使用split函数根据\\\"|||\\\"把string转为array,LATERAL view explode()把array转为列 第二步的时候发现,内部的json数组也有\\\"},

    2024年02月12日
    浏览(31)
  • 7. Hive解析JSON字符串、JSON数组

    Hive解析JSON字符串 1. get_json_object 语法: get_json_object(json_string, path) json_string 是要解析的JSON字符串 path 是用于指定要提取的字段路径的字符串 局限性 get_json_object 函数的性能会受到 JSON数据的结构和大小 的影响。对于较复杂的嵌套结构,考虑使用Hive的其他函数或自定义函数来

    2024年02月11日
    浏览(38)
  • 二百一十、Hive——Flume采集的JSON数据文件写入Hive的ODS层表后字段的数据残缺

    在用Flume把Kafka的数据采集写入Hive的ODS层表的HDFS文件路径后,发现HDFS文件中没问题,但是ODS层表中字段的数据却有问题,字段中的JSON数据不全 1、ODS层建静态分区外部表,Flume直接写入ODS层表的HDFS路径下 2、用get_json_object进行解析 注意 :使用JsonSerDe时,每行必须是一个完整

    2024年02月03日
    浏览(32)
  • Hive解析Json数组超全讲解

    在Hive中会有很多数据是用Json格式来存储的,如开发人员对APP上的页面进行埋点时,会将多个字段存放在一个json数组中,因此数据平台调用数据时,要对埋点数据进行解析。接下来就聊聊Hive中是如何解析json数据的。 #1. get_json_object 语法: get_json_object(json_string, \\\'$.key\\\') 说明:

    2024年02月06日
    浏览(31)
  • 大数据学习(十一)hive中获取数组中的元素

    一、hive中获取数组中的最后一个元素 select  reverse(split(reverse(‘1,4,5,6,7,...n’)),\\\',\\\')[0]) as a  先用reverse进行反转,然后取第一个位,再反转。 二、利用size函数来定位array里面的元素 select  split(b,\\\',\\\')[a] from (select  size(split(‘1,4,5,6,7,...n’,\\\',\\\'),-1) as a,‘1,4,5,6,7,...n’ as b) 数

    2024年02月12日
    浏览(23)
  • JS对Json数组进行抽取 获取key: “value“

    这篇文章 不是拿key或value 是 抽取需要的 key: “value” 【必须是单一数组 若是多组数据需要for循环】 // row 是json串 !!! 一、我有一个单一的json【row】 只要 id 和 appStatus 且分开成新数组 二、我有一个单一的json【row】 只要 id 和 appStatus 不分开在一起 方式1:row[0] 括号里面用数字

    2023年04月24日
    浏览(26)
  • jmeter中json提取器,获取多个值,并通过beanshell组成数组

    特别说明:**Compute concatenation var(suffix_ALL)😗*如果找到许多结果,则插件将使用’ , \\\'分隔符将它们连接起来,并将其存储在名为 _ALL的var中 在查看结果树中选择JSON Path Tester,将表达式写在expression,点击Test json提取器获取变量nodeIds(是一个逗号连接起来的数据) 通过特定字

    2024年02月14日
    浏览(36)
  • Git提交单个或者多个文件

    Git提交指定文件步骤 1.git status //查看修改的所有内容(或者git status -s) 2.git add ’ ’,例如:(git add components/pages/holders/xxx.vue) //’ \\\'引号中间放上文件名,执行上一步后,会显示文件名跟目录 //多个文件用空格分开 3.git stash -u -k //忽略其他文件,很重要的一步!!!! 4.gi

    2024年02月01日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包