次の方法で共有


log_reduce_train_fl()

この関数 log_reduce_train_fl() は、ログ行などの半構造化テキスト列の一般的なパターンを検索し、抽出されたパターンに従って行をクラスター化します。 関数のアルゴリズムとほとんどのパラメーターは log_reduce_fl() と同じですが、パターン要約テーブルを出力する log_reduce_fl() とは異なり、この関数はシリアル化されたモデルを出力します。 このモデルは、関数 log_reduce_predict_fl()/log_reduce_predict_full_fl() で使用して、新しいログ行の一致パターンを予測できます。

前提条件

構文

T | invoke log_reduce_train_fl(reduce_col, model_name [, use_logram [, use_drain , custom_regexes [, custom_regexes_policy [, delimiters [, similarity_th , tree_depth [, trigram_th [, bigram_th ]]]]]]]]] custom_regexes_policy])

構文規則について詳しく知る。

パラメーター

次のパラメーターの説明は概要です。 詳細については、「 アルゴリズムの詳細 」セクションを参照してください。

名前 タイプ Required 説明
reduce_col string ✔️ 関数が適用される文字列列の名前。
model_name string ✔️ 出力モデルの名前。
use_logram bool Logram アルゴリズムを有効または無効にします。 既定値は true
use_drain bool ドレイン アルゴリズムを有効または無効にします。 既定値は true
custom_regexes dynamic 各入力行で検索され、対応するシンボルに置き換えられる正規表現と置換シンボルのペアを含む動的配列。 既定値は dynamic([])。 既定の正規表現テーブルは、数値、IP、GUID を置き換えます。
custom_regexes_policy string 'prepend'、'append' または 'replace' のいずれか。 custom_regexesが既定の先頭/追加/置換かどうかを制御します。 既定値は 'prepend' です。
delimiters dynamic 区切り記号文字列を含む動的配列。 既定値は dynamic([" "])で、スペースを 1 文字の区切り記号として定義します。
similarity_th real ドレイン アルゴリズムによって使用される類似性のしきい値。 similarity_thを増やすと、クラスターがより洗練されます。 既定値は 0.5 です。 Drain が無効になっている場合、このパラメーターは無効になります。
tree_depth int tree_depthを増やすと、ドレイン アルゴリズムの実行時間が向上しますが、精度が低下する可能性があります。 既定値は 4 です。 Drain が無効になっている場合、このパラメーターは無効になります。
trigram_th int trigram_thを減らすと、トークンをワイルドカードに置き換える Logram の可能性が高くなります。 既定値は 10 です。 Logram が無効になっている場合、このパラメーターは無効になります。
bigram_th int bigram_thを減らすと、Logram がトークンをワイルドカードに置き換える可能性が高くなります。 既定値は 15 です。 Logram の場合、このパラメーターは無効になります。

関数定義

関数を定義するには、次のようにコードをクエリ定義関数として埋め込むか、データベースに格納された関数として作成します。

次の let ステートメントを使用して関数を定義。 権限は必要ありません。

重要

let ステートメント単独では実行できません。 その後に 表形式の式ステートメントが続く必要がありますlog_reduce_fl()の動作例を実行するには、Exampleを参照してください。

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.

次の例では、 invoke 演算子 を使用して関数を実行します。

クエリ定義関数を使用するには、埋め込み関数定義の後に呼び出します。

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

この機能はサポートされていません。