Delen via


log_reduce_train_fl()

Met de functie log_reduce_train_fl() worden algemene patronen gevonden in semi-gestructureerde tekstkolommen, zoals logboeklijnen, en worden de lijnen geclusterd op basis van de geëxtraheerde patronen. Het algoritme van de functie en de meeste parameters zijn identiek aan log_reduce_fl(), maar in tegenstelling tot log_reduce_fl() waarmee een patronenoverzichtstabel wordt uitgevoerd, voert deze functie het geserialiseerde model uit. Het model kan worden gebruikt door de functie log_reduce_predict_fl()/log_reduce_predict_full_fl() om het overeenkomende patroon voor nieuwe logboeklijnen te voorspellen.

Vereisten

  • De Python-invoegtoepassing moet zijn ingeschakeld op het cluster. Dit is vereist voor de inline Python die in de functie wordt gebruikt.

Syntax

T|invokelog_reduce_train_fl(, reduce_colmodel_name [,use_logram [,use_drain [,custom_regexes [,custom_regexes_policy [,scheidingstekens [,similarity_th [,tree_depth [,trigram_th [,bigram_th ]]]]]]]]])

Meer informatie over syntaxisconventies.

Parameters

De volgende beschrijving van parameters is een samenvatting. Zie de sectie Meer informatie over het algoritme voor meer informatie.

Naam Type Vereist Beschrijving
reduce_col string ✔️ De naam van de tekenreekskolom waarop de functie wordt toegepast.
model_name string ✔️ De naam van het uitvoermodel.
use_logram bool Schakel het Logram-algoritme in of uit. De standaardwaarde is true.
use_drain bool Schakel het algoritme Drain in of uit. De standaardwaarde is true.
custom_regexes dynamic Een dynamische matrix met paren van reguliere expressies en vervangende symbolen die in elke invoerrij moeten worden doorzocht en vervangen door het bijbehorende overeenkomende symbool. De standaardwaarde is dynamic([]). De standaard regex-tabel vervangt getallen, IP's en GUID's.
custom_regexes_policy string Ofwel 'prepend', 'append' of 'replace'. Hiermee bepaalt u of custom_regexes de standaard worden voorbereid/toegevoegd/vervangen. De standaardwaarde is 'prepend'.
scheidingstekens dynamic Een dynamische matrix met tekenreeksen voor scheidingstekens. Standaardwaarde is dynamic([" "]), waarmee spatie wordt gedefinieerd als het enige scheidingsteken voor tekens.
similarity_th real Drempelwaarde voor gelijkenis, die wordt gebruikt door het algoritme Drain. Het verhogen van similarity_th resulteert in meer verfijnde clusters. De standaardwaarde is 0,5. Als Drain is uitgeschakeld, heeft deze parameter geen effect.
tree_depth int Het verhogen van tree_depth verbetert de runtime van het Drain-algoritme, maar kan de nauwkeurigheid verminderen. De standaardwaarde is 4. Als Drain is uitgeschakeld, heeft deze parameter geen effect.
trigram_th int Het verminderen van trigram_th vergroot de kans dat Logram tokens vervangt door jokertekens. De standaardwaarde is 10. Als Logram is uitgeschakeld, heeft deze parameter geen effect.
bigram_th int Het verminderen van bigram_th vergroot de kans dat Logram tokens vervangt door jokertekens. De standaardwaarde is 15. Als Logram is uitgeschakeld, heeft deze parameter geen effect.

Functiedefinitie

U kunt de functie als volgt definiëren door de code in te sluiten als een door een query gedefinieerde functie of door deze te maken als een opgeslagen functie in uw database:

Definieer de functie met behulp van de volgende let-instructie. Er zijn geen machtigingen vereist.

Belangrijk

Een let-instructie kan niet zelfstandig worden uitgevoerd. Deze moet worden gevolgd door een tabellaire expressie-instructie. Zie Voorbeeld als u een werkend voorbeeld van log_reduce_fl()wilt uitvoeren.

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.

Voorbeeld

In het volgende voorbeeld wordt de operator aanroepen gebruikt om de functie uit te voeren.

Als u een querygedefinieerde functie wilt gebruiken, roept u deze aan na de definitie van de ingesloten functie.

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

Uitvoer

ExtentId OriginalSize ExtentSize Gecomprimeerde grootte IndexGrootte RowCount
3734a525-cc08-44b9-a992-72de97b32414 10383 11546 10834 712 1

Deze functie wordt niet ondersteund.