本文将承接
Presto
动态过滤之 动态过滤条件数据的生成_王飞活的博客-CSDN博客继续通过走读代码来了解在
Presto
(OpenLookeng)中DynamicFilterService中的动态过滤数据
合并
功能是如何实现的。
本文只要探索在
Presto
中groupby是怎么实现的。在Preso中,groupby的分组主要通过对数据Hash的数值比较进行分组,其中有2种情况,一直是仅有一个groupby字段而且字段是Bigint类型的,此场景下会使用BigintGroupByHash来实现分组,其他的情况则使用MultiChannelGroupByHash实现多列分组。
一开始用collect_set函数实现,发现对字段进行去重了,后来发现collect_list函数可以实现,现将两者的区别总结如下:
1、concat_ws和collect_set()函数实现(对某列进行去重)
其作用是将
多行
...
1、字符串截取substr
presto
语法:
substr(string, start, length) → varchar 如: select substr(‘1599319787151’,1,10)
substr(string, start) → varchar 如: select substr(‘1599319787151’,1)
而
hive
中:substr和substring都可以
的||
操作
者用来连接与数组或相同类型的元素的数组:
SELECT ARRAY [ 1 ] || ARRAY [ 2 ]; - [1,2]
SELECT ARRAY [ 1 ] || 2...
concat(concat(cast(cast(“chain_id” as decimal(10,0)) as varchar),’_’),cast(cast(“node_id” as decimal(10,0))as varchar))
cast(1.0 as decimal(10,0)) 转换为整形
cast( 1 as varchar) 转换为字符串
concat(“a”,“b”)
合并
字符串
1.
多行
合并
成一行
//方式一:使用string_agg函数,直接把一个表达式变成字符串
SELECT string_agg (DISTINCT fieldname, ',' order by fieldname ASC) FROM table;
//方式二:使用array_agg函数,,把表达式变成一个数组,一般配合 array_to_string() 函数使用
SELECT array_to_string(array_agg(DISTINCT fieldname order by
1.先来一个demopublic static void main(String[] args) {
Map<String, String> map1 = new HashMap<String, String>(){{
put("1", "a");
put("2", "b");
put("3", &