常用的Prestosql
Posted 一乐乐
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常用的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
如果本文对你有帮助的话记得给一乐点个赞哦,感谢!
本文来自博客园,作者:一乐乐,转载请注明原文链接:https://www.cnblogs.com/shan333/p/17172893.html
以上是关于常用的Prestosql的主要内容,如果未能解决你的问题,请参考以下文章
在 prestosql/presto 容器中创建目录/模式/表