Dela via


funktion vector_normalize

Gäller för:check markerat ja Databricks Runtime 18.1 och senare

Normaliserar en vektor till enhetslängd med den angivna normgraden.

Syntax

vector_normalize(vector [, degree ])

Arguments

  • vektor: Ett ARRAY<FLOAT> uttryck som representerar vektorn.
  • grad: Valfritt. Ett FLOAT värde som anger normtypen. Standardvärdet är 2,0 (euklidisk norm). Värden som stöds:
    • 1.0 – L1 norm: absoluta värden för komponenter summeras till 1
    • 2.0 – L2 norm: Euklidiska längden är lika med 1
    • float('inf') — L∞ norm: högsta absoluta komponent är lika med 1

Retur

En ARRAY<FLOAT> som representerar den normaliserade vektorn med samma riktning som indata men med norm 1.0 under den angivna graden.

Returnerar en tom matris för tomma vektorer. Returnerar NULL om vektorn har noll norm (t.ex. alla nollor) eller om indata är NULL eller innehåller NULL.

Notes

  • Endast ARRAY<FLOAT> stöds, andra typer, till exempel ARRAY<DOUBLE> eller ARRAY<DECIMAL> skapar ett fel. Ett värde som degree inte stöds genererar INVALID_VECTOR_NORM_DEGREE.
  • L2-normalisering är standard i kompakta inbäddningsarbetsbelastningar.

Feltillstånd

Exempel

-- 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