Поделиться через


vector_normalize функция

Область применения:check помечена да Databricks Runtime 18.1 и выше

Нормализует вектор на длину единицы, используя указанную норму.

Синтаксис

vector_normalize(vector [, degree ])

Аргументы

  • vector: ARRAY<FLOAT> выражение, представляющее вектор.
  • degree: Необязательный. FLOAT Значение, указывающее тип нормы; по умолчанию — 2,0 (Евклидеан норма). Поддерживаемые значения:
    • 1.0 — норма L1: абсолютные значения компонентов суммы до 1
    • 2.0 — норма L2: Евклидеан длина равна 1
    • float('inf') — L∞ норме: максимальный абсолютный компонент равен 1

Возвраты

Представляет ARRAY<FLOAT> нормализованный вектор с тем же направлением, что и входные данные, но с нормой 1,0 под указанной степенью.

Возвращает пустой массив для пустых векторов. Возвращает значение NULL , если вектор имеет нулевую норму (например, все нули) или если входные данные или NULL содержатся NULL.

Примечания

  • Поддерживается только ARRAY<FLOAT> другие типы, например ARRAY<DOUBLE> или ARRAY<DECIMAL> возникают ошибки. Неподдерживаемое degree значение вызывает INVALID_VECTOR_NORM_DEGREE.
  • Нормализация L2 — это стандарт в плотных рабочих нагрузках внедрения.

Условия ошибок

Примеры

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