Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Ordena un conjunto en orden descendente y devuelve un conjunto de tuplas con los valores más altos cuyo total acumulado es igual o mayor que un porcentaje especificado.
Sintaxis
TopPercent(Set_Expression, Percentage, Numeric_Expression)
Argumentos
Set_Expression
Una expresión válida de Expresiones Multidimensionales (MDX) que devuelve un conjunto.
Porcentaje
Una expresión numérica válida que especifica el porcentaje de tuplas que se deben devolver.
Importante
El porcentaje debe ser un valor positivo; los valores negativos generan un error.
Numeric_Expression
Una expresión numérica válida que normalmente es una expresión de Expresiones Multidimensionales (MDX) de coordenadas de celda que devuelven un número.
Remarks
La función TopPercent calcula la suma de la expresión numérica especificada evaluada sobre el conjunto especificado, ordenando el conjunto en orden descendente. La función devuelve entonces los elementos con los valores más altos cuyo porcentaje acumulado del valor total sumado es al menos el porcentaje especificado. Esta función devuelve el subconjunto más pequeño de un conjunto cuyo total acumulado es al menos el porcentaje especificado. Los elementos devueltos se ordenan de mayor a menor.
Advertencia
Si Numeric_Expression devuelve algún valor negativo, entonces TopPercent solo devuelve una (1) fila.
Consulta el segundo ejemplo para una presentación detallada de este comportamiento.
Importante
Al igual que la función BottomPercent , la función TopPercent siempre rompe la jerarquía.
Examples
A. Retorno TopPercent
El siguiente ejemplo devuelve las mejores ciudades que ayudan a situarse en el top 10% de ventas de los distribuidores, para la categoría de bicicletas. El resultado se ordena en orden descendente, empezando por la ciudad que tiene el mayor valor de ventas.
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])
La expresión anterior produce los siguientes resultados:
| Ciudad | Importe de ventas del revendedor |
|---|---|
| Toronto | 3.508.904,84 $ |
| London | 1.521.530,09 $ |
| Seattle | 1.209.418,16 $ |
| Paris | $1,170,425,18 |
El conjunto original de datos puede obtenerse con la siguiente consulta y devuelve 588 filas:
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. Comprender el efecto de los valores negativos
La siguiente guía ayudará a entender el efecto de los valores negativos en el Numeric_Expression. Primero, construyamos un contexto donde podamos presentar el comportamiento.
La siguiente consulta devuelve una tabla de los revendedores 'Importe de venta', 'Coste total del producto' y 'Beneficio bruto', ordenados en orden descendente de beneficio. Ten en cuenta que solo hay valores negativos para el beneficio; Así que la menor pérdida aparece en la parte superior.
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]
La consulta anterior devuelve los siguientes resultados; se eliminaron las filas de la sección central para facilitar la legibilidad.
| Bicicletas de paseo | Importe de ventas del revendedor | Coste total del producto del revendedor | Beneficio bruto del revendedor |
|---|---|---|---|
| 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 $) |
| Touring-3000 Blue, 62 | 87.773,61 $ | 100.133,52 $ | (12.359,91 $) |
| ... | ... | ... | ... |
| Touring-1000 Amarillo, 46 | 1.016.312,83 $ | 1.234.454,27 $ | (218.141,44 $) |
| Touring-1000 Amarillo, 60 | $1,184,363,30 | $1,443,407,51 | ($259,044,21) |
Ahora bien, si te pidieran presentar las 100 motos% mejores por beneficio, escribirías una consulta como:
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]
Ten en cuenta que la consulta pide el cien por cien (100%); Eso significa que todas las filas deben ser devueltas. Sin embargo, debido a que hay valores negativos en el Numeric_Expression , solo se devuelve una fila.
| Bicicletas de paseo | Importe de ventas del revendedor | Coste total del producto del revendedor | Beneficio bruto del revendedor |
|---|---|---|---|
| Touring-2000 Blue, 50 | 157.444,56 $ | 163.112,57 $ | (5.668,01 $) |