series_cosine_similarity_fl()
적용 대상: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
두 숫자 벡터의 코사인 유사성을 계산합니다.
이 함수 series_cosine_similarity_fl()
는 두 개의 동적 숫자 배열이 포함된 식을 입력으로 사용하고 코사인 유사성을 계산하는 UDF(사용자 정의 함수)입니다.
참고 항목
이 문서에 설명된 함수 대신 네이티브 함수 series_cosine_similarity() 를 사용합니다. 네이티브 함수는 동일한 기능을 제공하며 성능 및 확장성을 위해 더 좋습니다. 이 문서는 참조용으로만 제공됩니다.
구문
series_cosine_similarity_fl(
vec1,
vec2,
[ vec1_size [,
vec2_size ]])
구문 규칙에 대해 자세히 알아봅니다.
매개 변수
이름 | Type | 필수 | 설명 |
---|---|---|---|
vec1 | dynamic |
✔️ | 숫자 값의 배열입니다. |
vec2 | dynamic |
✔️ | vec1과 길이가 같은 숫자 값의 배열입니다. |
vec1_size | real |
vec1의 크기입니다. 이는 벡터 자체의 점 곱의 제곱근과 동일합니다. | |
vec2_size | real |
vec2의 크기입니다. |
함수 정의
다음과 같이 해당 코드를 쿼리 정의 함수로 포함하거나 데이터베이스에 저장된 함수로 만들어 함수를 정의할 수 있습니다.
다음 let 문을 사용하여 함수를 정의합니다. 사용 권한이 필요 없습니다.
Important
let 문은 자체적으로 실행할 수 없습니다. 그 뒤에 테이블 형식 식 문이 있어야 합니다. 작업 예제 series_cosine_similarity_fl()
를 실행하려면 예제를 참조 하세요.
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.
예시
쿼리 정의 함수를 사용하려면 포함된 함수 정의 후에 호출합니다.
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
출력
각 |
---|
45 |