log_reduce_train_fl()
적용 대상: ✅Microsoft Fabric✅Azure Data Explorer
이 함수 log_reduce_train_fl()
는 로그 선과 같은 반구조화된 텍스트 열에서 공통 패턴을 찾고 추출된 패턴에 따라 선을 클러스터합니다. 함수의 알고리즘과 대부분의 매개 변수는 log_reduce_fl()와 동일하지만 패턴 요약 테이블을 출력하는 log_reduce_fl()와 달리 이 함수는 직렬화된 모델을 출력합니다. 이 모델은 함수 log_reduce_predict_fl()/log_reduce_predict_full_fl()에서 새 로그 줄에 대해 일치하는 패턴을 예측하는 데 사용할 수 있습니다.
필수 조건
- 클러스터에서 Python 플러그 인을 사용하도록 설정해야 합니다. 이 작업은 함수에 사용되는 인라인 Python에 필요합니다.
- 데이터베이스에서 Python 플러그 인을 사용하도록 설정해야 합니다. 이 작업은 함수에 사용되는 인라인 Python에 필요합니다.
구문
Tinvoke
log_reduce_train_fl(
|
reduce_col,
model_name [ ,
use_logram [,
use_drain [ ,
custom_regexes [,
custom_regexes_policy [ 구분 기호 [ ,
similarity_th [ ,
tree_depth [ ,
trigram_th [,
,
bigram_th ]]]]]]]]])
구문 규칙에 대해 자세히 알아봅니다.
매개 변수
다음 매개 변수 설명은 요약입니다. 자세한 내용은 알고리즘 섹션에 대한 자세한 내용을 참조하세요.
속성 | Type | 필수 | 설명 |
---|---|---|---|
reduce_col | string |
✔️ | 함수가 적용되는 문자열 열의 이름입니다. |
model_name | string |
✔️ | 출력 모델의 이름입니다. |
use_logram | bool |
Logram 알고리즘을 사용하거나 사용하지 않도록 설정합니다. 기본값은 true 여야 합니다. |
|
use_drain | bool |
드레이닝 알고리즘을 사용하거나 사용하지 않도록 설정합니다. 기본값은 true 여야 합니다. |
|
custom_regexes | dynamic |
각 입력 행에서 검색할 정규식 및 대체 기호 쌍을 포함하고 일치하는 해당 기호로 대체되는 동적 배열입니다. 기본값은 dynamic([]) 여야 합니다. 기본 regex 테이블은 숫자, IP 및 GUID를 대체합니다. |
|
custom_regexes_policy | string |
'prepend', 'append' 또는 'replace'입니다. custom_regexes 앞에 추가/추가/기본값을 바꿀지 여부를 제어합니다. 기본값은 'prepend'입니다. | |
delimiters | dynamic |
구분 기호 문자열을 포함하는 동적 배열입니다. 기본값은 dynamic([" "]) 공백을 유일한 단일 문자 구분 기호로 정의하는 것입니다. |
|
similarity_th | real |
드레이닝 알고리즘에서 사용하는 유사성 임계값입니다. similarity_th 증가하면 데이터베이스가 더 구체화됩니다. 기본값은 0.5입니다. Drain을 사용하지 않도록 설정하면 이 매개 변수가 적용되지 않습니다. | |
tree_depth | int |
tree_depth 늘리면 드레이닝 알고리즘의 런타임이 향상되지만 정확도가 저하될 수 있습니다. 기본값은 4입니다. Drain을 사용하지 않도록 설정하면 이 매개 변수가 적용되지 않습니다. | |
trigram_th | int |
trigram_th 줄이면 Logram에서 토큰을 와일드카드로 바꿀 가능성이 높아질 수 있습니다. 기본값은 1.0입니다. Logram을 사용하지 않도록 설정하면 이 매개 변수가 적용되지 않습니다. | |
bigram_th | int |
bigram_th 줄이면 Logram에서 토큰을 와일드카드로 바꿀 가능성이 높아질 수 있습니다. 기본값은 15입니다. Logram이 비활성화된 경우 이 매개 변수는 아무런 영향을 주지 않습니다. |
함수 정의
다음과 같이 해당 코드를 쿼리 정의 함수로 포함하거나 데이터베이스에 저장된 함수로 만들어 함수를 정의할 수 있습니다.
다음 let 문을 사용하여 함수를 정의합니다. 사용 권한이 필요 없습니다.
Important
let 문은 자체적으로 실행할 수 없습니다. 그 뒤에 테이블 형식 식 문이 있어야 합니다. 작업 예제 log_reduce_fl()
를 실행하려면 예제를 참조 하세요.
let log_reduce_train_fl=(tbl:(*), reduce_col:string, model_name:string,
use_logram:bool=True, use_drain:bool=True, custom_regexes: dynamic = dynamic([]), custom_regexes_policy: string = 'prepend',
delimiters:dynamic = dynamic(' '), similarity_th:double=0.5, tree_depth:int = 4, trigram_th:int=10, bigram_th:int=15)
{
let default_regex_table = pack_array('(/|)([0-9]+\\.){3}[0-9]+(:[0-9]+|)(:|)', '<IP>',
'([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})', '<GUID>',
'(?<=[^A-Za-z0-9])(\\-?\\+?\\d+)(?=[^A-Za-z0-9])|[0-9]+$', '<NUM>');
let kwargs = bag_pack('reduced_column', reduce_col, 'delimiters', delimiters,'output_column', 'LogReduce', 'parameters_column', '',
'trigram_th', trigram_th, 'bigram_th', bigram_th, 'default_regexes', default_regex_table,
'custom_regexes', custom_regexes, 'custom_regexes_policy', custom_regexes_policy, 'tree_depth', tree_depth, 'similarity_th', similarity_th,
'use_drain', use_drain, 'use_logram', use_logram, 'save_regex_tuples_in_output', True, 'regex_tuples_column', 'RegexesColumn',
'output_type', 'model');
let code = ```if 1:
from log_cluster import log_reduce
result = log_reduce.log_reduce(df, kargs)
```;
tbl
| extend LogReduce=''
| evaluate python(typeof(model:string), code, kwargs)
| project name=model_name, timestamp=now(), model
};
// Write your query to use the function here.
예시
다음 예제에서는 호출 연산자를 사용하여 함수를 실행합니다.
쿼리 정의 함수를 사용하려면 포함된 함수 정의 후에 호출합니다.
//
// Finding common patterns in HDFS logs, export and store the trained model in ML_Models table
//
.set-or-append ML_Models <|
//
let log_reduce_train_fl=(tbl:(*), reduce_col:string, model_name:string,
use_logram:bool=True, use_drain:bool=True, custom_regexes: dynamic = dynamic([]), custom_regexes_policy: string = 'prepend',
delimiters:dynamic = dynamic(' '), similarity_th:double=0.5, tree_depth:int = 4, trigram_th:int=10, bigram_th:int=15)
{
let default_regex_table = pack_array('(/|)([0-9]+\\.){3}[0-9]+(:[0-9]+|)(:|)', '<IP>',
'([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})', '<GUID>',
'(?<=[^A-Za-z0-9])(\\-?\\+?\\d+)(?=[^A-Za-z0-9])|[0-9]+$', '<NUM>');
let kwargs = bag_pack('reduced_column', reduce_col, 'delimiters', delimiters,'output_column', 'LogReduce', 'parameters_column', '',
'trigram_th', trigram_th, 'bigram_th', bigram_th, 'default_regexes', default_regex_table,
'custom_regexes', custom_regexes, 'custom_regexes_policy', custom_regexes_policy, 'tree_depth', tree_depth, 'similarity_th', similarity_th,
'use_drain', use_drain, 'use_logram', use_logram, 'save_regex_tuples_in_output', True, 'regex_tuples_column', 'RegexesColumn',
'output_type', 'model');
let code = ```if 1:
from log_cluster import log_reduce
result = log_reduce.log_reduce(df, kargs)
```;
tbl
| extend LogReduce=''
| evaluate python(typeof(model:string), code, kwargs)
| project name=model_name, timestamp=now(), model
};
HDFS_log_100k
| take 100000
| invoke log_reduce_train_fl(reduce_col="data", model_name="HDFS_100K")
출력
ExtentId | OriginalSize | ExtentSize | CompressedSize | IndexSize | RowCount |
---|---|---|---|---|---|
3734a525-cc08-44b9-a992-72de97b32414 | 10383 | 11546 | 10,834 | 712 | 1 |