Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / OLAP и DWH Новый топик    Ответить
 Данные из разных кубов последовательно  [new]
Mihich
Member

Откуда:
Сообщений: 44
Задача поставлена такая: есть куб с данными с 2010 года. Нативные данные для куба есть только с осени 2017 года. В куб нужно внести новое измерение. Соответственно, для сохранения старых данных, нужно делать новый куб. НООО!!!!!! надо сделать так чтобы конечный пользователь не увидел наличия двух кубов (до даты и после даты) и объединить два куба в один. Брать в этот куб данные до определенной даты из первого, а после этой даты из второго. Условно с 1 января 2019 года
17 сен 18, 14:13    [21676889]     Ответить | Цитировать Сообщить модератору
 Re: Данные из разных кубов последовательно  [new]
Mihich
Member

Откуда:
Сообщений: 44
Можно ли такое сделать?
17 сен 18, 14:14    [21676890]     Ответить | Цитировать Сообщить модератору
 Re: Данные из разных кубов последовательно  [new]
vikkiv
Member

Откуда: London
Сообщений: 1704
Mihich,

можно и объединив в один (вытащить данные из предыдущего куба в новый, один раз, но медленно, и периодически придётся перевытаскивать если на измерениях с длинными текстами processupdate стоит и часто и много в них обновляется, т.к. иначе измерение начнёт глючить/тормозить) и на разных кубах (несколькими методами: LookupCube и Linked Measure Group / {New Linked Object на мерах в проекте куба} a потом MDX скриптами внутри соединить в одну меру).
Причём на разных кубах есть вариант когда оба исходных куба разные, а так-же когда последний куб - основной, а архивный - вспомогательный (связанный, из другой базы).

дальше от размеров и нагрузки зависит - такие реализации обычно относительно медленные т.к. работают во первых в поклеточном режиме, а во вторых для оценки каждой новой клетки запускается отдельный запрос (соответственно их может быть тысячи и сотни тысяч)
17 сен 18, 14:48    [21676956]     Ответить | Цитировать Сообщить модератору
 Re: Данные из разных кубов последовательно  [new]
Mihich
Member

Откуда:
Сообщений: 44
А можно по подробнее с вытаскиванием данных?
17 сен 18, 15:34    [21677060]     Ответить | Цитировать Сообщить модератору
 Re: Данные из разных кубов последовательно  [new]
vikkiv
Member

Откуда: London
Сообщений: 1704
Mihich,

от размеров зависит, генерируешь поток запросов на листовой гранулярности (ключи/меры) и так партицию за партицией обратно в DWH
если даже партиции большие - бьёшь на более мелкие куски как удобнее (другие измерения/атрибуты не участвующие в определении SLICE партиции {хотя косвенно в метаданных всё равно будет}),
например у тебя пратиции по год-месяцам, можно ещё добавить по департаментам или по городам или по поставщикам и т.д.
17 сен 18, 15:52    [21677101]     Ответить | Цитировать Сообщить модератору
 Re: Данные из разных кубов последовательно  [new]
Mihich
Member

Откуда:
Сообщений: 44
правильно ли я понимаю:
1) берем Integration Services
2) создаем пакет
3) в нем создаем подключение к кубу и SQL базе
4) добавляем Задачу поток данных
5) входной поток данных из куба Источник "OLE DB"
6) выходной поток в SQL базу Назначение "OLE DB"

Так?

