Share via


log_reduce_predict_full_fl()

La funzione log_reduce_predict_full_fl() analizza le colonne testuali semistrutturate, ad esempio le righe di log e per ogni riga corrisponde al rispettivo modello da un modello con training preliminare o segnala un'anomalia se non è stato trovato alcun modello corrispondente. I modelli vengono recuperati da un modello con training preliminare, generato da log_reduce_train_fl(). La funzione è simile a log_reduce_predict_fl(), ma a differenza di log_reduce_predict_fl() che restituisce una tabella di riepilogo dei modelli, questa funzione restituisce una tabella completa contenente il modello e i parametri per ogni riga.

Prerequisiti

  • Il plug-in Python deve essere abilitato nel cluster. Questa operazione è necessaria per Python inline usata nella funzione.
  • Il plug-in Python deve essere abilitato nel database. Questa operazione è necessaria per Python inline usata nella funzione.

Sintassi

T|invokelog_reduce_predict_full_fl(, models_tbl, model_name, reduce_col, pattern_colparameters_col [,anomaly_str ])

Altre informazioni sulle convenzioni di sintassi.

Parametri

Nome Tipo Obbligatoria Descrizione
models_tbl table ✔️ Tabella contenente modelli generati da log_reduce_train_fl(). Lo schema della tabella deve essere (nome:string, timestamp: datetime, model:string).
model_name string ✔️ Nome del modello che verrà recuperato da models_tbl. Se la tabella contiene alcuni modelli corrispondenti al nome del modello, viene utilizzata la versione più recente.
reduce_col string ✔️ Il nome della colonna stringa a cui viene applicata la funzione.
pattern_col string ✔️ Nome della colonna stringa per popolare il modello.
parameters_col string ✔️ Nome della colonna stringa per popolare i parametri del modello.
anomaly_str string Questa stringa viene restituita per le righe che non hanno un modello corrispondente nel modello. Il valore predefinito è "ANOMALY".

Definizione di funzione

È possibile definire la funzione incorporando il codice come funzione definita da query o creandola come funzione archiviata nel database, come segue:

Definire la funzione usando l'istruzione let seguente. Non sono necessarie autorizzazioni.

Importante

Un'istruzione let non può essere eseguita autonomamente. Deve essere seguito da un'istruzione espressione tabulare. Per eseguire un esempio funzionante di log_reduce_fl(), vedere Esempio.

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.

Esempio

Nell'esempio seguente viene usato l'operatore invoke per eseguire la funzione.

Per usare una funzione definita da query, richiamarla dopo la definizione di funzione incorporata.

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 Modelli Parametri
081110 215858 15485 INFO dfs. DataNode$PacketResponder: blocco ricevuto blk_5080254298708411681 di dimensioni 67108864 da /10.251.43.21 081110 <NUM NUM><> INFO dfs. DataNode$PacketResponder: blocco ricevuto blk_<NUM di dimensioni <NUM>> da <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: blocco di ricezione blk_-7037346755429293022 src: /10.251.43.21:45933 dest: /10.251.43.21:50010 08110 <NUM NUM><> INFO dfs. DataNode$DataXceiver: Blocco di ricezione blk_NUM> src: IP dest<: <IP>> {"parameter_0<": "215858", "parameter_1": "15494", "parameter_2": "-7037346755429293022", "-7037346755429293022", "parameter_3": "/10.251.43.21:45933", "parameter_4": "/10.251.43.21:50010"}
081110 215858 15496 INFO dfs. DataNode$PacketResponder: PacketResponder 2 per blocchi blk_-7746692545918257727 terminando 081110 <NUM NUM><> INFO dfs. DataNode$PacketResponder: PacketResponder <NUM per il blocco blk_NUM>> terminazione {"parameter_0": "215858<", "parameter_1": "15496", "parameter_2": "2", "parameter_3": "-7746692545918257727"}
081110 215858 15496 INFO dfs. DataNode$PacketResponder: blocco ricevuto blk_-7746692545918257727 di dimensioni 67108864 da /10.251.107.227 081110 <NUM NUM><> INFO dfs. DataNode$PacketResponder: blocco ricevuto blk_<NUM di dimensioni <NUM>> da <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: ricezione di blocchi blk_-8578644687709935034 src: /10.251.107.227:39600 dest: /10.251.107.227:50010 08110 <NUM NUM><> INFO dfs. DataNode$DataXceiver: Blocco di ricezione blk_<NUM> src: IP dest<: <IP>> {"parameter_0": "215858", "parameter_1": "15511", "parameter_2": "-8578644687709935034", "", "parameter_3 215858"": "/10.251.107.227:39600", "parameter_4": "/10.251.107.227:50010"}
081110 215858 15514 INFO dfs. DataNode$DataXceiver: blocco di ricezione blk_722881101738646364 src: /10.251.75.79:58213 dest: /10.251.75.79:50010 081110 <NUM><INFO NUM>. DataNode$DataXceiver: Blocco di ricezione 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 per blocchi blk_-7110736255599716271 terminando 081110 <NUM NUM><> INFO dfs. DataNode$PacketResponder: PackageResponder <NUM per il blocco blk_NUM>> terminazione {"parameter_0": "215858", "parameter_1<": "15517", "parameter_2": "2", "parameter_3": "-7110736255599716271"}
081110 215858 15517 INFO dfs. DataNode$PacketResponder: blocco ricevuto blk_-7110736255599716271 di dimensioni 67108864 da /10.251.42.246 081110 <NUM NUM><> INFO dfs. DataNode$PacketResponder: blocco ricevuto blk_<NUM di dimensioni <NUM>> da <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: blocco di ricezione blk_7257432994295824826 src: /10.251.26.8:41803 dest: /10.251.26.8:50010 081110 <NUM><INFO NUM>. DataNode$DataXceiver: Blocco di ricezione 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: ricezione del blocco blk_-7771332301119265281 src: /10.251.43.210:34258 dest: /10.251.43.210:50010 08110 <NUM><NUM> INFO dfs. DataNode$DataXceiver: Ricezione di blocchi blk_NUM> src: IP dest<: <IP>> {"parameter_0": "215858<", "parameter_1": "15533", "parameter_2": "-7771332301119265281", "7771332301119265281", "parameter_3 7771332301119265281"": "/10.251.43.210:34258", "parameter_4": "/10.251.43.210:50010"}

Questa funzionalità non è supportata.