文档

使用介绍

更新时间:

自定义函数TVF相关使用说明。

rankTvf

rankTvf主要是为了提供类sql窗口函数rank的功能,用于打散后过滤,其原型如下:

rankTvf("group_key", "sort_key", "reserved_count", (sql))

group_key: 用于打散的字段,支持多个字段,使用,分隔, group_key可以为空。

sort_key:用于排序的字段,支持多个字段,+表示增序,-表示减序,默认为增序,排序字段不允许为空。

reserved_count: 每组保留的个数, 负数为保留全部

sql: 需要打散的sql语句

rankTvf在打散过滤sql结果后,输出的结果仍保留原sql的顺序关系,但会删除被过滤掉的行。

使用示例:

select * from table (
  rankTvf('brand','-size','1', (SELECT brand, size FROM phone))
) 
order by brand 
limit 100 

sortTvf

sortTvf主要是为了提供local topK的功能。例如是想在searcher上进行排序取topk的结果,再去做join。如果使用order by语句则会上推到qrs上做join,order by是全局的排序。

原型如下:

sortTvf("sort_key", "reserved_count", (sql))

sort_key:用于排序的字段,支持多个字段,+表示增序,-表示减序,默认为增序,排序字段不允许为空。

reserved_count: 每组保留的个数

sql: 需要排序的sql语句

sortTvf与rankTvf的区别:sortTvf会改变原sql的行在表中的顺序

使用示列:

select * from table (
  sortTvf('-size','3', (SELECT brand, size FROM phone))
)

topKTvf

topKTvf主要是为了提供local topK的功能。例如是想在searcher上进行排序取topk的结果,再去做join。如果使用order by语句则会上推到qrs上做join,order by是全局的排序。

原型如下:

topKTvf("sort_key", "reserved_count", (sql))

sort_key:用于排序的字段,支持多个字段,+表示增序,-表示减序,默认为增序,排序字段不允许为空。

reserved_count: 每组保留的个数

sql: 需要排序的sql语句

topKTvf与sortTvf的区别:最终的结果无序

使用示列:

select * from table (
  topKTvf('-size','3', (SELECT brand, size FROM phone))
)

enableShuffleTvf

enableShuffleTvf是让在此tvf之上的sql在qrs结点上跑,例如rankTvf,默认是可以下推到searcher,如果rankTvf中的sql包含了enableShuffleTvf, 此时rankTvf只会在qrs上跑。其原型如下:

enableShuffleTvf((sql))

使用方法:

select * from table (
 enableShuffleTvf((SELECT brand, size FROM phone))
)