Partilhar via


log_reduce_train_fl()

Aplica-se a: ✅Microsoft FabricAzure Data Explorer

A função log_reduce_train_fl() encontra padrões comuns em colunas textuais semiestruturadas, como linhas de log, e agrupa as linhas de acordo com os padrões extraídos. O algoritmo da função e a maioria dos parâmetros são idênticos ao log_reduce_fl(), mas, ao contrário de log_reduce_fl() que gera uma tabela de resumo de padrões, essa função gera o modelo serializado. O modelo pode ser usado pela função log_reduce_predict_fl()/log_reduce_predict_full_fl() para prever o padrão correspondente para novas linhas de log.

Pré-requisitos

  • O plug-in Python deve ser habilitado no cluster. Isso é necessário para o Python embutido usado na função.

Sintaxe

Tinvoke | log_reduce_train_fl(reduce_col, model_name [ , use_logram [, use_drain [, custom_regexes [, custom_regexes_policy [, delimitadores [ , similarity_th [ , tree_depth [ , trigram_th [, bigram_th ]]]]]]]]])

Saiba mais sobre as convenções de sintaxe.

Parâmetros

A descrição dos parâmetros a seguir é um resumo. Para obter mais informações, consulte Mais sobre a seção de algoritmo .

Nome Digitar Obrigatória Descrição
reduce_col string ✔️ O nome da coluna de cadeia de caracteres à qual a função é aplicada.
model_name string ✔️ O nome do modelo de saída.
use_logram bool Ative ou desative o algoritmo Logram. O valor padrão é true.
use_drain bool Ative ou desative o algoritmo Drenar. O valor padrão é true.
custom_regexes dynamic Uma matriz dinâmica contendo pares de símbolos de expressão regular e substituição a serem pesquisados em cada linha de entrada e substituídos por seus respectivos símbolos correspondentes. O valor padrão é dynamic([]). A tabela regex padrão substitui números, IPs e GUIDs.
custom_regexes_policy string Ou 'preceder', 'anexar' ou 'substituir'. Controla se custom_regexes são anexadas/anexadas/substituem as padrão. O valor padrão é 'prepend'.
delimiters dynamic Uma matriz dinâmica que contém cadeias de caracteres delimitadoras. O valor padrão é dynamic([" "]), definindo o espaço como o único delimitador de caractere único.
similarity_th real Limite de similaridade, usado pelo algoritmo Drenar. Aumentar similarity_th resulta em bancos de dados mais refinados. O valor padrão é 0,5. Se Drenar estiver desabilitado, esse parâmetro não terá efeito.
tree_depth int Aumentar o tree_depth melhora o tempo de execução do algoritmo Drain, mas pode reduzir sua precisão. O valor padrão é 4. Se Drenar estiver desabilitado, esse parâmetro não terá efeito.
trigram_th int Diminuir o trigram_th aumenta as chances de o Logram substituir tokens por curingas. O valor padrão é 10. Se o Logram estiver desabilitado, esse parâmetro não terá efeito.
bigram_th int Diminuir o bigram_th aumenta as chances de Logram substituir tokens por curingas. O valor padrão é 15. Se Logram, então estiver desabilitado, este parâmetro não terá efeito.

Definição de função

Você pode definir a função inserindo seu código como uma função definida por consulta ou criando-a como uma função armazenada em seu banco de dados, da seguinte maneira:

Defina a função usando a instrução let a seguir. Nenhuma permissão é necessária.

Importante

Uma instrução let não pode ser executada sozinha. Ele deve ser seguido por uma instrução de expressão tabular. Para executar um exemplo funcional de log_reduce_fl(), consulte Exemplo.

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.

Exemplo

O exemplo a seguir usa o operador invoke para executar a função.

Para usar uma função definida por consulta, invoque-a após a definição da função inserida.

//
// 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")

Saída

ExtentId OriginalSize ExtentSize CompressedSize IndexSize RowCount
3734a525-cc08-44b9-a992-72de97b32414 10383 11546 10,834 712 1