La fonction L2_DISTANCE calcule le carré de la distance euclidienne (distance L2 au carré) entre deux vecteurs.
La distance L2, également appelée distance euclidienne, mesure l'écart entre deux vecteurs dans un espace vectoriel. Elle correspond à la somme des carrés des différences entre les éléments correspondants des deux vecteurs (c'est-à-dire le carré de la distance euclidienne). Une distance nulle indique que les deux vecteurs sont identiques. Plus la distance est élevée, plus les vecteurs sont éloignés.
Syntaxe
FLOAT L2_DISTANCE( <vector>, <vector> )
Paramètres
vector : Obligatoire. Expression du type de données VECTOR.
Valeur renvoyée
Renvoie une valeur FLOAT représentant le carré de la distance euclidienne entre les deux vecteurs.
Les fonctions vectorielles sont optimisées pour les performances, ce qui peut entraîner une légère perte de précision en virgule flottante. Le résultat de cette fonction présente une erreur maximale de 1e-4.
Exemples
-- Enable the VECTOR data type.
set odps.sql.type.vector.enable=true;
set odps.sql.type.system.odps2=true;
-- Prepare data.
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));
-- Calculate the squared Euclidean distance between vectors a and b.
SELECT L2_DISTANCE(a, b) FROM vectors;
-- Result
+------------+
| _c0 |
+------------+
| 5.449999809265137 |
| 48.439998626708984 |
+------------+