Tengo un problema que enfrento cada vez que decido construir un cubo, y todavía no he encontrado una manera de superarlo.
El problema es cómo permitir que el usuario defina una variedad de cosas automáticamente sin tener que codificarlas en la dimensión. Explicaré mi problema en un ejemplo.
Tengo una mesa llamada Clientes :
Estos son los datos de la tabla:
Quiero mostrar los datos en un estilo dinámico y agrupar el salario y la edad en rangos definidos como a continuación:
Escribí este script y definí los rangos:
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
Mis rangos están codificados y definidos. Cuando copio los datos a Excel y los veo en una tabla dinámica, aparece a continuación:
Mi problema es que quiero crear un cubo al convertir la tabla Clientes en una tabla de hechos y crear tablas de 2 dimensiones SalaryDim y AgeDim .
La tabla SalaryDim tiene 2 columnas ( SalaryKey, SalaryRange ) y la tabla AgeDim es similar ( ageKey, AgeRange ). Mi tabla de hechos del cliente tiene:
Customer
[CustId]
[CustName]
[AgeKey] --> foreign Key to AgeDim
[Salarykey] --> foreign Key to SalaryDim
Todavía tengo que definir mis rangos dentro de estas dimensiones. Cada vez que conecto un pivote de Excel a mi cubo, solo puedo ver estos rangos definidos codificados.
Mi pregunta es cómo definir rangos dinámicamente desde la tabla dinámica directamente, sin crear las dimensiones de rango como AgeDim y SalaryDim . No quiero quedarme solo en los rangos definidos en la dimensión.
El rango definido es '0-25', '26 -30 ', '31 - 50'. Es posible que desee cambiarlo a '0-20', '21 -31 ', '32 -42', etc., y los usuarios solicitan diferentes rangos cada vez.
Cada vez que lo cambio, tengo que cambiar la dimensión. ¿Cómo puedo mejorar este proceso?
Sería genial tener una solución implementada en el cubo, de modo que cualquier herramienta de cliente de BI que se conecte al cubo pueda definir los rangos, pero no me importaría si hay una buena manera de usar solo Excel.