適用対象:はい Databricks Runtime 18.1 以降と![]()
指定したノルム度を使用して、ベクトルを単位長に正規化します。
構文
vector_normalize(vector [, degree ])
引数
-
vector: ベクトルを表す
ARRAY<FLOAT>式。 -
degree: 省略可能。 標準型を指定する
FLOAT値。既定値は 2.0 (ユークリッドノルム) です。 サポートされている値:- 1.0 — L1 ノルム: 成分合計の絶対値 1
- 2.0 — L2 ノルム: ユークリッド長さが 1 に等しい
-
float('inf')— L∞ノルム:最大絶対成分は1に等しい
返品
ARRAY<FLOAT>入力と同じ方向を持ち、指定された度の基準 1.0 の正規化されたベクトルを表します。
空のベクトルの空の配列を返します。 ベクトルに 0 のノルム (例: すべてのゼロ) がある場合、または入力がNULLまたはNULLを含む場合にNULLを返します。
メモ
-
ARRAY<FLOAT>のみがサポートされています。ARRAY<DOUBLE>やARRAY<DECIMAL>などの他の型ではエラーが発生します。 サポートされていないdegree値では 、INVALID_VECTOR_NORM_DEGREEが発生します。 - L2 正規化は、高密度埋め込みワークロードの標準です。
エラー条件
例示
-- L2 normalization (Euclidean) - 3-4-5 triangle
> SELECT vector_normalize(array(3.0f, 4.0f), 2.0f);
[0.6, 0.8]
-- Verify L2-normalized vector has unit norm
> SELECT vector_norm(vector_normalize(array(1.0f, 2.0f, 3.0f), 2.0f), 2.0f);
1.0
-- Zero vector returns NULL
> SELECT vector_normalize(array(0.0f, 0.0f, 0.0f), 2.0f);
NULL