Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Сортирует множество в убывающем порядке и возвращает набор кортежей с наибольшими значениями, суммарный суммарный результат которых равен или превышает заданный процент.
Syntax
TopPercent(Set_Expression, Percentage, Numeric_Expression)
Arguments
Set_Expression
Допустимое выражение многомерных выражений (MDX), которое возвращает множество.
Процент
Допустимое числовое выражение, указывающее процент возвратных кортежей.
Important
Процент должен быть положительным значением; отрицательные значения порождают ошибку.
Numeric_Expression
Допустимое числовое выражение, которое обычно является многомерным выражением (MDX) координат ячеек, возвращающих число.
Remarks
Функция TopPercent вычисляет сумму заданного числового выражения, вычисленного по указанному множеству, сортируя множество в убывающем порядке. Функция затем возвращает элементы с наибольшими значениями, совокупный процент от общего суммированного значения не менее заданного процента. Эта функция возвращает наименьшее подмножество множества, суммарный суммарный состав которого не менее заданного процента. Возвращённые элементы упорядочены от самого крупного к наименьшему.
Предупреждение
Если Numeric_Expression возвращает отрицательное значение, то TopPercent возвращает только одну (1) строку.
См. второй пример для подробного описания этого поведения.
Important
Как и функция BottomPercent , функция TopPercent всегда нарушает иерархию.
Примеры
А. Возврат TopPercent
Следующий пример приводит лучшие города, которые помогли войти в топ-10% продаж реселлеров в категории велосипедов. Результат сортируется в порядке убывания, начиная с города с наибольшей стоимостью продаж.
SELECT [Measures].[Reseller Sales Amount] ON 0,
TopPercent
({[Geography].[Geography].[City].Members}
, 10
, [Measures].[Reseller Sales Amount]
) ON 1
FROM [Adventure Works]
WHERE([Product].[Product Categories].[Bikes])
Приведённое выше выражение даёт следующие результаты:
| Город | Объем продаж реселлера |
|---|---|
| Toronto | $3,508,904.84 |
| London | $1,521,530.09 |
| Seattle | $1,209,418.16 |
| Paris | $1,170,425.18 |
Исходный набор данных можно получить с помощью следующего запроса, который возвращает 588 строк:
SELECT [Measures].[Reseller Sales Amount] ON 0,
Order
({[Geography].[Geography].[City].Members}
, [Measures].[Reseller Sales Amount]
, BDESC
) ON 1
FROM [Adventure Works]
WHERE([Product].[Product Categories].[Bikes])
B. Поймите влияние отрицательных значений
Следующее обходное руководство поможет понять влияние негативных значений на Numeric_Expression. Сначала давайте создадим контекст, чтобы представить поведение.
Следующий запрос возвращает таблицу реселлеров «Сумма продаж», «Общая стоимость продукта» и «Валовая прибыль», отсортированные в порядке убывания прибыли. Обратите внимание, что существуют только отрицательные значения для получения прибыли; Итак, наименьшая потеря появляется на вершине.
SELECT { [Measures].[Reseller Sales Amount], [Measures].[Reseller Total Product Cost], [Measures].[Reseller Gross Profit] } ON columns
, ORDER( [Product].[Product Categories].[Bikes].[Touring Bikes].children, [Measures].[Reseller Gross Profit], BDESC ) ON rows
FROM [Adventure Works]
Приведённый выше запрос даёт следующие результаты: Строки из средней части были удалены для удобства читаемости.
| Туристические велосипеды | Объем продаж реселлера | Общая стоимость товара реселлером | Валовая прибыль от реселлеров |
|---|---|---|---|
| Touring-2000 Blue, 50 | $157,444.56 | $163,112.57 | ($5,668.01) |
| Touring-2000 Blue, 46 | $321,027.03 | $333,021.50 | ($11,994.47) |
| Туринг-3000 Синий, 62 | $87,773.61 | $100,133.52 | ($12,359.91) |
| ... | ... | ... | ... |
| Touring-1000 Yellow, 46 | $1,016,312.83 | $1,234,454.27 | ($218,141.44) |
| Touring-1000 Жёлтый, 60 | $1,184,363.30 | $1,443,407.51 | ($259,044.21) |
Если вас попросят представить 100 лучших% велосипедов по прибыли, вы бы написали запрос вроде:
SELECT { [Measures].[Reseller Sales Amount], [Measures].[Reseller Total Product Cost], [Measures].[Reseller Gross Profit] } ON columns
, TOPPERCENT( [Product].[Product Categories].[Bikes].[Touring Bikes].children, 100,[Measures].[Reseller Gross Profit] ) ON rows
FROM [Adventure Works]
Обратите внимание, что запрос требует сто процентов (100%); Это значит, что все ряды должны быть возвращены. Однако, поскольку в Numeric_Expression есть отрицательные значения , возвращается только одна строка.
| Туристические велосипеды | Объем продаж реселлера | Общая стоимость товара реселлером | Валовая прибыль от реселлеров |
|---|---|---|---|
| Touring-2000 Blue, 50 | $157,444.56 | $163,112.57 | ($5,668.01) |