Tenho um problema que enfrento toda vez que decido construir um cubo e ainda não encontrei uma maneira de superá-lo.
A questão é como permitir que o usuário defina uma série de coisas automaticamente, sem a necessidade de codificá-las na dimensão. Vou explicar meu problema em um exemplo.
Eu tenho uma tabela chamada Customers :
estes são os dados na tabela:
Eu quero exibir os dados em um estilo dinâmico e agrupar o salário e a idade em intervalos definidos, como abaixo:
Eu escrevi este script e defini os intervalos:
SELECT [CustId]
,[CustName]
,[Age]
,[Salary]
,[SalaryRange] = case
when cast(salary as float) <= 500 then
'0 - 500'
when cast(salary as float) between 501 and 1000 then
'501 - 1000'
when cast(salary as float) between 1001 and 2000 then
'1001 - 2000'
when cast(salary as float) > 2000 then
'2001+'
end,
[AgeRange] = case
when cast(age as float) < 15 then
'below 15'
when cast(age as float) between 15 and 19 then
'15 - 19'
when cast(age as float) between 20 and 29 then
'20 - 29'
when cast(age as float) between 30 and 39 then
'30 - 39'
when cast(age as float) >= 40 then
'40+'
end
FROM [Customers]
GO
Meus intervalos são codificados e definidos. Quando copio os dados para o Excel e os vejo em uma tabela dinâmica, eles aparecem como abaixo:
Meu problema é que eu quero criar um cubo convertendo a tabela Customers em uma tabela de fatos e criar 2 tabelas de dimensão SalaryDim & AgeDim .
A tabela SalaryDim possui 2 colunas ( SalaryKey, SalaryRange ) e a tabela AgeDim é semelhante ( ageKey, AgeRange ). A tabela de fatos Meu cliente possui:
Customer
[CustId]
[CustName]
[AgeKey] --> foreign Key to AgeDim
[Salarykey] --> foreign Key to SalaryDim
Ainda tenho que definir meus intervalos dentro dessas dimensões. Sempre que conecto um pivô do Excel ao meu cubo, só consigo ver esses intervalos definidos codificados.
Minha pergunta é como definir intervalos dinamicamente diretamente da tabela dinâmica, sem criar as dimensões do intervalo, como AgeDim e SalaryDim . Não quero ficar preso apenas aos intervalos definidos na dimensão.
O intervalo definido é '0-25', '26 -30 ', '31 - 50'. Talvez eu queira alterá-lo para '0-20', '21 -31 ', '32 -42' e assim por diante, e os usuários solicitam intervalos diferentes a cada vez.
Toda vez que eu mudo, tenho que mudar a dimensão. Como posso melhorar esse processo?
Seria ótimo ter uma solução implementada no cubo, para que qualquer ferramenta de cliente de BI que se conecta ao cubo possa definir os intervalos, mas não me importaria se existe uma boa maneira de usar somente o Excel.
fonte
Com a linguagem MDX, você pode criar membros personalizados que definirão os intervalos. A expressão a seguir definiu um membro calculado que representa todos os salários entre 501 e 1000:
Você pode fazer o mesmo com a dimensão da idade:
Este artigo explica como adicionar membros calculados a teses no Excel (consulte a seção ' Criando membros / medidas e conjuntos calculados nas tabelas dinâmicas OLAP do Excel 2007 '). Infelizmente, não há interface do usuário no Excel para isso. No entanto, você pode encontrar clientes de BI compatíveis com a linguagem MDX , que permitem definir seus intervalos nas consultas.
fonte
Salary
eAge
.