다음을 통해 공유


log_reduce_train_fl()

이 함수 log_reduce_train_fl() 는 로그 선과 같은 반구조화된 텍스트 열에서 공통 패턴을 찾고 추출된 패턴에 따라 선을 클러스터합니다. 함수의 알고리즘과 대부분의 매개 변수는 log_reduce_fl()와 동일하지만 패턴 요약 테이블을 출력하는 log_reduce_fl()와 달리 이 함수는 직렬화된 모델을 출력합니다. 이 모델은 함수 log_reduce_predict_fl()/log_reduce_predict_full_fl()에서 새 로그 줄에 대해 일치하는 패턴을 예측하는 데 사용할 수 있습니다.

필수 조건

구문

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 10834 712 1

이 기능은 지원되지 않습니다.