Partilhar via


Usando funções de agregação

Este tópico contém exemplos de uso das funções de agregação (Sum, Min, Max, Count e Distinct Count) em medidas. Os exemplos para a consulta baseiam-se nas mesmas células do cubo dos exemplos a seguir, de modo que você pode ver o efeito da troca de função.

O cubo usado nesses exemplos possui uma única medida, Sales, que se baseia na coluna Sales_Amount da tabela de fatos Sales. O cubo tem três dimensões:

  • Customers, que se baseia na tabela Customers e contém estes níveis, do mais alto ao mais baixo:

    • (All)

    • Customer com Customer_Name como a coluna de nome de membro e Customer_ID como a coluna de chaves de membro.

  • Retail Stores, que se baseia na tabela Retail_Stores e contém estes níveis, do mais alto ao mais baixo:

    • (All)

    • Retail Store com Retail_Store_Name como a coluna de nome de membro e Retail_Store_ID como a coluna de chaves de membro.

  • Products, que se baseia na tabela Products e contém estes níveis, do mais alto ao mais baixo:

    • (All)

    • Product Category, com Product_Category como a coluna de nome de membro e a coluna de chaves de membro.

    • Product, com Product_Name como a coluna de nome de membro e Product_ID como a coluna de chaves de membro.

Para obter mais informações sobre dimensões e níveis, consulte Dimensões e Níveis.

O esquema do cubo é mostrado aqui.

A tabela de fatos do cubo, Sales, é mostrada aqui.

Transaction_ID

Customer_ID

Product_ID

Retail_Store_ID

Sales_

Valor

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

Um das tabelas de dimensões do cubo, Customers, é mostrada aqui.

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

Outra das tabelas de dimensões do cubo, Retail_Stores, é mostrada aqui.

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

A tabela de dimensões final do cubo, Produtos, é mostrada aqui.

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

Se o valor da propriedade Aggregate Function da medida for Sum, o valor da medida de uma célula do cubo será calculado pela soma dos valores da coluna de origem da medida somente das linhas para a combinação de membros que define a célula e os descendentes desses membros.

Exemplos

Os exemplos a seguir retornam valores que representam vendas acumuladas.

A: Consultando uma célula de cubo atômico

Uma consulta na medida Sales a cliente A, loja A e produto A retorna 800.

B: Consultando uma célula de cubo não atômico

Uma consulta na medida Sales a cliente A, loja A, produto A e categoria de produto AB retorna 900.

C: Consultando várias células do cubo

Uma consulta na medida Sales coloca cada loja no eixo x, produtos aninhados nas categorias de produto no eixo y e divide por All Customers. Ela retorna o conjunto de dados a seguir:

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

Se o valor da propriedade Aggregate Function da medida for Min, o valor da medida de uma célula do cubo será calculado com o valor mais baixo da coluna de origem da medida somente das linhas para a combinação de membros que define a célula e os descendentes desses membros.

Exemplos

Os exemplos a seguir retornam valores que representam o menor preço de venda.

A: Consultando uma célula de cubo atômico

Uma consulta na medida Sales a cliente A, loja A e produto A retorna 250.

B: Consultando uma célula de cubo não atômico

Uma consulta na medida Sales a cliente A, loja A, produto A e categoria de produto AB retorna 100.

C: Consultando várias células do cubo

Uma consulta na medida Sales coloca cada loja no eixo x, produtos aninhados nas categorias de produto no eixo y e divide por All Customers. Ela retorna o conjunto de dados a seguir:

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

Se o valor da propriedade Aggregate Function da medida for Max, o valor da medida de uma célula do cubo será calculado com o valor mais alto da coluna de origem da medida somente das linhas para a combinação de membros que define a célula e os descendentes desses membros.

Exemplos

Os exemplos a seguir retornam valores que representam o maior preço de venda.

A: Consultando uma célula de cubo atômico

Uma consulta na medida Sales a cliente A, loja A e produto A retorna 300.

B: Consultando uma célula de cubo não atômico

Uma consulta na medida Sales a cliente A, loja A, produto A e categoria de produto AB retorna 300.

C: Consultando várias células do cubo

Uma consulta na medida Sales coloca cada loja no eixo x, produtos aninhados nas categorias de produto no eixo y e divide por All Customers. Ela retorna o conjunto de dados a seguir:

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

Se o valor da propriedade Aggregate Function da medida for Count, o valor da medida de uma célula do cubo será calculado pela soma do número de valores da coluna de origem da medida somente das linhas para a combinação de membros que define a célula e os descendentes desses membros.

Exemplos

Os exemplos a seguir retornam valores que representam o número de transações de vendas.

