すべてのプロダクト
Search
ドキュメントセンター

OpenSearch:概要

最終更新日:Dec 28, 2024

このトピックでは、テーブル値関数 (TVF) について説明します。

rankTvf

rankTvf は、SQL ステートメントの rank ウィンドウ関数に似ています。この関数は、データが分散された後にデータをフィルタリングするために使用されます。次のサンプルコードは、関数のプロトタイプを示しています。

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

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 は、ローカルのトップ K 機能を提供するために使用されます。たとえば、sortTvf 関数を使用して、サーチャーによって返された上位 K 件の結果をソートし、結果に対して結合操作を実行できます。ORDER BY 句を使用する場合、句は結合操作のためにクエリレコードサーチャー (QRS) にプッシュされます。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 は、ローカルのトップ K 機能を提供するために使用されます。たとえば、topKTvf 関数を使用して、サーチャーによって返された上位 K 件の結果をソートし、結果に対して結合操作を実行できます。ORDER BY 句を使用する場合、句は結合操作のためにクエリレコードサーチャー (QRS) にプッシュされます。ORDER BY 句は、グローバルソート操作に使用されます。

次のサンプルコードは、関数のプロトタイプを示しています。

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

sort_key: データのソートに使用するフィールド。複数のフィールドを指定できます。正符号 (+) は、システムがデータを昇順でソートすることを指定します。負符号 (-) は、システムがデータを降順でソートすることを指定します。デフォルトでは、システムはデータを昇順でソートします。このフィールドを空にすることはできません。

reserved_count: 各グループで保持されるフィールドの数。

sql: クエリ結果をソートする必要がある SQL ステートメント。

topKTvf と sortTvf の違い: topKTvf によって返される最終結果は順序付けされていません。

例:

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

enableShuffleTvf

enableShuffleTvf 関数は、SQL ステートメントを TVF から QRS に切り替えるために使用されます。たとえば、rankTvf 関数によって処理される必要がある SQL ステートメントは、デフォルトでサーチャーにプッシュダウンできます。rankTvf 関数の SQL ステートメントに enableShuffleTvf が含まれている場合、rankTvf 関数は QRS 上でのみ実行されます。次のサンプルコードは、関数のプロトタイプを示しています。

enableShuffleTvf((sql))

次のサンプルコードは、enableShuffleTvf 関数の使用方法の例を示しています。

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