常用的Prestosql

简介: 常用的Prestosql

一、Presto sql 的函数,和 sql(hive sql)基本一样,注意一下一些小细节即可

1.中文列名要用双引号,而不是反引号

2.cast转换时,字符串要 CAST(x AS varchar),而不是string

3.Presto按照标准的方法进行整数除法运算。例如, 7 除以 2 的结果是 3 而不是 3.5 。 对两个整数进行浮点除法运算,需要将其中的一个转为double类型:SELECT CAST(5 AS DOUBLE) / 2

4.日期函数有点不一样,因为Hive可自动识别yyyy-MM-dd的日期格式,而Presto不行,如果想要进行日期计算,需要先parse成Date格式再进行计算,

如日期格式化:format_datetime(parse_datetime(d.record_date,'yyyy-MM-dd HH:mm:ss'),'yyyy-MM-dd')

二、通配模糊查询、正则模糊查询

1、(hive sql)通配、正则模糊查询在语法使用上区别:

like: 不是正则,是通配符。这个通配符可以看一下SQL的标准,例如%代表任意多个字符。

rlike: 是正则,正则的写法与java一样。''需要使用'\',例如'\w'需要使用'\w'

■ (hive sql)两者语法在使用上匹配多个字符串条件的区别:

like 是 字段 like a or like b or like c

rlike 是可以调用方法 rlike(字段,'a|b|c')

-- like 用法
where (address like '%北京%' OR address like '%上海%' OR address like '%广州%' OR address like '%深圳%')
-- rlike 用法
where (address rlike '北京|上海|广州|深圳')

2、正则模糊查询 hive-rlike 和 presto-regexp_like

在hive sql中使用的是rlike,在presto sql 中使用的是regexp_like。

举例1:hive sql中使用的是rlike

where address rlike '北京'
-- 多个匹配条件
where (address rlike '北京|上海|广州|深圳')

举例2:presto sql 中使用的是regexp_like

where regexp_like(title,'Unity') 
-- 多个匹配条件
regexp_like(title,'Unity|UE4|UE5') 
--- 忽略大小写
regexp_like(title,'(?i)Unity')

三、举例

SELECT title "标题", url "url",date "创建时间"
FROM
(
  SELECT title, url,date,create_time,
           ROW_NUMBER() OVER(PARTITION BY title ORDER BY create_time DESC) AS rn
     FROM ods_crawler_table
     WHERE 
      dt>=:startDate 
     AND
     (cast(substr(date,1,10) as date)) >= CAST(:startDate AS date)
) a
WHERE a.rn=1  
ORDER BY date_parse(date,'%Y-%m-%d %H:%i:%S') DESC



如果本文对你有帮助的话记得给一乐点个赞哦,感谢!

目录
相关文章
|
5月前
|
Java 应用服务中间件 Linux
Docker学习重点(7)~DockerFile
Docker学习重点(7)~DockerFile
957 0
|
存储 监控 安全
天天在都在谈的S3协议到底是什么?一文带你了解S3背后的故事
S3的诞生绝不是偶然,是数据的爆炸增长和技术的不断推进的结果,国外用亚马逊、谷歌云等支持S3协议的比较多,国内用阿里云、腾讯云、华为云的比较多。
3958 1
天天在都在谈的S3协议到底是什么?一文带你了解S3背后的故事
|
JavaScript Java 应用服务中间件
使用 Docker 高效搭建本地开发环境(详细教程)
使用 Docker 高效搭建本地开发环境(详细教程)
使用 Docker 高效搭建本地开发环境(详细教程)
|
存储 Prometheus 监控
CentOS7下简单搭建Prometheus+Grafana监控系统(上)
CentOS7下简单搭建Prometheus+Grafana监控系统
542 0
CentOS7下简单搭建Prometheus+Grafana监控系统(上)
|
5月前
|
弹性计算 双11
阿里云今年出大招了!拉新五重奖励拿到手软!
爆款云服务器99元/年,2核2G、3M固定带宽不限流量、40G ESSD Entry云盘,新老同享,新购、续费同价,开发必备! 拉新再享五重奖励!错过一次等一年!(活动时间:2023年11月1日-11月30日) 活动链接:https://www.aliyun.com/activity/allinaliyun/ydsqmlx
933 1
|
9月前
|
存储 缓存 Dart
如何处理直播实时在线人数显示并且最小化性能和资源消耗?
直播技术成为一种极为流行的交流方式。而直播平台的核心指标之一就是实时在线人数,准确地显示该指标对于用户和运营商来说都具有重要意义。然而,直播实时在线人数的显示也面临着性能和资源消耗的挑战。本文将介绍如何利用Flutter和Dart开发技术栈来优化直播实时在线人数的显示,以达到最小化性能和资源消耗的目标。 作者:狗头大军之江苏分军 链接:https://juejin.cn/spost/7255473856234913852 来源:稀土掘金 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
如何处理直播实时在线人数显示并且最小化性能和资源消耗?
|
6月前
|
存储 Prometheus 监控
服务搭建篇(一) 搭建基于prometheus + node_exporter + grafana + Alertmanager 的监控报警系统 , 保姆级教程
Alertmanager处理客户端应用程序(如Prometheus服务器)发送的警报。它负责重复数据删除、分组,并将它们路由到正确的接收器集成,如电子邮件、PagerDuty或OpsGenie。它还负责静音和抑制警报
187 0
|
5月前
|
Docker 容器
docker安装
docker安装
94 0
|
5月前
|
存储 Kubernetes API
(二)容器从入门到深入-初识Kubernetes
(二)容器从入门到深入-初识Kubernetes