分享好友 最新动态首页 最新动态分类 切换频道
8、去掉json多余的字段 json2map + map_remove + map_values
2024-12-27 02:41

细节:sql 中有涉及到正则匹配函数的,要注意转义符号

因为在不同语言下正则匹配规则是否需要加转义符号是不同的,举例,regexp_replace 函数,在hive sql的正则匹配规则的 d+ 需要前面给它加上转义符号,而在java中可能不用,在Presto sql 就是不用加转义符号的。

8、去掉json多余的字段 json2map + map_remove + map_values

☺ 思路:不用特意去记哪一种语言需要加转义符号,哪种语言不需要,只需要记住正则匹配规则报错的一个原因,可能是转义符号的问题即可

 

(1) 语法:get_json_object(string json_string, string path)

  • json_string:必填。STRING类型。标准的JSON格式对象,格式为。如果遇到英文双引号",需要用两个反斜杠)进行转义。如果遇到英文单引号',需要用一个反斜杠)进行转义。
  • path:必填。STRING类型。以$开头。
  • :表示根节点。
  • :表示子节点。MaxCompute支持用这两种字符解析JSON对象,当JSON的Key本身包含时,可以用来替代。
  • :表示数组下标,从0开始。
  • :返回整个数组。不支持转义。

(2) 例子

 

(1) 符合正则表达式方式,截取字符串 regexp_extract

  • 语法:regexp_extract(string subject, string pattern, int index)
  • 抽取字符串subject 中符合正则表达式pattern 的第index 个部分的子字符串
index是返回结果取表达式的哪一部分
  • 0 表示把整个正则表达式对应的结果全部返回
  • 1 表示返回正则表达式中第一个()对应的结果,以此类推。
 

(2) 按字符位置截取字符串 substr

  • 语法:substr(string|binary A, int start) substr(string|binary A, int start, int len)
 

(1) 语法

regexp_replace(string INITIAL_STRING, string PATTERN, string REPLACEMENT)

(2) 作用

按照正则表达式pattern 将字符串INTIAL_STRING 中符合条件的部分替换成REPLACEMENT 指定的字符串

(3) 例子

 

(1) concat 拼接字符串

  • 语法:concat_ws(字符串1,字符串2)
 

(2) concat_ws 带分割符的拼接字符串

  • 语法:concat_ws(‘分隔符’,字符串1,字符串2)
 

(1) 规定时间输出格式 date_format

 

细节:date_format 无法识别/的时间格式,例如:select date_format(‘2023/01/17’, ‘y’); 结果是null

解决:先通过字符串替换函数,将/ 替换成 -,然后再使用date_format 函数,获取指定格式的时间

 

(2) 和时间戳相关

unix_timestamp(string date) 获取当前时间戳

  • unix_timestamp(string timestame) 输入的时间戳格式必须为’yyyy-MM-dd HH:mm:ss’,如不符合则返回null

unix_timestamp(string date, string pattern) 指定格式将时间字符串转化成时间戳

  • select unix timestamp(‘2023-1-6’‘yyyy-MM-dd’);

from_unixtime(bigint unixtime[, string format]) 将时间戳转成国际协调时间


  • 语法:ROW_NUMBER() OVER(PARTITION BY 分区的字段 ORDER BY 升序/降序字段 [DESC])
 

(1) 作用

炸裂函数,实现将一行转换成多列,然后侧视图函数进行聚合

(2) 例子

  • 原数据结果
  • 试试炸裂函数explode 效果
 
▷ explode(genre) 和其他字段一起查询
  • 实际业务,字段game_name,genre 都要查询
 
报错:UDTF’s are not supported outside the SELECT clause, nor nested in expressions
分析:原因是因为这个字段genre,炸裂之后,转换成多列(3列),而game_name 字段依然是1列,列数不匹配
解决:侧视图(表)的聚合
 
聚合效果

  • 先将json转换成map,然后使用方法map_remove删除,最后使用map_values取出来
 

  • nvl(valueExp1, valueExp2):根据第一个表达式的值是否为空,不为空则返回第一个表达式的值,若为空则返回第二个表达式的值
 

(1) 作用

with as短语,也叫做子查询部分,是用来定义一个SQL片断,该SQL片断会被整个SQL语句所用到。其中,SQL片段产生的结果集保存在内存中,
后续的sql均可以访问这个结果集,作用与视图或临时表类似。

