全部產品
Search
文件中心

OpenSearch:使用介紹

更新時間:Jul 13, 2024

自訂函數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))
)