Freigeben über


series_cosine_similarity_fl()

Gilt für: ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft Sentinel

Berechnet die Kosinus-Ähnlichkeit zweier numerischer Vektoren.

Die Funktion series_cosine_similarity_fl() ist eine benutzerdefinierte Funktion (UDF), die einen Ausdruck verwendet, der zwei dynamische numerische Arrays als Eingabe enthält und deren Kosinusgleichheit berechnet.

Hinweis

Verwenden Sie die systemeigene Funktion series_cosine_similarity() anstelle der in diesem Dokument beschriebenen Funktion. Die systemeigene Funktion bietet die gleiche Funktionalität und ist besser für Leistung und Skalierbarkeit. Dieses Dokument wird nur zu Referenzzwecken bereitgestellt.

Syntax

series_cosine_similarity_fl(vec1, vec2, [ vec1_size [, vec2_size ]])

Erfahren Sie mehr über Syntaxkonventionen.

Parameter

Name Type Erforderlich Beschreibung
vec1 dynamic ✔️ Ein Array numerischer Werte.
vec2 dynamic ✔️ Ein Array numerischer Werte, das dieselbe Länge wie vec1 aufweist.
vec1_size real Die Größe von vec1. Dies entspricht der Quadratwurzel des Punktprodukts des Vektors mit sich selbst.
vec2_size real Die Größe von vec2.

Funktionsdefinition

Sie können die Funktion definieren, indem Sie den Code entweder als abfragedefinierte Funktion einbetten oder wie folgt als gespeicherte Funktion in Ihrer Datenbank erstellen:

Definieren Sie die Funktion mithilfe der folgenden Let-Anweisung. Es sind keine Berechtigungen erforderlich.

Wichtig

Eine Let-Anweisung kann nicht alleine ausgeführt werden. Auf sie muss eine tabellarische Ausdrucksanweisung folgen. Informationen zum Ausführen eines funktionierenden Beispiels series_cosine_similarity_fl()finden Sie unter Beispiel.

let series_cosine_similarity_fl=(vec1:dynamic, vec2:dynamic, vec1_size:real=double(null), vec2_size:real=double(null))
{
    let dp = series_dot_product(vec1, vec2);
    let v1l = iff(isnull(vec1_size), sqrt(series_dot_product(vec1, vec1)), vec1_size);
    let v2l = iff(isnull(vec2_size), sqrt(series_dot_product(vec2, vec2)), vec2_size);
    dp/(v1l*v2l)
};
// Write your query to use the function here.

Beispiel

Um eine abfragedefinierte Funktion zu verwenden, rufen Sie sie nach der definition der eingebetteten Funktion auf.

let series_cosine_similarity_fl=(vec1:dynamic, vec2:dynamic, vec1_size:real=double(null), vec2_size:real=double(null))
{
    let dp = series_dot_product(vec1, vec2);
    let v1l = iff(isnull(vec1_size), sqrt(series_dot_product(vec1, vec1)), vec1_size);
    let v2l = iff(isnull(vec2_size), sqrt(series_dot_product(vec2, vec2)), vec2_size);
    dp/(v1l*v2l)
};
let s1=pack_array(0, 1);
let s2=pack_array(sqrt(2), sqrt(2));
print angle=acos(series_cosine_similarity_fl(s1, s2))/(2*pi())*360

Output

angle
45