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


series_dot_product()

Область применения: ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft Sentinel

Вычисляет точечный продукт двух числовых рядов.

Функция series_dot_product() принимает две числовые ряды в качестве входных данных и вычисляет их точечный продукт.

Синтаксис

series_dot_product(серия1, серии 2)

Альтернативный синтаксис

series_dot_product(числовой ряд, )

series_dot_product(числовые ряды, )

Примечание.

Альтернативный синтаксис показывает, что один из двух аргументов функции может быть числовым скаляром.

Этот числовый скаляр будет транслироваться в вектор, длина которого равна длине соответствующего числового ряда.

Например, series_dot_product([1, 2, 3], 10) будет рассматриваться как series_dot_product([1, 2, 3], [10, 10, 10]).

Дополнительные сведения о соглашениях синтаксиса.

Параметры

Имя (название) Type Обязательно Описание
series1, series2 dynamic ✔️ Входные массивы с числовыми данными, умноженные элементом, а затем суммируются в значение типа real.

Возвраты

Возвращает значение типа real , значение которого — сумма над продуктом каждого элемента серии1 с соответствующим элементом серии2. В случае, если длина обоих рядов не равна, длинная серия будет усечена до длины более короткой. Любой нечисленный элемент входной серии будет игнорироваться.

Примечание.

Если один или оба входных массива пусты, результат будет null.

Оптимизация производительности

Для повышения производительности и снижения требований к хранилищу при использовании этой функции рекомендуется использовать Vector16 политику кодирования для хранения векторов с плавающей запятой, которые не требуют точности 64 битов, например внедрения вектора машинного обучения. Профиль Vector16 , который использует представление с плавающей запятой Bfloat16 , может значительно оптимизировать операцию и уменьшить размер хранилища на 4. Дополнительные сведения о политике Vector16 кодирования см. в типах политик кодирования.

Пример

range x from 1 to 3 step 1 
| extend y = x * 2
| extend z = y * 2
| project s1 = pack_array(x,y,z), s2 = pack_array(z, y, x)
| extend s1_dot_product_s2 = series_dot_product(s1, s2)
s1 s2 s1_dot_product_s2
[1,2,4] [4,2,1] 12
[2,4,8] [8,4,2] 48
[3,6,12] [12,6,3] 108
range x from 1 to 3 step 1 
| extend y = x * 2
| extend z = y * 2
| project s1 = pack_array(x,y,z), s2 = x
| extend s1_dot_product_s2 = series_dot_product(s1, s2)
s1 s2 s1_dot_product_s2
[1,2,4] 1 7
[2,4,8] 2 28
[3,6,12] 3 63