У меня есть проблема, с которой я сталкиваюсь каждый раз, когда решаю построить куб, и я пока не нашел способа ее преодолеть.
Проблема заключается в том, как позволить пользователю автоматически определять диапазон вещей без необходимости жестко их кодировать в измерении. Я объясню мою проблему на примере.
У меня есть таблица под названием « Клиенты» :
это данные в таблице:
Я хочу отобразить данные в сводном стиле и сгруппировать зарплату и возраст в определенных диапазонах, как показано ниже:
Я написал этот скрипт и определил диапазоны:
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
Мои диапазоны жестко закодированы и определены. Когда я копирую данные в Excel и просматриваю их в сводной таблице, они выглядят так:
Моя проблема заключается в том, что я хочу создать куб путем преобразования таблицы « Клиенты» в таблицу фактов и создания двух таблиц измерений SalaryDim и AgeDim .
Таблица SalaryDim имеет 2 столбца ( SalaryKey, SalaryRange ), а таблица AgeDim аналогична ( ageKey, AgeRange ). Моя таблица фактов о клиентах имеет:
Customer
[CustId]
[CustName]
[AgeKey] --> foreign Key to AgeDim
[Salarykey] --> foreign Key to SalaryDim
Я все еще должен определить свои диапазоны в этих измерениях. Каждый раз, когда я подключаю ось Excel к своему кубу, я вижу только эти жестко заданные диапазоны.
Мой вопрос заключается в том, как динамически определять диапазоны из сводной таблицы, не создавая измерения диапазонов, такие как AgeDim и SalaryDim . Я не хочу застрять только в диапазонах, определенных в измерении.
Определенный диапазон: «0-25», «26-30», «31-50». Я мог бы хотеть изменить это на '0-20', '21 -31', '32 -42 'и так далее, и пользователи каждый раз запрашивают разные диапазоны.
Каждый раз, когда я изменяю это, я должен изменить измерение. Как я могу улучшить этот процесс?
Было бы здорово иметь решение, реализованное в кубе, чтобы любой клиентский инструмент BI, который подключается к кубу, мог определять диапазоны, но я бы не стал возражать, если есть хороший способ использования только Excel.
источник
С помощью языка MDX вы можете создавать собственные элементы, которые будут определять диапазоны. Следующее выражение определило вычисляемого члена, который представляет все зарплаты от 501 до 1000:
Вы можете сделать то же самое с измерением возраста:
В этой статье объясняется, как добавлять вычисляемые элементы тезисов в Excel (см. Раздел « Создание вычисляемых элементов / мер и наборов в сводных таблицах OLAP Excel 2007 »). К сожалению, в Excel нет интерфейса для этого. Тем не менее, вы можете найти клиентов BI, которые поддерживают язык MDX , который позволяет определять ваши диапазоны в запросах.
источник
Salary
иAge
измерении.