A: Consultando uma célula de cubo atômico

Uma consulta na medida Sales a cliente A, loja A e produto A retorna 3.

B: Consultando uma célula de cubo não atômico

Uma consulta na medida Sales a cliente A, loja A, produto A e categoria de produto AB retorna 4.

C: Consultando várias células do cubo

Uma consulta na medida Sales coloca cada loja no eixo x, produtos aninhados nas categorias de produto no eixo y e divide por All Customers. Ela retorna o conjunto de dados a seguir:

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

Se o valor da propriedade Aggregate Function da medida for Distinct Count, o valor da medida de uma célula do cubo será calculado pela soma do número exclusivo de valores da coluna de origem da medida somente das linhas para a combinação de membros que define a célula e os descendentes desses membros.

Uma medida com o valor da propriedade Aggregate Function de Distinct Count é chamada de medida de contagem distinta. Uma medida de contagem distinta pode ser usada para contar ocorrências dos membros de nível mais baixo de uma dimensão da tabela de fatos. Como a contagem é distinta, se um membro ocorrer várias vezes, ele será contado apenas uma vez.

Normalmente, as medidas de contagem distinta são usadas para determinar para cada membro de uma dimensão quantos membros de nível inferior e distintos de outra dimensão compartilham linhas da tabela de fatos. Por exemplo, em um cubo Sales, para cada cliente e grupo de clientes, quantos produtos distintos foram comprados? (Ou seja, para cada membro da dimensão Customers, quantos membros de nível inferior e distintos da dimensão Products compartilham linhas da tabela de fatos?) Ou, por exemplo, em um cubo Visitas no Site da Internet, para cada visitante do site e grupo de visitantes do site, quantas páginas distintas foram visitadas no site da Internet? (Ou seja, para cada membro da dimensão Site Visitors, quantos membros de nível inferior e distintos da dimensão Pages compartilham linhas da tabela de fatos?) Em cada um desses exemplos, os membros de nível inferior da segunda dimensão são contados por uma medida de contagem distinta.

Esse tipo de análise não precisa ser limitada a duas dimensões. Na verdade, uma medida de contagem distinta pode ser separada e dividida em qualquer combinação de dimensões do cubo, incluindo dimensões que contêm membros contados.

Uma medida de contagem distinta que conta membros baseia-se m uma coluna de chave estrangeira da tabela de fatos. (Ou seja, a propriedade Source Column da medida identifica essa coluna.) Essa coluna une a coluna da tabela de dimensões que identifica os membros contados pela medida de contagem distinta.

Cubos regulares têm limites para uso de medidas de contagem distinta. Somente uma medida de contagem distinta é permitida em um cubo regular e ela só é permitida se o cubo regular não contiver uma dimensão com operadores de acúmulo personalizado ou fórmulas de acúmulo personalizado. Entretanto, cubos virtuais não compartilham essas limitações. Um cubo virtual pode empregar várias medidas de contagem distinta além de usar operadores de acúmulo personalizado ou fórmulas de acúmulo personalizado combinados com as medidas de contagem distinta.

Como as medidas de contagem distinta são não aditivas, sua existência restringe consideravelmente a capacidade do Microsoft® SQL Server™ 2000 Analysis Services de agregar previamente o cubo. Por isso, é recomendável que cada contagem distinta seja colocada em seu próprio cubo sem outras medidas. Esses cubos com medidas de contagem distintas podem então ser unidos a outros cubos em um cubo virtual que gerencia com eficiência todas as medidas.

ObservaçãoObservação

Se um cubo usar uma medida de contagem distinta, o cubo inteiro será tratado como não aditivo. Cubos não aditivos não oferecem suporte a membros criados de forma dinâmica, portanto, funções MDX, como VisualTotals, que criam membros dinamicamente, retornarão um erro se usadas em um cubo não aditivo. Isso afeta também outros recursos, como a habilitação de totais visuais na segurança de dimensão, que envolve membros criados dinamicamente.

Exemplos

Os exemplos a seguir retornam valores que representam o número de transações de Vendas com um preço exclusivo de Vendas.

A: Consultando uma célula de cubo atômico

Uma consulta na medida Sales a cliente A, loja A e produto A retorna 2.

B: Consultando uma célula de cubo não atômico

Uma consulta na medida Sales a cliente A, loja A, produto A e categoria de produto AB retorna 3.

C: Consultando várias células do cubo

Uma consulta na medida Sales coloca cada loja no eixo x, produtos aninhados nas categorias de produto no eixo y e divide por All Customers. Ela retorna o conjunto de dados a seguir:

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