L2_DISTANCE 関数は、2 つのベクター間の L2 距離 (二乗ユークリッド距離) を計算します。
説明
L2 距離はユークリッド距離とも呼ばれ、ベクトル空間において 2 つのベクターがどれだけ離れているかを測定します。この関数は、2 つのベクターの対応する要素間の二乗差の和 (二乗ユークリッド距離) を返します。距離が 0 の場合、2 つのベクターは同一であることを示します。距離が大きいほど、ベクターがより離れていることを示します。
構文
FLOAT L2_DISTANCE( <vector>, <vector> )引数
vector:必須。VECTOR データ型の式。
戻り値
2 つのベクター間の二乗ユークリッド距離を表す FLOAT を返します。
ベクター関数はパフォーマンス向上のために最適化されているため、浮動小数点精度がわずかに低下する場合があります。この関数の結果の最大誤差は 1e-4 です。
例
-- VECTOR データ型を有効にします。
set odps.sql.type.vector.enable=true;
set odps.sql.type.system.odps2=true;
-- データを準備します。
CREATE TABLE vectors (a VECTOR(FLOAT, 3), b VECTOR(FLOAT, 3));
INSERT INTO vectors SELECT CAST(ARRAY(1.1,2.2,3.0) AS VECTOR(FLOAT,3)), CAST(ARRAY(1.0,1.0,1.0) AS VECTOR(FLOAT,3));
INSERT INTO vectors SELECT CAST(ARRAY(1.0,2.2,3.0) AS VECTOR(FLOAT,3)), CAST(ARRAY(4.0,6.0,8.0) AS VECTOR(FLOAT,3));
-- ベクター a と b の間の二乗ユークリッド距離を計算します。
SELECT L2_DISTANCE(a, b) FROM vectors;
-- 結果
+------------+
| _c0 |
+------------+
| 5.449999809265137 |
| 48.439998626708984 |
+------------+