Delen via


vector_norm functie

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

Berekent de Lp-norm van een vector met behulp van de opgegeven graad.

Syntaxis

vector_norm(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 (Manhattan): som van absolute waarden
    • 2.0 — L2 norm (Euclidean): vierkantswortel van som van kwadraten
    • float('inf') — L∞ (oneindigheidsnorm): maximale absolute waarde

Retouren

Een FLOAT waarde die de norm van de vector aangeeft. Het resultaat is niet negatief.

Retourneert 0,0 voor lege vectoren. Retourneert NULL als de invoer is NULL of bevat NULL.

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-norm is de meest voorkomende in dichte insluitingsworkloads; L1 wordt gebruikt in sparse- en probabilistische toepassingen; L∞ wordt gebruikt in slechtste gevallen.

Foutvoorwaarden

Examples

-- L2 norm (Euclidean) - classic 3-4-5 triangle
> SELECT vector_norm(array(3.0f, 4.0f), 2.0f);
  5.0

-- L1 norm (Manhattan)
> SELECT vector_norm(array(3.0f, 4.0f), 1.0f);
  7.0

-- L∞ norm (infinity)
> SELECT vector_norm(array(3.0f, 4.0f), float('inf'));
  4.0

-- Empty vector returns 0.0
> SELECT vector_norm(array(), 2.0);
  0.0