Оператор свертки

Переключайте службы с помощью раскрывающегося списка Версия. Дополнительные сведения о навигации.
Область применения: ✅ Microsoft Fabric ✅ Azure Data Explorer ✅ Azure Monitor ✅ Microsoft Sentinel

Группирует набор строк вместе на основе сходства значений.

Для каждой такой группы оператор возвращает patternзначение , countи representative. Лучше pattern всего описывает группу, в которой * символ представляет подстановочный знак. Число count значений в группе и representative одно из исходных значений в группе.

Syntax

T|reduce [kind=ReduceKind] by [ пороговоеwiththreshold=] [,characters=символы]]

Дополнительные сведения о соглашениях синтаксиса.

Parameters

Name Type Required Description
Expr string ✔️ Значение, по которому требуется уменьшить.
Threshold real Значение от 0 до 1, определяющее минимальную долю строк, необходимых для сопоставления критериев группировки для активации операции сокращения. Значение по умолчанию — 0,1.

Параметр порога определяет минимальный уровень сходства, необходимый для группирования значений. С меньшим пороговым значением (ближе к 0), более похожие значения группируются вместе, что приводит к меньшему, но более похожим группам. Для большего порогового значения (ближе к 1) требуется меньше сходства, что приводит к тому, что больше групп, которые менее похожи. Рекомендуется задать небольшое пороговое значение для больших входных данных. См. примеры .
Characters string Список символов, разделяющих термины. По умолчанию используется каждый числовый символ, отличный от ascii. Примеры см. в разделе Примеры.
ReduceKind string Единственным допустимым значением является source. Если source задано, оператор добавляет Pattern столбец к существующим строкам таблицы вместо агрегирования Pattern.

Returns

Таблица с столько строк, сколько есть группы и столбцы с заголовком pattern, countи representative. Лучше pattern всего описывает группу, в которой * символ представляет подстановочный знак или заполнитель для произвольной строки вставки. Число count значений в группе и representative одно из исходных значений в группе.

Например, результат выполнения reduce by city может быть таким:

Pattern Count Representative
Сан* 5182 Сан-Бернард
Сен* 2846 Сент-Люси
Moscow 3726 Moscow
*-на-* 2730 One -on- One
Paris 2716 Paris

Examples

В этом разделе показано, как использовать синтаксис для начала работы.

Примеры, приведенные в этой статье, используют общедоступные таблицы в кластере справки, например StormEvents таблицу в базе данных Samples .

В примерах этой статьи используются общедоступные таблицы, такие как Weather таблица в коллекции примеров Weather Analytics. Возможно, потребуется изменить имя таблицы в примере запроса, чтобы она соответствовала таблице в рабочей области.

В следующем примере создается диапазон чисел, создается новый столбец с объединенными строками и случайными целыми числами, а затем группирует строки по новому столбцу с определенными параметрами сокращения. Пороговое значение равно 0,001, что означает, что значения операторов группируются очень похожи друг на друга.

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" 

Output

Pattern Count Representative
MachineLearning* 1000 MachineLearningX4

В следующем примере создается диапазон чисел, создается новый столбец с объединенными строками и случайными целыми числами, а затем группирует строки по новому столбцу с определенными параметрами сокращения. Пороговое значение имеет значение 0,9, что означает, что оператор группируется вместе со значениями менее строго и обеспечивает более дисперсию.

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" 

Output

Результат включает только те группы, в которых значение MyText отображается по крайней мере в 90% строк.

Pattern 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 не указан, оператор по умолчанию обрабатывает все небуквенно-цифровые символы (включая пробелы и знаки препинания) в качестве разделителей терминов. В следующем примере показано, как reduce работает оператор, если параметр Characters не указан.

range x from 1 to 10 step 1 | project str = strcat("foo", "Z", tostring(x)) | reduce by str

Output

Pattern Count Representative
others 10

Однако если указать, что "Z" является разделителем, то это как если бы каждое значение в str является двумя терминами: foo и tostring(x):

range x from 1 to 10 step 1 | project str = strcat("foo", "Z", tostring(x)) | reduce by str with characters="Z"

Output

Pattern Count Representative
foo* 10 fooZ1

В следующем примере показано, как можно применить оператор reduce к входным данным, в которых идентификаторы GUID в столбце заменяются перед сокращением:

Начните с нескольких записей из таблицы трассировки. Затем уменьшите текстовый столбец, включающий случайные идентификаторы GUID. Так как случайные идентификаторы GUID вмешиваются в операцию уменьшения, замените их всеми строкой GUID. Теперь выполните операцию уменьшения. В случае, если в них есть другие идентификаторы quasi-random с внедренными символами "-" или "_", обрабатывают символы как несрочные разрывы.

Trace
| take 10000
| extend Text = replace(@"[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", Text)
| reduce by Text with characters="-_"

Note

Реализация оператора в значительной reduce степени основана на документе Алгоритм кластеризации данных для шаблонов интеллектуального анализа данных из журналов событий Risto Vaarandi.