Freigeben über


log_reduce_predict_full_fl()

Gilt für: ✅Microsoft Fabric✅Azure Data Explorer

Die Funktion log_reduce_predict_full_fl() analysiert halbstrukturierte Textspalten, z. B. Protokollzeilen, und für jede Zeile entspricht sie dem jeweiligen Muster aus einem vortrainierten Modell oder meldet eine Anomalie, wenn kein übereinstimmende Muster gefunden wurde. Die Muster werden aus einem vortrainierten Modell abgerufen, das von log_reduce_train_fl(). Die Funktion ähnelt log_reduce_predict_fl(), aber im Gegensatz zu log_reduce_predict_fl(), die eine Musterzusammenfassungstabelle ausgibt, gibt diese Funktion eine vollständige Tabelle aus, die das Muster und die Parameter pro Zeile enthält.

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_predict_full_fl(|invoke models_tbl , model_name, reduce_col, pattern_col parameters_col , [, anomaly_str ])

Erfahren Sie mehr über Syntaxkonventionen.

Parameter

Name Type Erforderlich Beschreibung
models_tbl table ✔️ Eine Tabelle, die Modelle enthält, die von log_reduce_train_fl(). Das Schema der Tabelle sollte (name:string, timestamp: datetime, model:string) sein.
model_name string ✔️ Der Name des Modells, das aus models_tbl abgerufen wird. Wenn die Tabelle nur wenige Modelle enthält, die dem Modellnamen entsprechen, wird die neueste Verwendet.
reduce_col string ✔️ Der Name der Zeichenfolgenspalte, auf die die Funktion angewendet wird.
pattern_col string ✔️ Der Name der Zeichenfolgenspalte, um das Muster aufzufüllen.
parameters_col string ✔️ Der Name der Zeichenfolgenspalte, um die Parameter des Musters aufzufüllen.
anomaly_str string Diese Zeichenfolge wird für Zeilen ausgegeben, die im Modell kein übereinstimmenes Muster aufweisen. Der Standardwert ist "ANOMALY".

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_predict_full_fl=(tbl:(*), models_tbl: (name:string, timestamp: datetime, model:string), 
                           model_name:string, reduce_col:string, pattern_col:string, parameters_col:string, 
                           anomaly_str: string = 'ANOMALY')
{
    let model_str = toscalar(models_tbl | where name == model_name | top 1 by timestamp desc | project model);
    let kwargs = bag_pack('logs_col', reduce_col, 'output_patterns_col', pattern_col,'output_parameters_col', 
                          parameters_col, 'model', model_str, 'anomaly_str', anomaly_str, 'output_type', 'full');
    let code = ```if 1:
        from log_cluster import log_reduce_predict
        result = log_reduce_predict.log_reduce_predict(df, kargs)
    ```;
    tbl
    | evaluate hint.distribution=per_node python(typeof(*), code, kwargs)
};
// 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.

let log_reduce_predict_full_fl=(tbl:(*), models_tbl: (name:string, timestamp: datetime, model:string), 
                           model_name:string, reduce_col:string, pattern_col:string, parameters_col:string, 
                           anomaly_str: string = 'ANOMALY')
{
    let model_str = toscalar(models_tbl | where name == model_name | top 1 by timestamp desc | project model);
    let kwargs = bag_pack('logs_col', reduce_col, 'output_patterns_col', pattern_col,'output_parameters_col', 
                          parameters_col, 'model', model_str, 'anomaly_str', anomaly_str, 'output_type', 'full');
    let code = ```if 1:
        from log_cluster import log_reduce_predict
        result = log_reduce_predict.log_reduce_predict(df, kargs)
    ```;
    tbl
    | evaluate hint.distribution=per_node python(typeof(*), code, kwargs)
};
HDFS_log_100k
| extend Patterns='', Parameters=''
| take 10
| invoke log_reduce_predict_full_fl(models_tbl=ML_Models, model_name="HDFS_100K", reduce_col="data", pattern_col="Patterns", parameters_col="Parameters")

Output

data Muster Parameter
081110 215858 15485 INFO dfs. DataNode$PacketResponder: Empfangener Block blk_5080254298708411681 größe 67108864 von /10.251.43.21 081110 <NUM INFO><> dfs. DataNode$PacketResponder: Empfangener Block blk_<NUM> der Größe <NUM> von <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: Empfangen von Block blk_-7037346755429293022 src: /10.251.43.21:45933 dest: /10.251.43.21:50010 081110 <NUM INFO><> dfs. DataNode$DataXceiver: Empfangen von 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: PacketResponder 2 für block blk_-7746692545918257727 beenden 081110 <NUM INFO><> dfs. DataNode$PacketResponder: PacketResponder <NUM> für block blk_<NUM> endating {"parameter_0": "215858", "parameter_1": "15496", "parameter_2": "2", "parameter_3": "-7746692545918257727"}
081110 215858 15496 INFO dfs. DataNode$PacketResponder: Empfangener Block blk_-7746692545918257727 der Größe 67108864 von /10.251.107.227 081110 <NUM><INFO> dfs. DataNode$PacketResponder: Empfangener Block blk_<NUM> der Größe <NUM> von <IP> {"parameter_0": "215858", "parameter_1": "15496", "parameter_2": "-7746692545918257727", "parameter_3": "67108864", "parameter_4": "/10.251.107.227"}
081110 215858 15511 INFO dfs. DataNode$DataXceiver: Empfangen von Block blk_-8578644687709935034 src: /10.251.107.227:39600 dest: /10.251.107.227:50010 081110 <NUM NUM><INFO> dfs. DataNode$DataXceiver: Empfangen von 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: Empfangen von Block blk_722881101738646364 src: /10.251.75.79:58213 dest: /10.251.75.79:50010 081110 <NUM INFO><> dfs. DataNode$DataXceiver: Empfangen von 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: PacketResponder 2 für block blk_-7110736255599716271 beenden 081110 <NUM INFO><> dfs. DataNode$PacketResponder: PacketResponder <NUM> für block blk_<NUM> endating {"parameter_0": "215858", "parameter_1": "15517", "parameter_2": "2", "parameter_3": "-7110736255599716271"}
081110 215858 15517 INFO dfs. DataNode$PacketResponder: Empfangener Block blk_-7110736255599716271 der Größe 67108864 von /10.251.42.246 081110 <NUM><INFO> dfs. DataNode$PacketResponder: Empfangener Block blk_<NUM der Größe <> NUM> von <IP> {"parameter_0": "215858", "parameter_1": "15517", "parameter_2": "-7110736255599716271", "parameter_3": "67108864", "parameter_4": "/10.251.42.246"}
081110 215858 15533 INFO dfs. DataNode$DataXceiver: Empfangen von Block blk_7257432994295824826 src: /10.251.26.8:41803 dest: /10.251.26.8:50010 081110 <NUM INFO><> dfs. DataNode$DataXceiver: Empfangen von 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: Empfangen von Block blk_-7771332301119265281 src: /10.251.43.210:34258 dest: /10.251.43.210:50010 081110 <NUM INFO><> dfs. DataNode$DataXceiver: Empfangen von 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"}