powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Хитрое Измерение
4 сообщений из 4, страница 1 из 1
Хитрое Измерение
    #32431935
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемые мэтры ОЛАП.
Я столкнулся со сдледующей задачкой применительно к MS AS.

В таблице фактов есть поле, в котором встречаются 3 значения, предположим
это "A", "B" и "C". Необходимо построить измерение, в котором на следующем уровне иерахии будут 2 элемента "A+B", "B+C". All-член в измерении отсутвует, точнее "A+B" и "B+C" это 2 вида на All-член, т.к. "A" и "С" в некотором роде тождественны для некотых мер, но не всех.

Задача хоть и сформулирована абстрактно, но имеет реальное бизнес приложение, а именно: "Продажи комплектов". Виды записей в таблице фвктов: "позиция в составе комплекта" - "A", "отдельно проданная позиция" - "B", "коплект" - "C".
Для меры "Сумма продаж" имеет место тождество:
"Сумма продаж"("A")="Сумма продаж"("C")

Я нашел для вышеизложенного следуюсчее решение, которое хоть и работающее (крутится у заказчика более года), но оно мне не очень нравится :-(

Решение.

Строится таблица измерения в следующем сиде

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE TABLE MyDim(
  LeafMemberKey int,
  FactTableKey char( 1 ),
  ParentMemberKey char( 3 )
  CONSTRAINT PK_MyDim PRIMARY KEY (LeafMemberKey) 
)

GO
INSERT INTO MyDim( 0 , 'A', 'A+B')
INSERT INTO MyDim( 1 , 'B', 'A+B')
INSERT INTO MyDim( 2 , 'B', 'B+C')
INSERT INTO MyDim( 3 , 'C', 'B+C')
GO


Соединение с таблицей фактов осущестляется по полю FactTableKey.
Таким образом в Кубе получается больше записей чем в ТаблицеФактов - и это главный на мой взгляд "-". Второй "-" это то, что соединение осуществляется не по PRIMARY KEY таблицы измерения - "отход от генеральной линии в идеологии проэктирования".
Но как "+" получаем то, что данные в кубе аггрегированы и никаких Calculated Member со всеми их "-".

Есть ли у кого какие предложения решить эту задачу другим способом?
Буду раз услышать любую конструктивную критику и совет.
...
Рейтинг: 0 / 0
Хитрое Измерение
    #32432178
OR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OR
Гость
Я не мэтр, но как вариант:
Если число "комплектов" ограничено и невелико, в принципе можно построить view, где с использованием оператора CASE формировать верхний уровень.
Решение тоже негибкое, но альтернативное.
...
Рейтинг: 0 / 0
Хитрое Измерение
    #32433296
Владимир Иванов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это скорее к MS SQL.

Можно заполнить SQL-запросом с умножением таблиц.
Типа
select ... from Tbl1, Tbl2

Результат - умножение, т.к. нет join. В вашем случае tbl1=tbl2

Если это задача на корзинку покупателей, лучше делать через distinct count или через кластер, а лучше дерево решений. Из кластера можно тоже слать вирт. измерение.
...
Рейтинг: 0 / 0
Хитрое Измерение
    #32433362
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Ivanovu i OR

Gospoda, a ne mogli bi vi, pozhaluista, izlozhit vashi idei po-konkretnee.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Хитрое Измерение
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]