log_reduce_train_fl()
Funkcja log_reduce_train_fl()
znajduje typowe wzorce w częściowo ustrukturyzowanych kolumnach tekstowych, takich jak linie dziennika, i klasteruje wiersze zgodnie z wyodrębnionym wzorcem. Algorytm funkcji i większość parametrów są identyczne z log_reduce_fl(), ale w przeciwieństwie do log_reduce_fl(), który generuje tabelę podsumowania wzorców, ta funkcja generuje serializowany model. Model może być używany przez funkcję log_reduce_predict_fl()/log_reduce_predict_full_fl() w celu przewidywania dopasowanego wzorca dla nowych wierszy dziennika.
Wymagania wstępne
- Wtyczka języka Python musi być włączona w klastrze. Jest to wymagane w przypadku wbudowanego języka Python używanego w funkcji.
- Wtyczka języka Python musi być włączona w bazie danych. Jest to wymagane w przypadku wbudowanego języka Python używanego w funkcji.
Składnia
T invoke
log_reduce_train_fl(
|
reduce_col model_name,
[ ,
use_logram,
[ use_drain ,
[ custom_regexes,
[ custom_regexes_policy [ ,
ograniczniki [ ,
similarity_th [,
tree_depth [ trigram_th [,
,
bigram_th ]]]]]]]]])
Dowiedz się więcej na temat konwencji składni.
Parametry
Poniższy opis parametrów jest podsumowaniem. Aby uzyskać więcej informacji, zobacz Więcej informacji na temat sekcji algorytmu .
Nazwisko | Type | Wymagania | opis |
---|---|---|---|
reduce_col | string |
✔️ | Nazwa kolumny ciągu, do których jest stosowana funkcja. |
model_name | string |
✔️ | Nazwa modelu wyjściowego. |
use_logram | bool |
Włącz lub wyłącz algorytm Logramu. Wartość domyślna to true . |
|
use_drain | bool |
Włącz lub wyłącz algorytm opróżniania. Wartość domyślna to true . |
|
custom_regexes | dynamic |
Tablica dynamiczna zawierająca pary wyrażeń regularnych i symboli zastępczych, które mają być przeszukiwane w każdym wierszu wejściowym, i zastąpiona odpowiednim symbolem dopasowania. Wartość domyślna to dynamic([]) . Domyślna tabela wyrażeń regularnych zastępuje liczby, adresy IP i identyfikatory GUID. |
|
custom_regexes_policy | string |
Albo "prepend", "append" lub "replace". Określa, czy custom_regexes są prepend/append/replace tych domyślnych. Wartość domyślna to "prepend". | |
Ograniczniki | dynamic |
Tablica dynamiczna zawierająca ciągi ograniczników. Wartość domyślna to dynamic([" "]) , definiując spację jako jedyny ogranicznik pojedynczego znaku. |
|
similarity_th | real |
Próg podobieństwa używany przez algorytm opróżniania. Zwiększenie similarity_th skutkuje bardziej uściśliłymi klastrami. Wartość domyślna to 0,5. Jeśli opróżnianie jest wyłączone, ten parametr nie ma wpływu. | |
tree_depth | int |
Zwiększenie tree_depth poprawia środowisko uruchomieniowe algorytmu opróżniania, ale może zmniejszyć jego dokładność. Wartość domyślna to 4. Jeśli opróżnianie jest wyłączone, ten parametr nie ma wpływu. | |
trigram_th | int |
Zmniejszenie trigram_th zwiększa prawdopodobieństwo, że Logram zastąpi tokeny symbolami wieloznacznymi. Wartość domyślna to 10. Jeśli Logram jest wyłączony, ten parametr nie ma efektu. | |
bigram_th | int |
Zmniejszenie bigram_th zwiększa prawdopodobieństwo, że Logram zastąpi tokeny symbolami wieloznacznymi. Wartość domyślna to 15. Jeśli Logram, to jest wyłączony ten parametr nie ma efektu. |
Definicja funkcji
Funkcję można zdefiniować, osadzając jej kod jako funkcję zdefiniowaną przez zapytanie lub tworząc ją jako funkcję przechowywaną w bazie danych w następujący sposób:
Zdefiniuj funkcję przy użyciu następującej instrukcji let. Nie są wymagane żadne uprawnienia.
Ważne
Instrukcja let nie może działać samodzielnie. Należy po nim wykonać instrukcję wyrażenia tabelarycznego. Aby uruchomić działający przykład polecenia log_reduce_fl()
, zobacz Przykład.
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.
Przykład
W poniższym przykładzie użyto operatora invoke do uruchomienia funkcji.
Aby użyć funkcji zdefiniowanej przez zapytanie, wywołaj ją po definicji funkcji osadzonej.
//
// 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")
Wyjście
ExtentId | OriginalSize | Rozmiar zakresu | Skompresowany rozmiar | IndexSize | RowCount |
---|---|---|---|---|---|
3734a525-cc08-44b9-a992-72de97b32414 | 10383 | 11546 | 10834 | 712 | 1 |
Ta funkcja nie jest obsługiwana.
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla