series_cosine_similarity_fl()
Gilt für: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft 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 |