tencent cloud

Data Lake Compute

製品概要
プロダクト概要
製品の強み
適用シーン
購入ガイド
課金概要
返金説明
支払い期限切れ説明
設定調整費用の説明
クイックスタート
新規ユーザー開通フルプロセス
DLC データインポートガイド
DLCデータ分析の1分間入門
DLC権限管理の1分間入門
パーティションテーブル1分間入門
データ最適化をオンにする
クロスソース分析 EMR Hive データ
標準エンジン構成ガイド
操作ガイド
コンソール操作紹介
開発ガイド
実行環境
SparkJar ジョブ開発ガイド
PySparkジョブ開発ガイド
「クエリパフォーマンス最適化ガイド」
UDF 関数開発ガイド
システム制約
クライアントアクセス
JDBCアクセス
TDLC コマンドラインツールにアクセス
サードパーティソフトウェア連携
Python にアクセス
実践チュートリアル
DLC を Power BI に接続
テーブル作成の実践
Apache Airflowを使用してDLCエンジンのタスクをスケジュールして送信する
StarRocks は DLC 内部ストレージを直接クエリします
Spark の計算コスト最適化プラクティス
DATA + AI
ロールSSOを使用してDLCにアクセスする
SQL構文
SuperSQL構文
標準 Spark 構文概要
標準 Presto 構文の概要
予約語
API Documentation
History
Introduction
API Category
Making API Requests
Data Table APIs
Task APIs
Metadata APIs
Service Configuration APIs
Permission Management APIs
Database APIs
Data Source Connection APIs
Data Optimization APIs
Data Engine APIs
Resource Group for the Standard Engine APIs
Data Types
Error Codes
一般クラスリファレンス
エラーコード
クォータと制限
サードパーティソフトウェアでDLCに接続する操作ガイド
よくあるご質問
権限に関するよくあるご質問
エンジン類のよくある質問
機能に関するよくあるご質問
Sparkジョブクラスに関するよくある質問
DLC ポリシー
プライバシーポリシー
データプライバシーとセキュリティ契約
お問い合わせ

ウィンドウ関数

PDF
Modo Foco
Tamanho da Fonte
Última atualização: 2025-12-25 12:00:07

row_number

関数構文:
row_number()
サポートエンジン:SparkSQL、Presto
使用説明:各行に一意の連続番号を割り当てます
戻り値の型:int
例:

SELECT a, b, row_number() OVER (PARTITION BY a ORDER BY b) FROM VALUES ('A1', 2), ('A1', 1), ('A2', 3), ('A1', 1) tab(a, b);
A1 1 1
A1 1 2
A1 2 3
A2 3 1

rank

関数構文:
rank()
サポートエンジン:SparkSQL、Presto
使用説明:ある値が一連の値の中で占める順位を計算します。同順位がある場合、順位シーケンスに空位が生じます。
戻り値の型:int
例:
SELECT a, b, rank() OVER (PARTITION BY a ORDER BY b) FROM VALUES ('A1', 2), ('A1', 1), ('A2', 3), ('A1', 1) tab(a, b)
A1 1 1
A1 1 1
A1 2 3
A2 3 1

dense_rank

関数構文:
dense_rank()
サポートエンジン:SparkSQL、Presto
使用説明:ある値が一連の値の中で占める順位を計算します。同順位がある場合、関数rankとは異なり、dense_rankは順位シーケンスに空位を生じさせません。
戻り値の型:int
例:
SELECT a, b, dense_rank() OVER (PARTITION BY a ORDER BY b) FROM VALUES ('A1', 2), ('A1', 1), ('A2', 3), ('A1', 1) tab(a, b)
A1 1 1
A1 1 1
A1 2 2
A2 3 1

percent_rank()

関数構文:
percent_rank()

サポートエンジン:SparkSQL、Presto
使用説明:ある値が一連の値の中で占めるパーセントランクを計算します。戻り値は0から1の間の小数で表されます。
戻り値の型:double
例:
SELECT a, b, percent_rank() OVER (PARTITION BY a ORDER BY b) FROM VALUES ('A1', 2), ('A1', 1), ('A2', 3), ('A1', 1) tab(a, b)
A1 1 0.0
A1 1 0.0
A1 2 1.0
A2 3 0.0

cume_dist

関数構文:
cume_dist()
サポートエンジン:SparkSQL、Presto
使用説明:特定の値がパーティション内のすべての値に対して相対的に占める位置を計算します。
戻り値の型:double
例:
SELECT a, b, cume_dist() OVER (PARTITION BY a ORDER BY b) FROM VALUES ('A1', 2), ('A1', 1), ('A2', 3), ('A1', 1) tab(a, b)
A1 1 0.6666666666666666
A1 1 0.6666666666666666
A1 2 1.0
A2 3 1.0

first_value

関数構文:
first_value(col)
サポートエンジン:SparkSQL、Presto
使用説明:パーティション内の列の最初のデータの値を返します
戻り値の型:col列のデータ型
例:
SELECT a, b, first_value(b) OVER (PARTITION BY a ORDER BY b) FROM VALUES ('A1', 2), ('A1', 1), ('A2', 3), ('A1', 1) tab(a, b)
A1 1 1
A1 1 1
A1 2 1
A2 3 3

