powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Хитрая времязависимая сумма...
16 сообщений из 16, страница 1 из 1
Хитрая времязависимая сумма...
    #32482616
Alex Fox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MS SQL2K + MS AS
Попытаюсь объяснить в чем дело.
Есть энсколько магазинов в которых находится что?.. правильно, товар. Остатки в количественном выражении по дням получить совершенно не сложно. Весь гимор в следующем: существует времязависимый параметр - "Индикативная стоимость".
Т.е.
"Утюг с Верт.взлётом" на 1-янв стоит 55, на 1-фев 50, на 1-мар 53 ну и так далее.
Его остатки(Маг1) на 1-янв=15, на 2-янв=13.... на 01-мар=7, на 02-мар=7

"ВидеоМаг.с сурдопереводом" на 1-янв стоит 203, на 1-фев 201, на 1-мар 210 ну и так далее.
Его остатки(Маг1) на 1-янв=5, на 2-янв=5.... на 01-мар=3, на 02-мар=3

Задача - получать остатки в этой "Индикативной цене", т.е.
Код: plaintext
1.
2.
3.
4.
5.
6.
         01 -янв             02 -янв     .....      01 -мар             02 -мар
Маг_1   1840                1730                   1001                1001 
     ( 15 * 55 )+( 203 * 5 )   ( 13 * 55 )+( 203 * 5 )   ( 7 * 53 )+( 3 * 210 )  ( 7 * 53 )+( 3 * 210 )

Маг_2   ....
...
Маг_N

Надеюсь не слишком сумбурно получилось. В скобках - как число должно получится.

Что я уже сделал:
Выстроил вспомогательный куб с Инд. ценами - 2 Dim. "Товары" и "Даты", Measure "Инд.цена". На каждый день инд. цену имею. Есть Куб с остатками. Пытаюсь слепить виртуальный куб. Получаются 2 общих Dim-a "Товары" и "Даты". Осталась фигня - придумать как суммировать.
Так вот КАК СОБСТВЕННО ??? Может кто то подсказать светлую мысль?
Может вообще не в том направлении уродуюсь?

P.S. 2Jurij - Congos не предлагать, нет времени.
...
Рейтинг: 0 / 0
Хитрая времязависимая сумма...
    #32482622
Фотография Quark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если правильно понял:
можно хранить помимо количества на определенный день и Сумму по данному товару, тогда все будет считаться автоматом.
...
Рейтинг: 0 / 0
Хитрая времязависимая сумма...
    #32482651
Alex Fox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Quark
Не правильно.
Остатки я получаю накопительно. Т.е. в фактах у меня дельточки. Я не могу тамже держать эту гр@%&ную "Инд. цену".
Считать я должен именно так: [Остаток на дату]*[Инд.цена на дату]. Это не тоже самое что [Прих в янв]*[Инд.цена в янв]-[Расх в мар]*[Инд.цена в мар].
Надеюсь понятно обьяснил
...
Рейтинг: 0 / 0
Хитрая времязависимая сумма...
    #32482672
Фотография Quark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо, раз уж храните накопительно остатки, а это значит что у вас хранятся движения. То храните движения изменения индикативной цены(то есть переоценку) и тогда также можете считать ее как и остатки.
Подойдет?
...
Рейтинг: 0 / 0
Хитрая времязависимая сумма...
    #32482678
Jurii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Alex Fox:

P.S. 2Jurij - Congos не предлагать, нет времени.

Ну если вы хотите чтобы у вас и в будущем времени не было - Cognos предлагать не буду :)

P.S. (для текущих и будущих пользователей Cognos): Я подобные задачи решаю за счет того, что делаю в кубе 2 таблицы фактов (одну с дельтами, другую с ценами, цены либо на каждый день - либо -тоже дельты), в OLAP-клиенте налету вычисляю остатки (например в отчете вывожу все годы, последний год раскрываю в месяцы, последний месяц - в дни), под них подтаскиваю цены, и опять таки налету вычисляется произведение одного на другое...
...
Рейтинг: 0 / 0
Хитрая времязависимая сумма...
    #32482732
