log_reduce_full_fl()
この関数 log_reduce_full_fl()
は、ログ行などの半構造化テキスト列の一般的なパターンを検索し、抽出されたパターンに従って行をクラスター化します。 関数のアルゴリズムとほとんどのパラメーターは、 log_reduce_fl()と同じです。 ただし、 log_reduce_fl()
はパターン要約テーブルを出力しますが、この関数は各行ごとのパターンとパラメーターを含む完全なテーブルを出力します。
前提条件
- Python プラグインは、クラスター 有効にする必要があります。 これは、関数で使用されるインライン Python に必要です。
- Python プラグインは、データベース 有効にする必要があります。 これは、関数で使用されるインライン Python に必要です。
構文
T |
invoke
log_reduce_full_fl(
reduce_col [,
pattern_col ,
parameters_col[,
use_logram[,
use_drain[,
custom_regexes ,
custom_regexes_policy[,
delimiters[,
similarity_th[,
tree_depth[,
trigram_th,
bigram_th ]]]]]]]]]]])
構文規則について詳しく知る。
パラメーター
次のパラメーターの説明は概要です。 詳細については、「 アルゴリズムの詳細 」セクションを参照してください。
名前 | タイプ | Required | 説明 |
---|---|---|---|
reduce_col | string |
✔️ | 関数が適用される文字列列の名前。 |
pattern_col | string |
✔️ | パターンを設定する文字列列の名前。 |
parameters_col | 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_full_fl=(tbl:(*), reduce_col:string, pattern_col:string, parameters_col: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', pattern_col, 'parameters_column', parameters_col,
'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', 'full');
let code = ```if 1:
from log_cluster import log_reduce
result = log_reduce.log_reduce(df, kargs)
```;
tbl
| evaluate python(typeof(*), code, kwargs)
};
// Write your query to use the function here.
例
次の例では、 invoke 演算子 を使用して関数を実行します。
クエリ定義関数を使用するには、埋め込み関数定義の後に呼び出します。
let log_reduce_full_fl=(tbl:(*), reduce_col:string, pattern_col:string, parameters_col: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', pattern_col, 'parameters_column', parameters_col,
'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', 'full');
let code = ```if 1:
from log_cluster import log_reduce
result = log_reduce.log_reduce(df, kargs)
```;
tbl
| evaluate python(typeof(*), code, kwargs)
};
//
// Finding common patterns in HDFS logs, a commonly used benchmark for log parsing
//
HDFS_log
| take 100000
| extend Patterns="", Parameters=""
| invoke log_reduce_full_fl(reduce_col="data", pattern_col="Patterns", parameters_col="Parameters")
| take 10
出力
data | パターン | パラメーター |
---|---|---|
081110 | 215858 | 15485 INFO dfs.DataNode$PacketResponder: /10.251.43.21 081110 <NUM><NUM> INFO dfs から67108864サイズのブロック blk_5080254298708411681を受信しました。DataNode$PacketResponder: received block blk_<NUM> of size <NUM> from <IP> "{""parameter_0": ""215858"", ""parameter_1": ""15485",""parameter_2": ""5080254298708411681", ""parameter_3"": ""67108864", "parameter_4"": ""/10.251.43.21""}" |
081110 | 215858 | 15494 INFO dfs.DataNode$DataXceiver: 受信ブロック blk_-7037346755429293022 src: /10.251.43.21:45933 dest: /10.251.43.21:50010 081110 <NUM><NUM> INFO dfs.DataNode$DataXceiver: Receiving block blk_<NUM> src: <IP> dest: <IP> "{"parameter_0": ""215858", ""parameter_1": ""15494"", ""parameter_2": ""-7037346755429293022", ""parameter_3"": ""/10.251.43.21:45933", ""parameter_4"": ""/10.251.43.21:50010"}" |
081110 | 215858 | 15496 INFO dfs.DataNode$PacketResponder: ブロック blk_-7746692545918257727 で終了する 081110 <NUM><NUM> INFO dfs の PacketResponder 2。DataNode$PacketResponder: PacketResponder <NUM> :ブロック blk_<NUM> 終端 "{""parameter_0"": ""215858","parameter_1": ""15496", ""parameter_2": ""2", ""parameter_3": ""-7746692545918257727"}" |
081110 | 215858 | 15496 INFO dfs.DataNode$PacketResponder: /10.blk_ 251.107.227 081110 <NUM><NUM> INFO dfs から67108864サイズのブロック7746692545918257727を受信しました。DataNode$PacketResponder: <IP> "{""parameter_0": ""215858"" からサイズ <NUM> のブロック blk_<NUM>を受信しました。 ""parameter_1":"15496"、"parameter_2":"-7746692545918257727"、"parameter_3"": ""67108864"、"parameter_4"": ""/10.251.107.227"}" |
081110 | 215858 | 15511 INFO dfs.DataNode$DataXceiver: 受信ブロック blk_-8578644687709935034 src: /10.251.107.227:39600 dest: /10.251.107.227:50010 0811110 <NUM><NUM> INFO dfs.DataNode$DataXceiver: Receiving block blk_<NUM> src: <IP> dest: <IP> "{"""parameter_0": ""215858",""parameter_1": ""15511", ""parameter_2": ""-8578644687709935034", ""parameter_3"": ""/10.251.107.227:39600", ""parameter_4"": ""/10.251.107.227:50010"}" |
081110 | 215858 | 15514 INFO dfs.DataNode$DataXceiver: 受信ブロック blk_722881101738646364 src: /10.251.75.79:58213 dest: /10.251.75.79:50010 0811110 <NUM><NUM> INFO dfs.DataNode$DataXceiver: Receiving block blk_<NUM> src: <IP> dest: <IP> "{"""parameter_0": ""215858", ""parameter_1": ""15514"", ""parameter_2": ""722881101738646364", ""parameter_3"": ""/10.251.75.79:58213", ""parameter_4"": ""/10.251.75.79:50010"}" |
081110 | 215858 | 15517 INFO dfs.DataNode$PacketResponder: ブロック blk_-7110736255599716271 で終了する 081110 <NUM><NUM> INFO dfs の PacketResponder 2。DataNode$PacketResponder: PacketResponder <NUM> for block blk_<NUM> terminating "{"""parameter_0": ""215858"", ""parameter_1"": ""15517","parameter_2"": ""2","parameter_3"": ""-7110736255599716271""}" |
081110 | 215858 | 15517 INFO dfs.DataNode$PacketResponder: /10.251.7110736255599716271 42.246 081110 <NUM><NUM> INFO dfs から67108864サイズのブロック blk_受信しました。DataNode$PacketResponder: <IP>> "{""parameter_0"" からサイズ <NUM> の受信ブロック blk_<NUM": ""215858"", ""parameter_1": ""15517", ""parameter_2"": ""-7110736255599716271", ""parameter_3"": ""67108864","parameter_4"": ""/10.251.42.246""}" |
081110 | 215858 | 15533 INFO dfs.DataNode$DataXceiver: 受信ブロック blk_7257432994295824826 src: /10.251.26.8:41803 dest: /10.251.26.8:50010 0811110 <NUM><NUM> INFO dfs.DataNode$DataXceiver: Receiving block blk_<NUM> src: <IP> dest: <IP> "{"""parameter_0"": ""215858", ""parameter_1": ""15533"", ""parameter_2": ""7257432994295824826", ""parameter_3"": ""/10.251.26.8:41803", ""parameter_4"": ""/10.251.26.8:50010""}" |
081110 | 215858 | 15533 INFO dfs.DataNode$DataXceiver: 受信ブロック blk_-7771332301119265281 src: /10.251.43.210:34258 dest: /10.251.43.210:50010 081110 <NUM><NUM> INFO dfs.DataNode$DataXceiver: Receiving block blk_<NUM> src: <IP> dest: <IP> "{"""parameter_0"": ""215858", ""parameter_1": ""15533"", ""parameter_2": ""-7771332301119265281",""parameter_3"": ""/10.251.43.210:34258", ""parameter_4"": "/10.251.43.210:50010"}" |
この機能はサポートされていません。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示