last_value

関数構文:
last_value(col)
サポートエンジン:SparkSQL、Presto
使用説明:パーティション内の列の最後のデータの値を返します
戻り値の型:int
例:
SELECT a, b, last_value(b) OVER (PARTITION BY a ORDER BY b) FROM VALUES ('A1', 2), ('A1', 1), ('A2', 3), ('A1', 1) tab(a, b)
A1 1 1
A1 1 1
A1 2 2
A2 3 3

lag

関数構文:
lag(col[, n [, default]])
サポートエンジン:SparkSQL、Presto
使用説明:ウィンドウ内の現在の行から上にn行目の値を返します。nのデフォルト値は1、defaultのデフォルト値はnullです。n行目の値がnullの場合、nullを返します。そのようなオフセット行が存在しない場合(例えば、オフセットが1でウィンドウの最初の行に上に行がない場合)、defaultを返します。最初の引数は列名、2番目の引数は前のn行、3番目の引数はデフォルト値です。
戻り値の型:col列のデータ型
例:
SELECT a, b, lag(b) OVER (PARTITION BY a ORDER BY b) FROM VALUES ('A1', 2), ('A1', 1), ('A2', 3), ('A1', 1) tab(a, b)
A1 1 NULL
A1 1 1
A1 2 1
A2 3 NULL

lead

関数構文:
lead(col[, n[, default]])
サポートエンジン:SparkSQL、Presto
使用方法:ウィンドウ内の現在の行から下にn行目の値を返します。nのデフォルト値は1、defaultのデフォルト値はnullです。n行目の値がnullの場合、nullを返します。そのようなオフセット行が存在しない場合(例えば、オフセットが1でウィンドウの最後の行に下の行がない場合)、defaultを返します。最初の引数は列名、2番目の引数は前のn行、3番目の引数はデフォルト値です。
戻り値の型:col列のデータ型
例:
SELECT a, b, lead(b) OVER (PARTITION BY a ORDER BY b) FROM VALUES ('A1', 2), ('A1', 1), ('A2', 3), ('A1', 1) tab(a, b)
A1 1 1
A1 1 2
A1 2 NULL
A2 3 NULL

nth_value

関数構文:
nth_value(col[, n])
サポートエンジン:SparkSQL、Presto
使用方法:ウィンドウの先頭からn行目の値を返します。nは1から始まります。ignoreNulls=trueの場合、n行目を検索する際にnullをスキップします。それ以外の場合、各行がnとしてカウントされます。そのようなn行目が存在しない場合(例えば、nが10でウィンドウサイズが10未満の場合)、nullを返します。最初の引数は列名、2番目の引数は前のn行目です。
戻り値の型:col列のデータ型
例:
SELECT a, b, nth_value(b, 2) OVER (PARTITION BY a ORDER BY b) FROM VALUES ('A1', 2), ('A1', 1), ('A2', 3), ('A1', 1) tab(a, b)
A1 1 1
A1 1 1
A1 2 1
A2 3 NULL

ntile

関数構文:
ntile(n)
サポートエンジン:SparkSQL、Presto
使用説明:ウィンドウパーティションの行をn個のバケットに分割し、行が属するバケット番号を1からnの範囲で返します
戻り値の型:int
例:
SELECT a, b, ntile(2) OVER (PARTITION BY a ORDER BY b) FROM VALUES ('A1', 2), ('A1', 1), ('A2', 3), ('A1', 1) tab(a, b)
A1 1 1
A1 1 1
A1 2 2
A2 3 1

CLUSTER_SAMPLE

関数構文:
CLUSTER_SAMPLE(<int> N[, <int> M]) over (PARTITION BY col1 ORDER by col2)
サポートエンジン:SparkSQL
使用説明:ウィンドウ内で指定された比率または数量でサンプリングします。
N:必須、int 型、N のみ指定の場合、N 件のデータをサンプリングすることを示します。サンプリング結果は N 件に近くなりますが、必ずしも N 件になるとは限りません。
M:任意、int 型、M が指定されている場合、M/N * ウィンドウ内の総データ数のデータをサンプリングすることを示します。サンプリング結果は M/N * 総データ数に近くなります。
戻り値の型:boolean 型、true はサンプリングされたことを示し、false はサンプリングされなかったことを示します。
例:
> SELECT a, b, cluster_sample(2) OVER (PARTITION BY a ORDER BY b) FROM VALUES ('A1', 2), ('A1', 1), ('A2', 3), ('A1', 1) tab(a, b);
A1 2 true
A1 1 true
A2 3 true
A1 1 false
> SELECT a, b from (select a, b, cluster_sample(2) OVER (PARTITION BY a ORDER BY b) as c FROM VALUES ('A1', 2), ('A1', 1), ('A2', 3), ('A1', 1) tab(a, b)) where c;
A1 2
A1 1
A2 3


Ajuda e Suporte

Esta página foi útil?

comentários