Оператор reduce
Группирует набор строк на основе сходства значений.
Для каждой такой группы оператор возвращает pattern
, count
и representative
. Лучше pattern
всего описывает группу, в которой *
символ представляет подстановочный знак. — count
это количество значений в группе, а representative
— одно из исходных значений в группе.
Синтаксис
T|
reduce
[kind
=
ReduceKind] by
Expr [with
[threshold
=
пороговое значение] [,
characters
=
символы]]
Дополнительные сведения о соглашениях о синтаксисе.
Параметры
Имя | Тип | Обязательно | Описание |
---|---|---|---|
Expr | string |
✔️ | Значение, на которое требуется уменьшить. |
Пороговое значение. | real |
Значение от 0 до 1, определяющее минимальную долю строк, необходимую для соответствия критериям группирования для запуска операции сокращения. Значение по умолчанию — 0,1. Рекомендуется задать небольшое пороговое значение для больших входов. При меньшем пороговом значении более похожие значения группируются вместе, что приводит к меньшему числу похожих групп. Большее пороговое значение требует меньше сходства, что приводит к по большему объему групп, которые менее похожи. См. примеры. |
|
Символы | string |
Список символов, разделяющих термины. По умолчанию используется каждый числовой символ, отличный от ascii. Примеры см. в разделе Поведение параметра Characters. | |
ReduceKind | string |
Единственное допустимое значение — source . Если source задано значение , оператор добавляет Pattern столбец к существующим строкам в таблице вместо агрегирования с помощью Pattern . |
Возвращаемое значение
Таблица с таким количеством строк, как есть группы и столбцы с названиями pattern
, count
и representative
. Лучше pattern
всего описывает группу, в которой *
символ представляет подстановочный знак или заполнитель для произвольной строки вставки. — count
это количество значений в группе, а representative
— одно из исходных значений в группе.
Например, результат выполнения reduce by city
может быть таким:
Шаблон | Count | Representative |
---|---|---|
Сан * | 5182 | Сан-Бернард |
Сант * | 2846 | Сент-Люси |
Москва | 3726 | Москва |
*-На-* | 2730 | Один-на-один |
Париж | 2716 | Париж |
Примеры
Небольшое пороговое значение
range x from 1 to 1000 step 1
| project MyText = strcat("MachineLearningX", tostring(toint(rand(10))))
| reduce by MyText with threshold=0.001 , characters = "X"
Выходные данные
Шаблон | Count | Representative |
---|---|---|
MachineLearning* | 1000 | MachineLearningX4 |
Большое пороговое значение
range x from 1 to 1000 step 1
| project MyText = strcat("MachineLearningX", tostring(toint(rand(10))))
| reduce by MyText with threshold=0.9 , characters = "X"
Выходные данные
Шаблон | Count | Representative |
---|---|---|
MachineLearning* | 177 | MachineLearningX9 |
MachineLearning* | 102 | MachineLearningX0 |
MachineLearning* | 106 | MachineLearningX1 |
MachineLearning* | 96 | MachineLearningX6 |
MachineLearning* | 110 | MachineLearningX4 |
MachineLearning* | 100 | MachineLearningX3 |
MachineLearning* | 99 | MachineLearningX8 |
MachineLearning* | 104 | MachineLearningX7 |
MachineLearning* | 106 | MachineLearningX2 |
Поведение параметра Characters
Если параметр Characters не указан, то каждый цифровой символ, отличный от ascii, становится разделителем терминов.
range x from 1 to 10 step 1 | project str = strcat("foo", "Z", tostring(x)) | reduce by str
Выходные данные
Шаблон | Count | Representative |
---|---|---|
Другие | 10 |
Однако если указать, что "Z" является разделителем, это будет так, как если бы каждое значение в str
2 терминах: foo
и tostring(x)
:
range x from 1 to 10 step 1 | project str = strcat("foo", "Z", tostring(x)) | reduce by str with characters="Z"
Выходные данные
Шаблон | Count | Representative |
---|---|---|
Foo* | 10 | fooZ1 |
Применить reduce
к дезинфицируемым входным данным
В следующем примере показано, как можно применить reduce
оператор к "дезинфицированному" входу, в котором идентификаторы GUID в редуцированном столбце заменяются перед уменьшением
// Start with a few records from the Trace table.
Trace | take 10000
// We will reduce the Text column which includes random GUIDs.
// As random GUIDs interfere with the reduce operation, replace them all
// by the string "GUID".
| extend Text=replace_regex(Text, @"[[:xdigit:]]{8}-[[:xdigit:]]{4}-[[:xdigit:]]{4}-[[:xdigit:]]{4}-[[:xdigit:]]{12}", @"GUID")
// Now perform the reduce. In case there are other "quasi-random" identifiers with embedded '-'
// or '_' characters in them, treat these as non-term-breakers.
| reduce by Text with characters="-_"
См. также
Примечание
Реализация оператора в значительной reduce
степени основана на документе A Data Clustering Algorithm for Mining Patterns From Event Logs (Алгоритм кластеризации данных для шаблонов интеллектуального анализа данных из журналов событий) (Risto Vaarandi).
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по