Sdílet prostřednictvím


log_reduce_predict_full_fl()

Funkce log_reduce_predict_full_fl() analyzuje částečně strukturované textové sloupce, například řádky protokolu, a pro každý řádek odpovídá příslušnému vzoru z předem natrénovaného modelu nebo hlásí anomálii, pokud nebyl nalezen žádný odpovídající vzor. Vzory se načítají z předem natrénovaného modelu vygenerovaného log_reduce_train_fl()pomocí . Funkce se podobá log_reduce_predict_fl(), ale na rozdíl od log_reduce_predict_fl(), která vypíše souhrnnou tabulku vzorů, tato funkce vypíše úplnou tabulku obsahující vzor a parametry na každý řádek.

Požadavky

  • Modul plug-in Pythonu musí být v clusteru povolený. To se vyžaduje pro vložený Python použitý ve funkci.
  • Modul plug-in Pythonu musí být v databázi povolený. To se vyžaduje pro vložený Python použitý ve funkci.

Syntaxe

Tinvoke log_reduce_predict_full_fl(| models_tbl model_name ,,reduce_col, pattern_col ,parameters_col [, anomaly_str ])

Přečtěte si další informace o konvencích syntaxe.

Parametry

Název Type Požadováno Popis
models_tbl table ✔️ Tabulka obsahující modely generované log_reduce_train_fl() Schéma tabulky by mělo být (name:string, časové razítko: datetime, model:string).
model_name string ✔️ Název modelu, který se načte z models_tbl Pokud tabulka obsahuje několik modelů odpovídajících názvu modelu, použije se nejnovější model.
reduce_col string ✔️ Název sloupce řetězce, na který se funkce použije.
pattern_col string ✔️ Název sloupce řetězce, který má vzor naplnit.
parameters_col string ✔️ Název sloupce řetězce, který naplní parametry vzoru.
anomaly_str string Tento řetězec je výstupem pro řádky, které nemají v modelu žádný odpovídající vzor. Výchozí hodnota je "ANOMÁLIE".

Definice funkce

Funkci můžete definovat vložením jejího kódu jako funkce definovanou dotazem nebo vytvořením jako uložené funkce v databázi následujícím způsobem:

Definujte funkci pomocí následujícího příkazu let. Nejsou vyžadována žádná oprávnění.

Důležité

Příkaz let nemůže běžet samostatně. Musí následovat příkaz tabulkového výrazu. Pokud chcete spustit funkční příklad, podívejte se na příkladlog_reduce_fl().

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.

Příklad

Následující příklad používá operátor invoke ke spuštění funkce.

Pokud chcete použít funkci definovanou dotazem, vyvoláte ji po definici vložené funkce.

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")

Výstup

data Vzory Parametry
081110 215858 15485 INFO dfs. DataNode$PacketResponder: Přijatý blok blk_5080254298708411681 velikosti 67108864 z /10.251.43.21 081110 <NUM><> INFO dfs. DataNode$PacketResponder: Přijatý blok blk_<NUM> velikosti <> z <IP> adresy {"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: Příjem bloku blk_-7037346755429293022 src: /10.251.43.21:45933 dest: /10.251.43.21:50010 081110 <ČÍSLO><ČÍSLO> INFO dfs. DataNode$DataXceiver: Příjem bloku 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 pro blok blk_-7746692545918257727 ukončení 081110 <NUM><> INFO dfs. DataNode$PacketResponder: PacketResponder <NUM> for block blk_<NUM> terminating {"parameter_0": "215858", "parameter_1": "15496", "parameter_2": "2", "parameter_3": "-7746692545918257727"}
081110 215858 15496 INFO dfs. DataNode$PacketResponder: Přijatý blok blk_-7746692545918257727 velikosti 67108864 z /10.251.107.227 081110 <NUM><> INFO dfs. DataNode$PacketResponder: Přijatý blok blk_<NUM> velikosti <> z <IP> adresy {"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: Příjem bloku blk_-8578644687709935034 src: /10.251.107.227:39600 dest: /10.251.107.227:50010 081110 <NUM><> INFO dfs. DataNode$DataXceiver: Příjem bloku 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: Příjem bloku blk_722881101738646364 src: /10.251.75.79:58213 dest: /10.251.75.79:50010 081110 <ČÍSLO><> INFO dfs. DataNode$DataXceiver: Příjem bloku 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 pro blok blk_-7110736255599716271 ukončení 081110 <NUM><> INFO dfs. DataNode$PacketResponder: PacketResponder <NUM> pro blok blk_<NUM> ukončující {"parameter_0": "215858", "parameter_1": "15517", "parameter_2": "2", "parameter_3": "-7110736255599716271"}
081110 215858 15517 INFO dfs. DataNode$PacketResponder: Přijatý blok blk_-7110736255599716271 velikosti 67108864 z /10.251.42.246 081110 <NUM><> INFO dfs. DataNode$PacketResponder: Přijatý blok blk_<NUM> velikosti <> z <IP> adresy {"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: Příjem bloku blk_7257432994295824826 src: /10.251.26.8:41803 dest: /10.251.26.8:50010 081110 <ČÍSLO><> INFO dfs. DataNode$DataXceiver: Příjem bloku 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: Příjem bloku blk_-7771332301119265281 src: /10.251.43.210:34258 dest: /10.251.43.210:50010 081110 <NUM><> INFO dfs. DataNode$DataXceiver: Příjem bloku 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"}

Tato funkce není podporovaná.