Usar funciones de agregado
En este tema se ofrecen ejemplos de uso de las funciones de agregado (Sum, Min, Max, Count y Distinct Count) en las medidas. Los ejemplos para la consulta se basan en las mismas celdas de cubo que los ejemplos siguientes, de manera que le resulte fácil ver los efectos del cambio de la función.
El cubo que utilizan estos ejemplos sólo tiene una medida, Sales, basada en la columna Sales_Amount de la tabla de hechos Sales. El cubo tiene tres dimensiones:
Customers, basada en la tabla Customers y con los niveles siguientes, del superior al inferior:
(All)
Customer, con Customer_Name como columna de nombre de miembro y Customer_ID como columna de clave de miembro.
Retail Stores, basada en la tabla Retail_Stores y con los niveles siguientes, del superior al inferior:
(All)
Retail Store, con Retail_Store_Name como columna de nombre de miembro y Retail_Store_ID como columna de clave de miembro.
Products, basada en la tabla Products y con los niveles siguientes, del superior al inferior:
(All)
Product Category, con Product_Category como columna de nombre de miembro y columna de clave de miembro.
Product, con Product_Name como columna de nombre de miembro y Product_ID como columna de clave de miembro.
Para obtener más información acerca de las dimensiones y los niveles, vea Dimensiones y niveles.
Aquí se muestra el esquema del cubo.
Aquí se muestra la tabla de hechos del cubo, Sales.
Transaction_ID |
Customer_ID |
Product_ID |
Retail_Store_ID |
Sales_ Amount |
---|---|---|---|---|
1 |
1 |
1 |
1 |
300 |
2 |
1 |
1 |
1 |
250 |
3 |
1 |
1 |
1 |
250 |
4 |
1 |
2 |
1 |
100 |
5 |
1 |
4 |
1 |
700 |
6 |
2 |
1 |
2 |
290 |
7 |
2 |
2 |
2 |
90 |
8 |
2 |
3 |
3 |
510 |
9 |
3 |
1 |
4 |
350 |
10 |
3 |
2 |
3 |
110 |
11 |
4 |
3 |
4 |
550 |
12 |
4 |
4 |
4 |
750 |
Aquí se muestra una de las tablas de dimensiones del cubo, Customers.
Customer_ID |
Customer_Name |
Customer_Address_ Line_1 |
Customer_Address_ Line_2 |
---|---|---|---|
1 |
A |
1 A Street |
Aville, AA 55555 |
2 |
B |
2 B Street |
Bville, BB 55555 |
3 |
C |
3 C Street |
Cville, CC 55555 |
4 |
D |
4 D Street |
Dville, DD 55555 |
Aquí se muestra otra de las tablas de dimensiones del cubo, Retail_Stores.
Retail_ Store_ID |
Retail_Store_ Name |
Retail_Store_ Address_Line_1 |
Retail_Store_ Address_Line_2 |
---|---|---|---|
1 |
A |
1 A Avenue |
Atown, AA 55555 |
2 |
B |
2 B Avenue |
Btown, BB 55555 |
3 |
C |
3 C Avenue |
Ctown, CC 55555 |
4 |
D |
4 D Avenue |
Dtown, DD 55555 |
Aquí se muestra la tabla de dimensiones final del cubo, Products.
Product_ID |
Product_Name |
Product_Description |
Product_Category |
---|---|---|---|
1 |
A |
aaaa aaaa aaaa |
AB |
2 |
B |
bbbb bbbb bbbb |
AB |
3 |
C |
cccc cccc cccc |
CD |
4 |
D |
dddd dddd dddd |
CD |
SUM
Si el valor de la propiedad Aggregate Function de una medida es Sum, el valor de medida de la celda de un cubo se calcula agregando los valores de la columna de origen de la medida sólo de las filas de la combinación de miembros que define la celda y los descendientes de dichos miembros.
Ejemplos
En los ejemplos siguientes se obtienen valores que representan las ventas acumuladas.
A: Consulta a una celda de un cubo atómico
Una consulta de la medida Sales para el cliente A, tienda A y el producto A devuelve 800.
B: Consulta a una celda de un cubo no atómico
Una consulta de la medida Sales para el cliente A, tienda A y categoría de producto AB devuelve 900.
C: Consulta a varias celdas del cubo
Una consulta de la medida Sales coloca cada tienda en el eje x, anida los productos de las categorías de producto en el eje y, y realiza la segmentación por All Customers. Devuelve el siguiente conjunto de datos.
All Retail Stores |
A |
B |
C |
D |
|||
All Products |
4250 |
1600 |
380 |
620 |
1650 |
||
AB |
1740 |
900 |
380 |
110 |
350 |
||
A |
1440 |
800 |
290 |
350 |
|||
B |
300 |
100 |
90 |
110 |
|||
CD |
2510 |
700 |
510 |
1300 |
|||
C |
1060 |
510 |
550 |
||||
D |
1450 |
700 |
750 |
Min
Si el valor de la propiedad Aggregate Function de una medida es Min, el valor de medida de la celda de un cubo se calcula tomando el valor inferior de la columna de origen de la medida sólo de las filas de la combinación de miembros que define la celda y los descendientes de dichos miembros.
Ejemplos
En los ejemplos siguientes se obtienen valores que representan el precio de venta más bajo.
A: Consulta a una celda de un cubo atómico
Una consulta de la medida Sales para el cliente A, tienda A y el producto A devuelve 250.
B: Consulta a una celda de un cubo no atómico
Una consulta de la medida Sales para el cliente A, tienda A y categoría de producto AB devuelve 100.
C: Consulta a varias celdas del cubo
Una consulta de la medida Sales coloca cada tienda en el eje x, anida los productos de las categorías de producto en el eje y, y realiza la segmentación por All Customers. Devuelve el siguiente conjunto de datos.
All Retail Stores |
A |
B |
C |
D |
|||
All Products |
90 |
100 |
90 |
110 |
350 |
||
AB |
90 |
100 |
90 |
110 |
350 |
||
A |
250 |
250 |
290 |
350 |
|||
B |
90 |
100 |
90 |
110 |
|||
CD |
510 |
700 |
510 |
550 |
|||
C |
510 |
510 |
550 |
||||
D |
700 |
700 |
750 |
Max
Si el valor de la propiedad Aggregate Function de una medida es Max, el valor de medida de la celda de un cubo se calcula tomando el valor superior de la columna de origen de la medida sólo de las filas de la combinación de miembros que define la celda y los descendientes de dichos miembros.
Ejemplos
En los ejemplos siguientes se obtienen valores que representan el precio de venta más alto.
A: Consulta a una celda de un cubo atómico
Una consulta de la medida Sales para el cliente A, tienda A y el producto A devuelve 300.
B: Consulta a una celda de un cubo no atómico
Una consulta de la medida Sales para el cliente A, tienda A y categoría de producto AB devuelve 300.
C: Consulta a varias celdas del cubo
Una consulta de la medida Sales coloca cada tienda en el eje x, anida los productos de las categorías de producto en el eje y, y realiza la segmentación por All Customers. Devuelve el siguiente conjunto de datos.
All Retail Stores |
A |
B |
C |
D |
|||
All Products |
750 |
700 |
290 |
510 |
750 |
||
AB |
350 |
300 |
290 |
110 |
350 |
||
A |
350 |
300 |
290 |
350 |
|||
B |
110 |
100 |
90 |
110 |
|||
CD |
750 |
700 |
510 |
750 |
|||
C |
550 |
510 |
550 |
||||
D |
750 |
700 |
750 |
Count
Si el valor de la propiedad Aggregate Function de una medida es Count, el valor de medida de la celda de un cubo se calcula agregando el número de valores de la columna de origen de la medida sólo de las filas de la combinación de miembros que define la celda y los descendientes de dichos miembros.
Ejemplos
En los ejemplos siguientes se obtienen valores que representan el número de transacciones de venta.
A: Consulta a una celda de un cubo atómico
Una consulta de la medida Sales para el cliente A, tienda A y el producto A devuelve 3.
B: Consulta a una celda de un cubo no atómico
Una consulta de la medida Sales para el cliente A, tienda A y categoría de producto AB devuelve 4.
C: Consulta a varias celdas del cubo
Una consulta de la medida Sales coloca cada tienda en el eje x, anida los productos de las categorías de producto en el eje y, y realiza la segmentación por All Customers. Devuelve el siguiente conjunto de datos.
All Retail Stores |
A |
B |
C |
D |
|||
All Products |
12 |
5 |
2 |
2 |
3 |
||
AB |
8 |
4 |
2 |
1 |
1 |
||
A |
5 |
3 |
1 |
1 |
|||
B |
3 |
1 |
1 |
1 |
|||
CD |
4 |
1 |
1 |
2 |
|||
C |
2 |
1 |
1 |
||||
D |
2 |
1 |
1 |
Distinct Count
Si el valor de la propiedad Aggregate Function de una medida es Distinct Count, el valor de medida de la celda de un cubo se calcula agregando el número de valores únicos de la columna de origen de la medida sólo de las filas de la combinación de miembros que define la celda y los descendientes de dichos miembros.
Una medida que tenga el valor Distinct Count en la propiedad Aggregate Function se denomina medida de recuento distintiva. Una medida de recuento distintiva se puede usar para contar el número de veces que aparecen los miembros del nivel inferior de una dimensión en la tabla de hechos. Como el recuento es distintivo, si un miembro aparece varias veces, sólo se cuenta una vez.
Las medidas de recuento distintivas se usan normalmente para determinar, por cada miembro de una dimensión, cuántos miembros distintivos del nivel inferior de otra dimensión comparten filas en la tabla de hechos. Por ejemplo, en un cubo Sales, por cada cliente y grupo de clientes, ¿cuántos productos diferentes se adquirieron? Es decir, por cada miembro de la dimensión Customers, ¿cuántos miembros diferentes del nivel inferior de la dimensión Products comparten filas en la tabla de hechos? O, por ejemplo, en un cubo de visitas a un sitio de Internet, por cada visitante y grupo de visitantes del sitio, ¿cuántas páginas distintas del sitio de Internet se visitaron? Es decir, por cada miembro de la dimensión Site Visitors, ¿cuántos miembros diferentes del nivel inferior de la dimensión Pages comparten filas en la tabla de hechos? En cada uno de estos ejemplos, los miembros del nivel inferior de la segunda dimensión se cuentan mediante una medida de recuento distintiva.
Este tipo de análisis no tiene por qué limitarse a dos dimensiones. De hecho, una medida de recuento distintiva se puede separar y segmentar mediante cualquier combinación de dimensiones del cubo, incluida la dimensión que contiene los miembros contados.
Una medida de recuento distintiva que cuenta miembros se basa en una columna de clave externa de la tabla de hechos. Es decir, la propiedad Source Column de la medida identifica esta columna. Esta columna se combina con la columna de la tabla de dimensiones que identifica a los miembros que cuenta la medida de recuento distintiva.
Los cubos normales pueden hacer un uso limitado de las medidas de recuento distintivas. En un cubo normal sólo se admite una medida de recuento distintiva y sólo se admite si el cubo normal no tiene una dimensión con operadores de resumen personalizado ni fórmulas de resumen personalizado. Estas limitaciones no se aplican a los cubos virtuales. Un cubo virtual puede utilizar varias medidas de recuento distintivas y usar a la vez operadores de resumen personalizado y fórmulas de resumen personalizado con ellas.
Puesto que las medidas de recuento distintivas no se pueden agregar, la presencia de una medida de cubo distintiva restringe en gran medida la capacidad de Microsoft® SQL Server™ 2000 Analysis Services de hacer una agregación previa. Por ello, se recomienda colocar cada recuento distintivo en su propio cubo, sin otras medidas. A continuación, estos cubos con medidas de recuento distintivas se pueden combinar con otros cubos para formar un cubo virtual que administre eficazmente todas las medidas.
[!NOTA]
Si un cubo usa una medida de recuento distintiva, se considera que todo el cubo no se puede agregar. Los cubos que no se pueden agregar no admiten miembros creados dinámicamente, por lo que las funciones MDX como VisualTotals, que crean miembros dinámicamente, devolverán un error si se usan en un cubo que no se puede agregar. Esto afecta también a otras características, como la habilitación de totales visuales en la seguridad de dimensiones, que conlleva la creación dinámica de miembros.
Ejemplos
En los ejemplos siguientes se obtienen valores que representan el número de transacciones de venta con un precio de venta único.
A: Consulta a una celda de un cubo atómico
Una consulta de la medida Sales para el cliente A, tienda A y el producto A devuelve 2.
B: Consulta a una celda de un cubo no atómico
Una consulta de la medida Sales para el cliente A, tienda A y categoría de producto AB devuelve 3.
C: Consulta a varias celdas del cubo
Una consulta de la medida Sales coloca cada tienda en el eje x, anida los productos de las categorías de producto en el eje y, y realiza la segmentación por All Customers. Devuelve el siguiente conjunto de datos.
All Retail Stores |
A |
B |
C |
D |
|||
All Products |
11 |
4 |
2 |
2 |
3 |
||
AB |
7 |
3 |
2 |
1 |
1 |
||
A |
4 |
2 |
1 |
1 |
|||
B |
3 |
1 |
1 |
1 |
|||
CD |
4 |
1 |
1 |
2 |
|||
C |
2 |
1 |
1 |
||||
D |
2 |
1 |
1 |
Vea también