(2) 语法

 

(3) 本质:

with…as 子查询部分,和直接用子查询效率上没有什么区别,只是这种写法增加了sql可读性。

(4) 小细节

  • with…as 特点:是一次性的,例如下面的例子,定义的"临时表"temp1,在第一次查询name 之后,就不可以再查看id了。

(1) 语法

cast(expr as <type>) 将表达式 expr 的结果转换为 <type>

Cast(字段名 as 转换的类型)

(2) 例子

  • 举例1:cast(‘1’ as BIGINT) 将字符串 ‘1’ 转换为其整数表示形式

  • 举例2:表tableA 有一个时间字段 release_time:2018-11-03 15:31:26

 
  • 结果:release_time:2018-11-03




最新文章
神马优化seo_神马优化关键词快速排名(优化神马搜索引擎关键词排名工具)
1 移动端优化紧张性随着移动互联网的快速发展,手机搜刮用户数量巨大,企业需器重手机网站,否则大概错失大量客户百度神马和搜狗是重要搜刮引擎,各具官方优化指南2 优化指南要点百度移动优化指南夸大简便域名服务器稳固HTML5顺应性呆板可
无忧建站,打造轻松高效的网站建设体验,无忧自助建站
在当今这个信息爆炸、互联网高速发展的时代,网站已成为企业、个人乃至组织展示形象、传播信息、开展业务的重要平台,对于许多非技术背景的人来说,搭建一个专业、美观、功能齐全的网站并非易事,从域名注册、服务器选择到页面设计、功能开
珠宝直播间调查③丨售卖假珠宝的淘宝网店没有工商信息,记者15分钟注册假珠宝店无需证照
红星新闻此前报道,不少中老年人热衷在各个平台的直播间购买低价珠宝玉石。受访者余大妈就曾在2年里花费超3万元购入低价珠宝,其中不乏十几元的玉髓,几十元的和田玉、玛瑙、翡翠等。 为查验这些带着鉴定证书发货的珠宝是否为真,记者将余
科普重大通报“开端棋牌可以开挂吗”详细有挂内幕
【央视新闻客户端】登录新浪财经APP 搜索【信披】查看更多考评等级  债市研判六人谈  来源:债券杂志  特邀专家:  李东荣 中国人民银行原副行长、中国互联网金融协会创始会长  黄艺明 广发银行信用卡中心资产管理部副总经理  
比本科还牛的专科学校(比较牛的专科学校) 全国最好的大专排名一览表
今天大学科目网小编整理了比本科还牛的专科学校(比较牛的专科学校) 全国最好的大专排名一览表相关信息,希望在这方面能够更好帮助到大家。1、比本科还牛的专科学校(比较牛的专科学校)2、广州番禺职业技术学院王牌专业排名一览表3、全国
搜索广告召回技术在美团的实践
从美团流量场景角度来看,美团搜索广告分为两大类,一是列表推荐广告;二是搜索广告。推荐广告以展现商家模式为主,通常叫商家流。搜索广告的展现形式比较丰富,有商家模式,即以商家展现为主,
百度、吉利就“极越汽车”发表联合声明
集度汽车有限公司是百度控股与吉利控股投资设立的造车新势力初创公司,是探索汽车智能化转型的创新产物。由于行业竞争格局发生巨大变化,既定商业计划无法执行,经营遇到了挑战。极越汽车产品由吉利工厂制造,授权集度独家经营。百度、吉利
阿里云搜索是什么,与百度搜索有什么不同
阿里云搜索是阿里开发的提供给网购人群的一个专属的搜索引擎。
成品网站1.1.719:10分钟打造你的专属平台,原来建站竟然如此简单!
你想要拥有一个高端、精美、实用的网站?但繁琐的建站过程、昂贵的开发费用和专业技能的缺乏总让人头疼。其实,搭建网站也能像组装乐高一样简单有趣!成品网站1.1.719就是一款能快速帮你实现梦想的网站构建工具。这款神器就像一个建站百宝箱
剧本写作生成器app免费
剧本写作生成器app是一款免费的智能剧本生成软件。操作较为简单,用户只需简单描述角色的性格、外貌、背景等基本信息,AI就能快速生成人物形象,输入关键词即可生成各类剧本,涵盖悬疑推理、浪漫爱情等多种类型。在软件主页点击特定位置可
相关文章
推荐文章
发表评论
0评