Alex Fox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Quark
Мысль интересная, но к сожалению, в моем случае, очень трудно реализуемая. "Инд. цена" сама по себе довольно хитротрахнутый алгоритм. Просто так зафиксировать переоценку весьма проблематично.

2 Jurii
Ради Бога не обижайтесь. Не со злым умыслом было сказано.
...
Рейтинг: 0 / 0
Хитрая времязависимая сумма...
    #32482744
Фотография Quark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если вы знаете индикативную цену на каждый день, то сделайте "виртуальные" документы в витрине данных меняющие эту цену.
...
Рейтинг: 0 / 0
Хитрая времязависимая сумма...
    #32482750
Дмитрий777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To Alex Fox

Что-то я не понял в чем проблема-то?
Делаете Calc. Measures примерно так:
Код: plaintext
1.
Iif([Time].CurrentMember.Level.Name =  "День" ,Measures.Остаток*Measure.ИндЦена, 0 )

Далее еще Calc. Measures для суммы:
Код: plaintext
1.
Sum(PeriodsToDate([Time].[(All)],[Time].CurrentMember),[Measures].[Наименование верхнего calc. measures])

Или не то нужно?
...
Рейтинг: 0 / 0
Хитрая времязависимая сумма...
    #32492943
Alex Fox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возвращаясь к напечатанному:
Куб содержащий инд.цены(dim-ы Товары(par-ch) и Время(time dim) Measure [Инд.цена]). Ранее было условие - цены меняются 1-го числа.
Т.е. можно было сотворить calc cell
Код: plaintext
1.
2.
CREATE CELL CALCULATION [CC] for '[Время].[День].members'
as
'iif(isEmpty(calculationpassvalue([measures].[Инд.цена],0)),([Время].FirstSibling,[measures].[Инд.цена]),calculationpassvalue([measures].[Инд.цена],0))'

плюс сответствующие Rollup Formul-ы на месяцах и годах и все работало шоколадно...
Но пришло время смены правил. Цена может менятся посреди месяца.
Т.е. приходится изображать что то вроде
Код: plaintext
1.
2.
CREATE CELL CALCULATION [CC] for '[Время].[День].members'
as
'iif(isEmpty(calculationpassvalue([measures].[Инд.цена],0)),([Время].PrevMember,[measures].[Инд.цена]),calculationpassvalue([measures].[Инд.цена],0))'

И как результат infinity recursion.
Замахался раставлять SOLVEORDER, CALC_PASS, CALC_DEPTH...
Блин... крышу рвет... помогите если не в облом.
Заранее спасибо.
...
Рейтинг: 0 / 0
Хитрая времязависимая сумма...
    #32493102
Jurii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Alex Fox:

Блин... крышу рвет... помогите если не в облом.
Заранее спасибо.


Это типа на Вашу крышу наехали и начались чисто конкретные разборки по понятиям? :)
P.S. Если эта задача так и не будет решена силами MDX, рекомендую вернуться к вопросу OLAP-клиента Cognos PowerPlay, он может быть подключен к Вашим кубам MS AS для создания сложных отчетов, в то время как другие пользователи будут работать с имеющимся у Вас OLAP-клиентом.
...
Рейтинг: 0 / 0
Хитрая времязависимая сумма...
    #32493209
OR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OR
Гость
Влезу и я со своим самоваром.

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

Все делал на хранилище данных в DTS.
Схема работы была такая:

1) Выборка прайсовых цен из таблицы товаров
SELECT ID, Data_Price, Price
Into #PriceHistory
FROM Product
ORDER BY ID, Data_Price DESC

2) В таб продаж вставляю прайсовую цену на дату отгрузки, выбирая из истории цен соответствующего товара цену с максимальной датой, меньшей, чем дата отгрузки.

UPDATE Sales
SET cena_price =
(SELECT Price FROM #PriceHistory
WHERE (ID = Sales.ID) AND (Data_Price = (
SELECT MAX(T.data_price) FROM #PriceHistory AS T
WHERE T.ID = Sales.ID AND (T.Data_price <= Sales.Data_sales))))


Аналогичную методу можно сделать и для остатков товаров.
Надеюсь, что хотя бы немного помог :)
...
Рейтинг: 0 / 0
Хитрая времязависимая сумма...
    #32493226
