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çã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 |
Consulte também