A função L2_DISTANCE calcula a distância euclidiana L2 entre dois vetores.
Nota
A distância L2, também conhecida como distância euclidiana, mede o afastamento entre dois vetores em um espaço vetorial. Esse valor corresponde à raiz quadrada da soma dos quadrados das diferenças entre os elementos correspondentes dos vetores. Distância zero indica vetores idênticos. Quanto maior a distância, mais distantes estão os vetores.
Sintaxe
FLOAT L2_DISTANCE( <vector>, <vector> )
Parâmetros
vector: obrigatório. Expressão do tipo de dados VECTOR.
Valor retornado
Retorna um valor FLOAT que representa a distância euclidiana entre os dois vetores.
As funções de vetor têm otimização de desempenho, o que pode causar pequena perda de precisão de ponto flutuante. O resultado desta função apresenta erro máximo de 1e-4.
Exemplos
-- 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 Euclidean distance between vectors a and b.
SELECT L2_DISTANCE(a, b) FROM vectors;
-- Result
+------------+
| _c0 |
+------------+
| 5.449999809265137 |
| 48.439998626708984 |
+------------+