OR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OR
Гость
В конце последнего выражения добавить

FROM Sales,#PriceHistory


PS Плохо, что нет редактора сообщений.
...
Рейтинг: 0 / 0
Хитрая времязависимая сумма...
    #32493819
Alex Fox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Jurii
Ха-Ха-Ха как смешно.... блин.
Все равно за PP спасибо. Найду попробую.

2 OR
Хранение инд.цены в табл. фактов не даст толку. Это не прайс на дату-там кол-во*прайс и получили оборот, объём и т.д.
Мне надо высчитать кол-во, И ТОЛЬКО ПОТОМ результирующую сумму умножить на инд.цену данного дня.

Все равно вопрос остаётся - как заполнить "дыры", где нет данных, выбирая таковые с предыдущих дней.
Неужели никому не надо такое?

З.Ы. Все больше склоняюсь к мысли по проведению фиктивных переоценок в DW.
...
Рейтинг: 0 / 0
Хитрая времязависимая сумма...
    #32493885
OR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OR
Гость
ну, так я и имел в виду, что и остатки кол-ва и стоимость расчитывается в DWH, а в кубы подкачиваются уже готовые данные.
...
Рейтинг: 0 / 0
Хитрая времязависимая сумма...
    #32495107
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Alex Fox

Хранение инд.цены в табл. фактов не даст толку. Это не прайс на дату-там кол-во*прайс и получили оборот, объём и т.д.
Мне надо высчитать кол-во, И ТОЛЬКО ПОТОМ результирующую сумму умножить на инд.цену данного дня.

Все равно вопрос остаётся - как заполнить "дыры", где нет данных, выбирая таковые с предыдущих дней.
Неужели никому не надо такое?

З.Ы. Все больше склоняюсь к мысли по проведению фиктивных переоценок в DW.


IMHO задача сводится к классической бухгалтерской переоценке. И ложиться полностью на плечи DWH (Реляционного хранилища)

Так как у вас в таблице фактов хранятся только движения(в натуральном и в денежном выражении) то надо и дальше хранить только их, а по факту изменения цены генерировать движение в денежном выражении.

Приход = ОтстатокНаДатуИзмененияЦены * (ЦенаСтарая - ЦенаНовая)

Это имеет смысл, когда "переоценок" на порядок меньше, чем обычных движений вызванных основной деятельностью.

В случае же, когда частота изменения цен высокая (например "портфель акций") то имеет смысл изменить стратегию и проводить переоценку не по факту изменения цен, а с определенной периодичностью.
...
Рейтинг: 0 / 0
Хитрая времязависимая сумма...
    #32495115
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Juri

P.S. (для текущих и будущих пользователей Cognos): Я подобные задачи решаю за счет того, что делаю в кубе 2 таблицы фактов (одну с дельтами, другую с ценами, цены либо на каждый день - либо -тоже дельты), в OLAP-клиенте налету вычисляю остатки (например в отчете вывожу все годы, последний год раскрываю в месяцы, последний месяц - в дни), под них подтаскиваю цены, и опять таки налету вычисляется произведение одного на другое...

А как мне в Когносе такой отчетик сделать, чтоб смотреть историю изменения товарных запасов в индикативных ценах. По вашему для каждого выводимого месяца (недели) пользователю надо хорошо потрудиться мышкой.


Просветите как это Cognos "на лету" считает.

Например, если делать DrillDown по измерению отличному от Товара, то при вычислении денежных остатков, (вещественные остатки в штуках, метрах, тоннах и т.п. вряд ли кого интересуют в разрезе магазинов, складов, групп товара - это как средняя температура по палате) на День "Х" будут задействованы предрасчитанные аггрегаты.
Если же надо вывести стоимостные остатки в индикативных ценах "on the fly" то никуда не деться, как опуститься до аггрегаций по товару, получить по ним остаток на День "Х", перемножить на цену на День "Х" и аггрегировать до просматриваемого измерения.
И если у вас количество товаров в измерении на 3-4 порядка больше чем магазинов или складов, то боюсь, что вместо "on the fly" будет "on the crawl"
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Хитрая времязависимая сумма...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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