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, Vendas, que se baseia na coluna Valor das Vendas da tabela de fatos Vendas. O cubo tem três dimensões:
Clientes, que se baseia na tabela Clientes e contém estes níveis, do mais alto ao mais baixo:
(All)
Cliente com Customer_Name como a coluna de nome de membro e Customer_ID como a coluna de chaves de membro.
Lojas, que se baseia na tabela Lojas e contém estes níveis, do mais alto ao mais baixo:
(All)
Loja com Retail_Store_Name como a coluna de nome de membro e Retail_Store_ID como a coluna de chaves de membro.
Produtos, que se baseia na tabela Produtos e contém estes níveis, do mais alto ao mais baixo:
(All)
Categoria de Produto com Product_Category como a coluna de nome de membro e a coluna de chaves de membro.
Produto 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, Vendas, é mostrada aqui.
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 |
Um das tabelas de dimensões do cubo, Clientes, é 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 Vendas 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 Vendas 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 Vendas coloca cada loja no eixo x, produtos aninhados nas categorias de produto no eixo y e divide por Todos os Clientes. Ela retorna o conjunto de dados a seguir:
Todas as lojas |
A |
B |
C |
D |
|||
Todos os Produtos |
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 Vendas.
A: Consultando uma célula de cubo atômico
Uma consulta na medida Vendas 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 Vendas 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 Vendas coloca cada loja no eixo x, produtos aninhados nas categorias de produto no eixo y e divide por Todos os Clientes. Ela retorna o conjunto de dados a seguir:
Todas as lojas |
A |
B |
C |
D |
|||
Todos os Produtos |
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 Vendas.
A: Consultando uma célula de cubo atômico
Uma consulta na medida Vendas 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 Vendas 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 Vendas coloca cada loja no eixo x, produtos aninhados nas categorias de produto no eixo y e divide por Todos os Clientes. Ela retorna o conjunto de dados a seguir:
Todas as lojas |
A |
B |
C |
D |
|||
Todos os Produtos |
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 Vendas 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 Vendas 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 Vendas coloca cada loja no eixo x, produtos aninhados nas categorias de produto no eixo y e divide por Todos os Clientes. Ela retorna o conjunto de dados a seguir:
Todas as lojas |
A |
B |
C |
D |
|||
Todos os Produtos |
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 |
Contagem Distinta
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 Vendas, para cada cliente e grupo de clientes, quantos produtos distintos foram comprados? (Ou seja, para cada membro da dimensão Clientes, quantos membros distintos e de nível inferior da dimensão Produtos compartilham linhas da tabela de fatos?) Ou, por exemplo, em um cubo Visita ao Site, para cada visitante do site e grupo de visitantes do site, quantas páginas distintas do site foram visitadas? (Ou seja, para cada membro da dimensão Visitantes do Site, quantos membros distintos e de nível inferior da dimensão Páginas 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 rollup personalizado ou fórmulas de rollup 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 rollup personalizado ou fórmulas de rollup 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 Vendas 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 Vendas 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 Vendas coloca cada loja no eixo x, produtos aninhados nas categorias de produto no eixo y e divide por Todos os Clientes. Ela retorna o conjunto de dados a seguir:
Todas as lojas |
A |
B |
C |
D |
|||
Todos os Produtos |
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