Compartir a través de


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