Delen via


vector_normalize functie

Van toepassing op:controleren gemarkeerd als Ja Databricks Runtime 18.1 en hoger

Normaliseert een vector naar eenheidslengte met behulp van de opgegeven normgraad.

Syntaxis

vector_normalize(vector [, degree ])

Argumenten

  • vector: Een ARRAY<FLOAT> expressie die de vector vertegenwoordigt.
  • degree: Optioneel. Een FLOAT waarde die het normtype aangeeft; wordt standaard ingesteld op 2,0 (Euclidische norm). Ondersteunde waarden:
    • 1,0 — L1 norm: absolute waarden van componenten som tot 1
    • 2.0 — L2 norm: Euclidean lengte is gelijk aan 1
    • float('inf') — L∞ norm: maximum absolute component is gelijk aan 1

Retouren

Een ARRAY<FLOAT> weergave van de genormaliseerde vector met dezelfde richting als de invoer, maar met norm 1,0 onder de opgegeven graad.

Retourneert een lege matrix voor lege vectoren. NULL Geeft als resultaat als de vector nulnorm heeft (bijvoorbeeld alle nullen) of als de invoer is NULL of bevatNULL.

Aantekeningen

  • Alleen ARRAY<FLOAT> wordt ondersteund; andere typen, zoals ARRAY<DOUBLE> of ARRAY<DECIMAL> genereren van een fout. Een niet-ondersteunde degree waarde verhoogt INVALID_VECTOR_NORM_DEGREE.
  • L2-normalisatie is de standaard in dichte insluitingsworkloads.

Foutvoorwaarden

Examples

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