log_reduce_train_fl()
Gilt für: ✅Microsoft Fabric✅Azure Data Explorer
Die Funktion log_reduce_train_fl()
findet gängige Muster in halbstrukturierten Textspalten, z. B. Protokollzeilen, und gruppiert die Linien entsprechend den extrahierten Mustern. Der Algorithmus der Funktion und die meisten Parameter sind mit log_reduce_fl()identisch, aber im Gegensatz zu log_reduce_fl(), die eine Musterzusammenfassungstabelle ausgibt, gibt diese Funktion das serialisierte Modell aus. Das Modell kann von der Funktion log_reduce_predict_fl()/log_reduce_predict_full_fl() verwendet werden, um das übereinstimmende Muster für neue Protokolllinien vorherzusagen.
Voraussetzungen
- Das Python-Plug-In muss im Cluster aktiviert sein. Dies ist für die inline Python erforderlich, die in der Funktion verwendet wird.
- Das Python-Plug-In muss in der Datenbank aktiviert sein. Dies ist für die inline Python erforderlich, die in der Funktion verwendet wird.
Syntax
T log_reduce_train_fl(
|
invoke
reduce_col ,
model_name [,
use_logram [ use_drain [,
,
custom_regexes [ custom_regexes_policy [ ,
,
Trennzeichen [ ,
similarity_th [ ,
tree_depth [ trigram_th [ ,
,
bigram_th ]]]]]]]]])
Erfahren Sie mehr über Syntaxkonventionen.
Parameter
Die folgende Parameterbeschreibung ist eine Zusammenfassung. Weitere Informationen finden Sie im Abschnitt "Weitere Informationen zum Algorithmus ".
Name | Type | Erforderlich | Beschreibung |
---|---|---|---|
reduce_col | string |
✔️ | Der Name der Zeichenfolgenspalte, auf die die Funktion angewendet wird. |
model_name | string |
✔️ | Der Name des Ausgabemodells. |
use_logram | bool |
Aktivieren oder deaktivieren Sie den Logram-Algorithmus. Der Standardwert ist true . |
|
use_drain | bool |
Aktivieren oder deaktivieren Sie den Entwässerungsalgorithmus. Der Standardwert ist true . |
|
custom_regexes | dynamic |
Ein dynamisches Array, das Paare regulärer Ausdrücke und Ersetzungssymbole enthält, die in jeder Eingabezeile durchsucht und durch das entsprechende übereinstimmende Symbol ersetzt werden sollen. Der Standardwert ist dynamic([]) . Die Standardmäßige regex-Tabelle ersetzt Zahlen, IPs und GUIDs. |
|
custom_regexes_policy | string |
Entweder 'prepend', 'append' oder 'replace'. Steuert, ob custom_regexes den Standardeinstellungen vorangestellt/angefügt/ersetzt werden. Der Standardwert ist "prepend". | |
delimiters | dynamic |
Ein dynamisches Array, das Trennzeichenzeichenfolgen enthält. Der Standardwert ist dynamic([" "]) das Definieren des Leerzeichens als einziges Einzelnes Zeichentrennzeichen. |
|
similarity_th | real |
Ähnlichkeitsschwellenwert, der vom Entwässerungsalgorithmus verwendet wird. Das Erhöhen similarity_th führt zu optimierten Datenbanken. Der Standardwert ist 0,5. Wenn "Drain" deaktiviert ist, hat dieser Parameter keine Auswirkung. | |
tree_depth | int |
Das Erhöhen tree_depth verbessert die Laufzeit des Entwässerungsalgorithmus, kann jedoch die Genauigkeit verringern. Der Standardwert ist 4. Wenn "Drain" deaktiviert ist, hat dieser Parameter keine Auswirkung. | |
trigram_th | int |
Das Verringern trigram_th erhöht die Wahrscheinlichkeit, dass Logram Token durch Wildcards ersetzt. Der Standardwert ist 10. Wenn Logram deaktiviert ist, hat dieser Parameter keine Auswirkung. | |
bigram_th | int |
Das Verringern bigram_th erhöht die Wahrscheinlichkeit, dass Logram Token durch Wildcards ersetzt. Standardwert: 15. Wenn Logram deaktiviert ist, hat dieser Parameter keine Auswirkung. |
Funktionsdefinition
Sie können die Funktion definieren, indem Sie den Code entweder als abfragedefinierte Funktion einbetten oder wie folgt als gespeicherte Funktion in Ihrer Datenbank erstellen:
Definieren Sie die Funktion mithilfe der folgenden Let-Anweisung. Es sind keine Berechtigungen erforderlich.
Wichtig
Eine Let-Anweisung kann nicht alleine ausgeführt werden. Auf sie muss eine tabellarische Ausdrucksanweisung folgen. Informationen zum Ausführen eines funktionierenden Beispiels log_reduce_fl()
finden Sie unter Beispiel.
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.
Beispiel
Im folgenden Beispiel wird der Aufrufoperator verwendet, um die Funktion auszuführen.
Um eine abfragedefinierte Funktion zu verwenden, rufen Sie sie nach der definition der eingebetteten Funktion auf.
//
// 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")
Output
ExtentId | OriginalSize | ExtentSize | CompressedSize | IndexSize | RowCount |
---|---|---|---|---|---|
3734a525-cc08-44b9-a992-72de97b32414 | 10383 | 11546 | 10,834 | 712 | 1 |