Поделиться через


Оператор reduce

Область применения: ✅Microsoft Fabric

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

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

Синтаксис

T|reduce [kind= ReduceKind] Exprby[ withthreshold=]]

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

Параметры

Имя (название) Тип Обязательно Описание
Экспр string ✔️ Значение, по которому требуется уменьшить.
Порог real Значение от 0 до 1, определяющее минимальную долю строк, необходимых для сопоставления критериев группировки для активации операции сокращения. Значение по умолчанию — 0,1.

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

Возвраты

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

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

Расписание Численность Уполномоченный
Сан * 5182 Сан-Бернард
Сант * 2846 Сент-Люси
Москва 3726 Москва
*-на-* 2730 One -on- One
Париж 2716 Париж

Примеры

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

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

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

В следующем примере создается диапазон чисел, создается новый столбец с объединенными строками и случайными целыми числами, а затем группирует строки по новому столбцу с определенными параметрами сокращения. Пороговое значение равно 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" 

Выходные данные

Расписание Численность Уполномоченный
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" 

Выходные данные

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

Расписание Численность Уполномоченный
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

Выходные данные

Расписание Численность Уполномоченный
и так далее. 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"

Выходные данные

Расписание Численность Уполномоченный
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="-_"

Примечание.

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