вот теперь самое интересное: если я тупо беру в входном потоке указываю куб и выбираю таблицы, то там только измерения (( основных кубов нет(((
Если писать MDX запрос, то куда его вставлять?

Если можно пример

таблица фактов поля: nom_pred(int), Nerror(int), timekey(int) и два измерения: Время и Ошибка
SQL соответствует таблице фактов
21 сен 18, 07:51    [21681569]     Ответить | Цитировать Сообщить модератору
 Re: Данные из разных кубов последовательно  [new]
vborets
Member

Откуда:
Сообщений: 140
Mihich,

В редакторе источника выбираешь соединение с AS сервером OLE DB

Режим доступа - команда SQL в переменной.

В переменную закидываешь MDX запрос.
21 сен 18, 14:17    [21681998]     Ответить | Цитировать Сообщить модератору
 Re: Данные из разных кубов последовательно  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 2750
Mihich
А можно по подробнее с вытаскиванием данных?


Можно. Берете группу мер, одну, смотрите, с какими измерениями помимо измерения даты она связана, выписываете названия ключевых атрибутов. И пишете SQL запрос поверх openquery, внутри которого MDX запрос, вытягивающий с фильтром WHERE для одной даты (в цикле перебираете от минимальной даты из фактов до максимальной), со всеми физическими мерами и со всеми ключевыми атрибутами используемых измерений. Если помимо простых мер (агрегация SUM есть много last non emty/first child) - перебираете их отдельно, чтобы нули не записывать на каждую из дат внутри, например, приход есть в штуках на 1,2,3 января, ценник на 2, выдергиваете раздельно в 2 таблицы, затем подумаете, как соединить обратно в одну таблицу для новой группы мер, в которой есть новое измерение (которого раньше не было в кубе).

Ну и так одну группу мер за другой, каждую в плоскую таблицу SQL, затем подсоединяете столбец с ключом нового измерения - и обратно, в новый куб с таким же названием группы мер и такими же названиями мер. Чтобы упростить процесс.

Вопросы?
21 сен 18, 14:24    [21682021]     Ответить | Цитировать Сообщить модератору
 Re: Данные из разных кубов последовательно  [new]
Mihich
Member

Откуда:
Сообщений: 44
Ух. СПАСИБО БОЛЬШОЕ. Начинаю осваивать. Суть с простыми мерами понял. Дальше буду спрашивать по мере вытягивания данных
24 сен 18, 19:39    [21684551]     Ответить | Цитировать Сообщить модератору
 Re: Данные из разных кубов последовательно  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 2750
Mihich
Ух. СПАСИБО БОЛЬШОЕ. Начинаю осваивать. Суть с простыми мерами понял. Дальше буду спрашивать по мере вытягивания данных

Почему полезно вытягивать в 2 разные таблицы меры из одной и той же группы мер, если агрегация разная.

Поясню. Допустим, у Вас есть строки с продажами и тут же последними ценниками себестоимости. 1 января 10 штук, розничная цена 10 шекелей, оборот 100 шекелей, на тот момент мера last-non-empty для ценника себестоимости была 7 шекелей, маржа на операции 10x(10-7)=30 шекелей, 2 января назначена новая цена себестоимости в 8 шекелей вместо 7, продаж не было, строка дает 0 штук и 0 розницы и 7 шекелей цены, 3 января ничего нет, 4 января снова 10 штук, снова розничная 10, оборот 100 шекелей, цена себестоимости не поменялась, поэтому 8 шекелей в отдельной мере.

И вот Вы начинаете выгрузку из OLAP куба в плоскую таблицу. Чтобы выгрузить - Вы берете non empty ограничение по мере в штуках и получаете строки от 1 и 3 января. Но не увидите строку от 2 января, когда поменялся ценник.

Затем у Вас появится новое измерение "дата изменения цены поставщика". Понятно, что для строки 3 января нужно привязать новое измерение ко 2 января, а для строки 1 января новое измерение к декабрю прошлого года. Но у Вас этой информации для такого расчета не будет.
А вот если есть отдельная таблица фактов продаж и отдельная таблица истории цен себестоимости - тогда да, таки можно будет правильно новое измерение привязать.

Понимаете, в чем цимес? Поэтому нужно сесть вместе с бизнесом и подумать, стоит ли игра свеч, какая информация может быть потеряна при таком или другом алгоритме выгрузки обратно из OLAP в SQL.
24 сен 18, 19:47    [21684558]     Ответить | Цитировать Сообщить модератору
 Re: Данные из разных кубов последовательно  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 2750
Andy_OLAP,

То есть для строки 4 января найти привязку к дате изменения 2 января, строк в 3 января никаких нет, опечатался.
24 сен 18, 19:49    [21684563]     Ответить | Цитировать Сообщить модератору
 Re: Данные из разных кубов последовательно  [new]
Mihich
Member

Откуда:
Сообщений: 44
Спасибо. Понял. Буду учитывать.
25 сен 18, 08:36    [21684932]     Ответить | Цитировать Сообщить модератору
 Re: Данные из разных кубов последовательно  [new]
Mihich
Member

Откуда:
Сообщений: 44
Спасибо. Получилось
27 сен 18, 11:10    [21687913]     Ответить | Цитировать Сообщить модератору
Все форумы / OLAP и DWH Ответить