Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Переключайте службы с помощью раскрывающегося списка Версия. Дополнительные сведения о навигации.
Область применения: ✅ Microsoft Fabric ✅ Azure Data Explorer ✅ Azure Monitor ✅ Microsoft Sentinel
Оператор top-nested выполняет иерархическую агрегирование и выбор значений.
Представьте, что у вас есть таблица с информацией о продажах, таких как регионы, продавцы и суммы проданы. Оператор top-nested может помочь вам ответить на сложные вопросы, такие как "Каковы топ-пять регионов по продажам, и кто является топ-три продавца в каждом из этих регионов?"
Исходные данные секционируются на основе условий, заданных в первом top-nested предложении, таких как регион. Затем оператор выбирает верхние записи в каждой секции с помощью агрегирования, например добавления сумм продаж. Каждое последующее top-nested предложение обновляет секции, созданные предыдущим предложением, создавая иерархию более точных групп.
Результатом является таблица с двумя столбцами для каждого предложения. Один столбец содержит значения секционирования, такие как регион, а другой столбец содержит результаты вычисления агрегирования, например сумму продаж.
Синтаксис
T|top-nested [ N ] ofExpr [withothers= ConstExpr] byАгрегирование [asc | desc] [ [,
top-nested ... ]
Дополнительные сведения о соглашениях синтаксиса.
Параметры
| Имя (название) | Type | Обязательно | Описание |
|---|---|---|---|
| T | string |
✔️ | Входное табличное выражение. |
| N | int |
Количество возвращаемых верхних значений для этого уровня иерархии. Если опущено, возвращаются все уникальные значения. | |
| Expr | string |
✔️ | Выражение по входной записи, указывающее, какое значение необходимо вернуть для этого уровня иерархии. Как правило, он ссылается на столбец из T или включает вычисление, например bin() в столбце. При необходимости задайте имя выходного столбца в качестве имени Expr=. |
| ConstExpr | string |
Если задано, для каждого уровня иерархии добавляется одна запись со значением, которое является агрегированием для всех записей, которые не сделали его в верхней части. | |
| Агрегат | string |
Функция агрегирования, применяемая к записям с тем же значением Expr . Результат определяет верхние записи. См. сведения о поддерживаемых функциях агрегирования. При необходимости задайте имя выходного столбца в качестве . |
Поддерживаемые функции агрегирования
Поддерживаются следующие функции агрегирования:
Примечание.
Также поддерживается любое сочетание алгебраических агрегатов.
Возвраты
Таблица с двумя столбцами для каждого предложения. Один столбец содержит уникальные значения, вычисляемые с помощью Expr, а другой столбец показывает результаты, полученные из вычисления агрегирования .
with
others Использование предложения
top-nested Использование оператора с withothers добавлением возможности просмотра верхнего контекстуализуемого содержимого в более широком наборе данных. Оценка данных таким образом ценна при визуальной отрисовке данных.
Включение данных из других столбцов
В выходной top-nested таблице отображаются только столбцы, указанные как предложение Expr .
Чтобы включить все значения столбца на определенном уровне:
- Не указывайте значение N.
- Используйте имя столбца в качестве значения Expr.
- Используйте
Ignore=max(1)в качестве значения агрегирования. - Удалите ненужный
Ignoreстолбец с помощью проекта.
Пример см. в разделе "Последние события для каждого состояния" с другими данными столбца.
Замечания, связанные с быстродействием
Число записей может увеличиваться экспоненциально с числом top-nested предложений, а рост записи еще быстрее, если N-параметр не указан. Этот оператор может потреблять значительный объем ресурсов.
Если распределение агрегирования нерегулярно, ограничьте количество возвращаемых значений, указав N. Затем используйте withothers= предложение ConstExpr, чтобы получить представление о весе всех остальных вариантов.
Примеры
Основные поврежденные состояния, типы событий и конечные расположения по повреждению имущества
Следующий запрос секционирует StormEvents таблицу по State столбцу и вычисляет общий ущерб свойств для каждого состояния. Запрос выбирает первые два состояния с наибольшим количеством повреждений имущества. В этих первых двух состояниях запрос группирует данные EventType по и выбирает первые три типа событий с наибольшим ущербом. Затем запрос группирует EndLocation данные EndLocation по и выбирает самый высокий ущерб. В результатах отображается только одно EndLocation значение, возможно, из-за большого характера событий шторма или не документирования конечного расположения.
StormEvents // Data source.
| top-nested 2 of State by sum(DamageProperty), // Top 2 States by total damaged property.
top-nested 3 of EventType by sum(DamageProperty), // Top 3 EventType by total damaged property for each State.
top-nested 1 of EndLocation by sum(DamageProperty) // Top 1 EndLocation by total damaged property for each EventType and State.
| project State, EventType, EndLocation, StateTotalDamage = aggregated_State, EventTypeTotalDamage = aggregated_EventType, EndLocationDamage = aggregated_EndLocation
Выходные данные
| Штат | EventType | EndLocation | StateTotalDamage | EventTypeTotalDamage | EndLocationDamage |
|---|---|---|---|---|---|
| CALIFORNIA | Wildfire | 1445937600 | 1326315000 | 1326315000 | |
| CALIFORNIA | HighWind | 1445937600 | 61320000 | 61320000 | |
| CALIFORNIA | Мусорный поток | 1445937600 | 48000000 | 48000000 | |
| ОКЛАХОМА | IceStorm | 915470300 | 826000000 | 826000000 | |
| ОКЛАХОМА | WinterStorm | 915470300 | 40027000 | 40027000 | |
| ОКЛАХОМА | Наводнение | КОММЕРЧЕСКАЯ | 915470300 | 21485000 | 20000000 |
Первые пять состояний с повреждением имущества withothers сгруппированы
В следующем примере оператор используется top-nested для идентификации первых пяти состояний с наибольшим ущербом имущества и использует withothers предложение для группировки поврежденного свойства для всех остальных состояний. Затем он визуализирует поврежденное свойство для первых пяти состояний и всех остальных состояний piechartrender в качестве команды.
StormEvents
| top-nested 5 of State with others="OtherStates" by sum(DamageProperty)
| render piechart
Выходные данные
Последние события для каждого состояния с другими данными столбца
Следующий запрос извлекает два последних события для каждого штата США с соответствующими сведениями о событии. Он используется max(1) в определенных столбцах для распространения данных без использования логики выбора в верхней части. Созданные Ignore столбцы агрегирования удаляются с помощью project-away.
StormEvents
| top-nested of State by Ignore0=max(1), // Partition the data by each unique value of state.
top-nested 2 of StartTime by Ignore1=max(StartTime), // Get the 2 most recent events in each state.
top-nested of EndTime by Ignore2=max(1), // Append the EndTime for each event.
top-nested of EpisodeId by Ignore3=max(1) // Append the EpisodeId for each event.
| project-away Ignore* // Remove the unnecessary aggregation columns.
| order by State asc, StartTime desc // Sort results alphabetically and chronologically.
Последние записи на удостоверение с другими данными столбца
В следующем top-nested примере извлекаются последние записи для каждого удостоверения и создаются основные понятия, представленные в предыдущем примере. Первое top-nested предложение секционирует данные по отдельным значениям id использования Ignore0=max(1) в качестве заполнителя. Для каждого idиз них определяется две последние записи на timestampоснове . Другие сведения добавляются с помощью top-nested оператора без указания количества и использования Ignore2=max(1) в качестве заполнителя. Наконец, ненужные столбцы агрегирования удаляются с помощью project-away оператора.
datatable(id: string, timestamp: datetime, otherInformation: string) // Create a source datatable.
[
"Barak", datetime(2015-01-01), "1",
"Barak", datetime(2016-01-01), "2",
"Barak", datetime(2017-01-20), "3",
"Donald", datetime(2017-01-20), "4",
"Donald", datetime(2017-01-18), "5",
"Donald", datetime(2017-01-19), "6"
]
| top-nested of id by Ignore0=max(1), // Partition the data by each unique value of id.
top-nested 2 of timestamp by Ignore1=max(timestamp), // Get the 2 most recent events for each state.
top-nested of otherInformation by Ignore2=max(1) // Append otherInformation for each event.
| project-away Ignore0, Ignore1, Ignore2 // Remove the unnecessary aggregation columns.
Выходные данные
| id | TIMESTAMP | otherInformation |
|---|---|---|
| Барак | 2016-01-01T00:00:00Z | 2 |
| Дональд | 2017-01-19T00:00:00Z | 6 |
| Барак | 2017-01-20T00:00:00Z | 3 |
| Дональд | 2017-01-20T00:00:00Z | 4 |