Presto常用命令

一、基本资料

1、官方文档

https://prestodb.github.io/docs/current/sql/select.html

 

二、常用命令

1、kill任务,登录presto客户端

CALL system.runtime.kill_query(query_id => '20220317_083239_04518_ik27u', message => 'Using too many resources');

2、日期函数

--前7天
select date_format(date_add('day', -7, CURRENT_DATE), '%Y%m%d')
--前1天
select format_datetime(date_add('day', -1, CURRENT_DATE), 'yyyyMMdd')
--获取前一个小时
select date_format(current_timestamp - interval '1' hour,'%H')
--日期转data
select from_unixtime(unix_timestamp('20220324','yyyyMMdd'),'yyyy-MM-dd') as dt
--日期转周
select  weekofyear('2022-03-24') as dt

3、字符串处理

--字符串截取
select substring('20220324',0,4) as dt
--字符串拼接
select concat('a','b') as str

4、分区操作

--查看分区
show partitions bdg_inf.table1
--删除分区
alter table bdg_inf.table1 drop partition(dt=20241122);

 

三、分析Sql

1、提取出filter.conditions数组中,field字段内容,并且只展示.之后的字符串[app_version、page_version]

数据内容:

{
	"filter": {
		"conditions": [{
			"field": "event.app_version",
			"function": "equal",
			"params": ["", "4.99.20", "6.2.0.0.1"]
		}, {
			"field": "event.page_version",
			"function": "equal",
			"params": ["", "14.1"]
		}],
		"relation": "or"
	},
	"gid": "compass",
	"t": "m3r2sww2"
}

执行sql:

select field_last,count(1) as request_num from (
    SELECT
        json_extract_scalar(c.value, '$.field') AS field
    	,regexp_extract(json_extract_scalar(c.value, '$.field'), '.*\.(.*)', 1) AS field_last
    FROM
        table
    CROSS JOIN
        UNNEST(CAST(json_extract(params, '$.filter.conditions') AS ARRAY<JSON>)) AS c (value)
    WHERE
        dt>= '20241021' and dt<= '20241121' 
        AND event_id = '777'
        AND page_url in ('/eventAnalysis')
        AND json_format(json_extract(params, '$.filter')) <> '{}'
    --    AND md5_log='12222222'
)
group by field_last

 

posted @ 2022-03-17 16:46  Robots2  阅读(494)  评论(0)    收藏  举报