log_reduce_predict_fl()
Aplica-se a: ✅Microsoft Fabric✅Azure Data Explorer
A função log_reduce_predict_fl()
analisa colunas textuais semiestruturadas, como linhas de log, e para cada linha corresponde ao respectivo padrão de um modelo pré-treinado ou relata uma anomalia se nenhum padrão correspondente for encontrado. A saída da função é semelhante a log_reduce_fl(), embora os padrões sejam recuperados de um modelo pré-treinado gerado por log_reduce_train_fl().
Pré-requisitos
- O plug-in Python deve ser habilitado no cluster. Isso é necessário para o Python embutido usado na função.
- O plug-in Python deve estar habilitado no banco de dados. Isso é necessário para o Python embutido usado na função.
Sintaxe
Tinvoke
log_reduce_predict_fl(
|
models_tbl,
model_name ,
reduce_col [,
anomaly_str ])
Saiba mais sobre as convenções de sintaxe.
Parâmetros
Nome | Digitar | Obrigatória | Descrição |
---|---|---|---|
models_tbl | tabela | ✔️ | Uma tabela que contém modelos gerados por log_reduce_train_fl(). O esquema da tabela deve ser (name:string, timestamp: datetime, model:string). |
model_name | string |
✔️ | O nome do modelo que será recuperado do models_tbl. Se a tabela contiver poucos modelos que correspondam ao nome do modelo, o mais recente será usado. |
reduce_col | string |
✔️ | O nome da coluna de cadeia de caracteres à qual a função é aplicada. |
anomaly_str | string |
Essa sequência é gerada para linhas que não têm padrão correspondente no modelo. O valor padrão é "ANOMALY". |
Definição de função
Você pode definir a função inserindo seu código como uma função definida por consulta ou criando-a como uma função armazenada em seu banco de dados, da seguinte maneira:
Defina a função usando a instrução let a seguir. Nenhuma permissão é necessária.
Importante
Uma instrução let não pode ser executada sozinha. Ele deve ser seguido por uma instrução de expressão tabular. Para executar um exemplo funcional de log_reduce_fl()
, consulte Exemplo.
let log_reduce_predict_fl=(tbl:(*), models_tbl: (name:string, timestamp: datetime, model:string),
model_name:string, reduce_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', 'LogReduce','output_parameters_col', '',
'model', model_str, 'anomaly_str', anomaly_str, 'output_type', 'summary');
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(Count:int, LogReduce:string, example:string), code, kwargs)
};
// Write your query to use the function here.
Exemplo
O exemplo a seguir usa o operador invoke para executar a função.
Para usar uma função definida por consulta, invoque-a após a definição da função inserida.
let log_reduce_predict_fl=(tbl:(*), models_tbl: (name:string, timestamp: datetime, model:string),
model_name:string, reduce_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', 'LogReduce','output_parameters_col', '',
'model', model_str, 'anomaly_str', anomaly_str, 'output_type', 'summary');
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(Count:int, LogReduce:string, example:string), code, kwargs)
};
HDFS_log_100k
| take 1000
| invoke log_reduce_predict_fl(models_tbl=ML_Models, model_name="HDFS_100K", reduce_col="data")
Saída
Count | LogReduce | example |
---|---|---|
239 | 081110 | <NUM><NUM> INFO dfs. DataNode$DataXceiver: Bloco de recebimento blk_<NUM> src: <IP> dest: <IP> 081110 215858 15494 INFO dfs. DataNode$DataXceiver: Bloco de recebimento blk_-7037346755429293022 src: /10.251.43.21:45933 dest: /10.251.43.21:50010 |
231 | 081110 | <NUM><NUM> INFO dfs. DataNode$PacketResponder: Bloco recebido blk_<NUM> de tamanho <NUM> do <IP> 081110 215858 15485 INFO dfs. DataNode$PacketResponder: Bloco recebido blk_5080254298708411681 de tamanho 67108864 de /10.251.43.21 |
230 | 081110 | <NUM><NUM> INFO dfs. DataNode$PacketResponder: NUM do PacketResponder <para o bloco blk_<NUM> terminando 081110 215858 15496 INFO dfs.> DataNode$PacketResponder: PacketResponder 2 para terminação de bloco blk_-7746692545918257727 |
218 | 081110 | <NUM><NUM> INFO dfs. FSNamesystem: BLOCK* NameSystem.addStoredBlock: blockMap atualizado: <IP> é adicionado ao tamanho <blk_<NUM> NUM> 081110 215858 27 INFO dfs. FSNamesystem: BLOCK* NameSystem.addStoredBlock: blockMap atualizado: 10.250.11.85:50010 é adicionado ao blk_5080254298708411681 tamanho 67108864 |
79 | 081110 | <NUM><NUM> INFO dfs. FSNamesystem: BLOCK* NameSystem.allocateBlock: <>. <> 081110 215858 26 INFO dfs. FSNamesystem: BLOCK* NameSystem.allocateBlock: /user/root/rand3/_temporary/task_200811101024_0005_m_001805_0/part-01805. blk-7037346755429293022 |
3 | 081110 | <NUM><NUM> INFO dfs. DataBlockScanner: Verificação bem-sucedida para <*> 081110 215859 13 INFO dfs. DataBlockScanner: Verificação bem-sucedida para blk_-7244926816084627474 |