ClickHouse/docs/en/sql-reference/functions/distance-functions.md
2022-07-13 10:29:13 +00:00

11 KiB

Distance functions

L1Norm

Calculates the sum of absolute values of a vector.

Syntax

L1Norm(vector)

Alias: normL1.

Arguments

Returned value

Type: UInt, Float or Decimal.

Examples

Query:

SELECT L1Norm((1, 2));

Result:

┌─L1Norm((1, 2))─┐
│              3 │
└────────────────┘

L2Norm

Calculates the square root of the sum of the squares of the vector values.

Syntax

L2Norm(vector)

Alias: normL2.

Arguments

Returned value

Type: Float.

Example

Query:

SELECT L2Norm((1, 2));

Result:

┌───L2Norm((1, 2))─┐
│ 2.23606797749979 │
└──────────────────┘

LinfNorm

Calculates the maximum of absolute values of a vector.

Syntax

LinfNorm(vector)

Alias: normLinf.

Arguments

Returned value

  • Linf-norm or the maximum absolute value.

Type: Float.

Example

Query:

SELECT LinfNorm((1, -2));

Result:

┌─LinfNorm((1, -2))─┐
│                 2 │
└───────────────────┘

LpNorm

Calculates the root of p-th power of the sum of the absolute values of a vector in the power of p.

Syntax

LpNorm(vector, p)

Alias: normLp.

Arguments

  • vectorTuple or Array.
  • p — The power. Possible values: real number in [1; inf). UInt or Float.

Returned value

Type: Float.

Example

Query:

SELECT LpNorm((1, -2), 2);

Result:

┌─LpNorm((1, -2), 2)─┐
│   2.23606797749979 │
└────────────────────┘

L1Distance

Calculates the distance between two points (the values of the vectors are the coordinates) in L1 space (1-norm (taxicab geometry distance)).

Syntax

L1Distance(vector1, vector2)

Alias: distanceL1.

Arguments

Returned value

  • 1-norm distance.

Type: Float.

Example

Query:

SELECT L1Distance((1, 2), (2, 3));

Result:

┌─L1Distance((1, 2), (2, 3))─┐
│                          2 │
└────────────────────────────┘

L2Distance

Calculates the distance between two points (the values of the vectors are the coordinates) in Euclidean space (Euclidean distance).

Syntax

L2Distance(vector1, vector2)

Alias: distanceL2.

Arguments

Returned value

  • 2-norm distance.

Type: Float.

Example

Query:

SELECT L2Distance((1, 2), (2, 3));

Result:

┌─L2Distance((1, 2), (2, 3))─┐
│         1.4142135623730951 │
└────────────────────────────┘

LinfDistance

Calculates the distance between two points (the values of the vectors are the coordinates) in L_{inf} space (maximum norm).

Syntax

LinfDistance(vector1, vector2)

Alias: distanceLinf.

Arguments

Returned value

  • Infinity-norm distance.

Type: Float.

Example

Query:

SELECT LinfDistance((1, 2), (2, 3));

Result:

┌─LinfDistance((1, 2), (2, 3))─┐
│                            1 │
└──────────────────────────────┘

LpDistance

Calculates the distance between two points (the values of the vectors are the coordinates) in Lp space (p-norm distance).

Syntax

LpDistance(vector1, vector2, p)

Alias: distanceLp.

Arguments

  • vector1 — First vector. Tuple or Array.
  • vector2 — Second vector. Tuple or Array.
  • p — The power. Possible values: real number from [1; inf). UInt or Float.

Returned value

  • p-norm distance.

Type: Float.

Example

Query:

SELECT LpDistance((1, 2), (2, 3), 3);

Result:

┌─LpDistance((1, 2), (2, 3), 3)─┐
│            1.2599210498948732 │
└───────────────────────────────┘

L1Normalize

Calculates the unit vector of a given vector (the values of the tuple are the coordinates) in L1 space (taxicab geometry).

Syntax

L1Normalize(tuple)

Alias: normalizeL1.

Arguments

Returned value

  • Unit vector.

Type: Tuple of Float.

Example

Query:

SELECT L1Normalize((1, 2));

Result:

┌─L1Normalize((1, 2))─────────────────────┐
│ (0.3333333333333333,0.6666666666666666) │
└─────────────────────────────────────────┘

L2Normalize

Calculates the unit vector of a given vector (the values of the tuple are the coordinates) in Euclidean space (using Euclidean distance).

Syntax

L2Normalize(tuple)

Alias: normalizeL1.

Arguments

Returned value

  • Unit vector.

Type: Tuple of Float.

Example

Query:

SELECT L2Normalize((3, 4));

Result:

┌─L2Normalize((3, 4))─┐
│ (0.6,0.8)           │
└─────────────────────┘

LinfNormalize

Calculates the unit vector of a given vector (the values of the tuple are the coordinates) in L_{inf} space (using maximum norm).

Syntax

LinfNormalize(tuple)

Alias: normalizeLinf .

Arguments

Returned value

  • Unit vector.

Type: Tuple of Float.

Example

Query:

SELECT LinfNormalize((3, 4));

Result:

┌─LinfNormalize((3, 4))─┐
│ (0.75,1)              │
└───────────────────────┘

LpNormalize

Calculates the unit vector of a given vector (the values of the tuple are the coordinates) in Lp space (using p-norm).

Syntax

LpNormalize(tuple, p)

Alias: normalizeLp .

Arguments

  • tupleTuple.
  • p — The power. Possible values: any number from [1;inf). UInt or Float.

Returned value

  • Unit vector.

Type: Tuple of Float.

Example

Query:

SELECT LpNormalize((3, 4),5);

Result:

┌─LpNormalize((3, 4), 5)──────────────────┐
│ (0.7187302630182624,0.9583070173576831) │
└─────────────────────────────────────────┘

cosineDistance

Calculates the cosine distance between two vectors (the values of the tuples are the coordinates). The less the returned value is, the more similar are the vectors.

Syntax

cosineDistance(tuple1, tuple2)

Arguments

  • tuple1 — First tuple. Tuple.
  • tuple2 — Second tuple. Tuple.

Returned value

  • Cosine of the angle between two vectors substracted from one.

Type: Float.

Example

Query:

SELECT cosineDistance((1, 2), (2, 3));

Result:

┌─cosineDistance((1, 2), (2, 3))─┐
│           0.007722123286332261 │
└────────────────────────────────┘