Текущее время: Вс, авг 24 2025, 01:21

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: FOX формула в BI-IP
СообщениеДобавлено: Вт, сен 25 2012, 16:23 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, фев 08 2010, 13:11
Сообщения: 55
есть простенькая задачка (правда решить не получается :) ): мультикуб = куб1+куб2. куб1 - реального времени, ввод данных в него руками. куб2 - расчетный, на основе данных куба1. в кубе1 есть некий показатель, условно количество ящиков с арбузами. также в куб1 вводятся коэффициенты пересчета ящиков в арбузы (т.е. в разное время года в ящик может поместиться разное кол-во арбузов).
Нужно пересчитать в куб2 из кол-ва ящиков в количество арбузов, умножив кол-во ящиков из куба1 на соответсвующий коэф. в кубе1. Нарисовал формулу:

Code:
DATA ZDAY TYPE 0CALDAY.
DATA ZKOEF TYPE I.
DATA ZUNIT1 TYPE ZUNIT.
DATA ZUNIT2 TYPE ZUNIT.
DATA ZPOKAZ1 TYPE ZPOKAZ.
DATA ZPOKAZ2 TYPE ZPOKAZ.
DATA ZPOKAZ3 TYPE ZPOKAZ.

ZDAY = VARV(ZKEY_DAT).

ZUNIT1 = 'BOX'.
ZUNIT2 = 'ST'.
ZPOKAZ1 = '010'.
ZPOKAZ2 = '020'.
ZPOKAZ3 = 'K01'.

ZKOEF =  {0QUANTITY, #, ZUNIT2, 'ZCUBE1', ZPOKAZ3}.

{ 0QUANTITY, ZDAY, ZUNIT2, 'ZCUBE2', ZPOKAZ2 } = { 0QUANTITY, #, ZUNIT1, 'ZCUBE1', ZPOKAZ1 } * ZKOEF.



в последов-и планирования указываю фильтр в котором стоят год, месяц, день.
в куб поступает 0 записей.
что не так?
p/s/ подозреваю, что коэф. как-то неправильно вычисляю. он один, а записей несколько. если подозрения верно, то как лучше вытащить коэф-т?


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: FOX формула в BI-IP
СообщениеДобавлено: Вт, сен 25 2012, 17:05 
Почетный гуру
Почетный гуру

Зарегистрирован:
Чт, фев 03 2005, 10:18
Сообщения: 503
А куб2 - транзакционный или базовый?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: FOX формула в BI-IP
СообщениеДобавлено: Вт, сен 25 2012, 17:22 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, фев 08 2010, 13:11
Сообщения: 55
куб2 такой же как и куб1. но дело то не в кубе. другие функции работаю, данные складывают.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: FOX формула в BI-IP
СообщениеДобавлено: Вт, сен 25 2012, 17:31 
Почетный гуру
Почетный гуру

Зарегистрирован:
Чт, фев 03 2005, 10:18
Сообщения: 503
При выполнении последовательности планирования с трассировкой блоки данных вообще формируются?
Может быть у Вас на уровне еще какие-то признаки есть, по которым показатель и коэфф. лежат на разных значениях?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: FOX формула в BI-IP
СообщениеДобавлено: Ср, сен 26 2012, 06:47 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, дек 18 2008, 07:37
Сообщения: 256
А у вас имеется в кубе1 запись показателя 0QUANTITY с неприсвоенным признаком 0CALDAY? Или куб1 вообще не имеет признака 0CALDAY, только куб2?

_________________
The extent of reliability of the data affect on the quality of resource allocation.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: FOX формула в BI-IP
СообщениеДобавлено: Ср, сен 26 2012, 08:10 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, фев 08 2010, 13:11
Сообщения: 55
Air_demon написал(а):
При выполнении последовательности планирования с трассировкой блоки данных вообще формируются?
Может быть у Вас на уровне еще какие-то признаки есть, по которым показатель и коэфф. лежат на разных значениях?


Блоки с сылочными данными формируются. Судя по трассировке формируется 6 блоков, и только в первом коэф. считывается верно, в остальных он равен нулю. Собственно в первом блоке коэф. есть, а в остальных данные.

ken написал(а):
А у вас имеется в кубе1 запись показателя 0QUANTITY с неприсвоенным признаком 0CALDAY? Или куб1 вообще не имеет признака 0CALDAY, только куб2?


Да, такие записи имеются. День присваивается в формуле и записывается в куб2. А не должно быть с неприсвоенным днем? или вообще лучше удалить этот признак из куба1?


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: FOX формула в BI-IP
СообщениеДобавлено: Ср, сен 26 2012, 08:53 
Почетный гуру
Почетный гуру

Зарегистрирован:
Чт, фев 03 2005, 10:18
Сообщения: 503
ploshka написал(а):
Собственно в первом блоке коэф. есть, а в остальных данные.

Именно по этому у Вас и не считается, так как коэф и данные не попадают в один блок для расчета.
Посмотрите внимательно какими значениями признаков различаются эти блоки, может быть стоит ввести этот признак(и) в операнд формулы или обратиться к ним через ссылочные данные.
0CALDAY - если он и у исходных данных и у коэфф. равен #, никак не будет влиять на выполнение формулы. Можно не удалять его из куба.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: FOX формула в BI-IP
СообщениеДобавлено: Ср, сен 26 2012, 09:21 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, фев 08 2010, 13:11
Сообщения: 55
Air_demon написал(а):
Посмотрите внимательно какими значениями признаков различаются эти блоки, может быть стоит ввести этот признак(и) в операнд формулы или обратиться к ним через ссылочные данные.


Добавил два признака: номер клиента и еще один показатель. Получилось так:

Code:
ZKOEF =  {0QUANTITY, #, #, ZUNIT2, 'ZCUBE1', ZPOKAZ3, #}.

{ 0QUANTITY, ZDAY, #,  ZUNIT2, 'ZCUBE2', ZPOKAZ2, #} = { 0QUANTITY, #, #,  ZUNIT1, 'ZCUBE1', ZPOKAZ1, # } * ZKOEF.


Теперь данные попадают в один блок, вижу при трассировке в одном блоке и коэф. и данные, но записи в куб2 не вставляются, столбец "Индикатор изменений" пустой. :( :?:


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: FOX формула в BI-IP
СообщениеДобавлено: Ср, сен 26 2012, 09:52 
Почетный гуру
Почетный гуру

Зарегистрирован:
Чт, фев 03 2005, 10:18
Сообщения: 503
ploshka написал(а):
Добавил два признака: номер клиента и еще один показатель. Получилось так:

Code:
ZKOEF =  {0QUANTITY, #, #, ZUNIT2, 'ZCUBE1', ZPOKAZ3, #}.

{ 0QUANTITY, ZDAY, #,  ZUNIT2, 'ZCUBE2', ZPOKAZ2, #} = { 0QUANTITY, #, #,  ZUNIT1, 'ZCUBE1', ZPOKAZ1, # } * ZKOEF.


Теперь данные попадают в один блок, вижу при трассировке в одном блоке и коэф. и данные, но записи в куб2 не вставляются, столбец "Индикатор изменений" пустой. :( :?:


Меня смущает, то что как Вы говорите, данные стали попадать в один блок (хотя раньше не попадали) и при этом во всех частях формулы у новых признаков (добавленных в операнд) одно и то же значение - #.
Скорее всего данные лежат у Вас по разным значениям признаков "номер клиента и еще один показатель" иначе бы они и до включения их в операнд попадали в один блок данных.
Проверьте внимательно лежат ли данные и коэфф. на # по вновь добавленным в операнд признакам.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: FOX формула в BI-IP
СообщениеДобавлено: Ср, сен 26 2012, 10:22 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, фев 08 2010, 13:11
Сообщения: 55
На данный момент добился того, что при трассировке вижу исходные данные, вижу коэф. всё это в одном блоке.
При этом показатель {0QUANTITY} в цикле FOREACH возвращает 0. Сам цикл работает и перебирает все записи ZCUST (Проверил поставив в цикле переменную, которая при каждом инкрементировании добавлялась к показателю и увеличивалась на 1. на выходе получил несколько измененных записей соответсвующих количеству записей ZCUST).

Code:
DATA ZDAY TYPE 0CALDAY.
DATA ZKOEF TYPE I.
DATA ZUNIT1 TYPE ZUNIT.
DATA ZUNIT2 TYPE ZUNIT.
DATA ZPOKAZ1 TYPE ZPOKAZ.
DATA ZPOKAZ2 TYPE ZPOKAZ.
DATA ZPOKAZ3 TYPE ZPOKAZ.
DATA ZCUST TYPE 0CUSTOMER.
DATA ZUSEIT TYPE ZUSEIT.

ZDAY = VARV(ZKEY_DAT).
ZUNIT1 = 'BOX'.
ZUNIT2 = 'ST'.
ZPOKAZ1 = '010'.
ZPOKAZ2 = '020'.
ZPOKAZ3 = 'K01'.

ZKOEF =  {0QUANTITY, #, ZUNIT2, #, 'ZCUBE1', ZPOKAZ3, #}.

FOREACH ZCUST IN REFDATA.
   { 0QUANTITY, ZDAY, ZUNIT2, ZCUST, 'ZCUBE2', ZPOKAZ2, ZUSEIT } = { 0QUANTITY, #, ZUNIT1, ZCUST, 'ZCUBE1', ZPOKAZ1, ZUSEIT } * ZKOEF.
ENDFOR.


Так выглядит таблица трассировки:
Code:
Ряд | Данные | Инд.изм | Кол-во | ZUSEIT | Клиент | ZPOKAZ | День      | ЕИ | Инфопровайдер
--------------------------------------------------------------------------------------------
1   | Ссылоч.|         | 2      |#       |#       |K01     | #         |ST  |ZCUBE1
2   | Ссылоч.|         | 1000   |10      |1000    |010     | #         |BOX |ZCUBE1
3   | Ссылоч.|         | 1500   |11      |1001    |010     | #         |BOX |ZCUBE1
4   | Ссылоч.|         | 1200   |12      |1179    |010     | #         |BOX |ZCUBE1


Air_demon написал(а):
Скорее всего данные лежат у Вас по разным значениям признаков "номер клиента и еще один показатель" иначе бы они и до включения их в операнд попадали в один блок данных.
Проверьте внимательно лежат ли данные и коэфф. на # по вновь добавленным в операнд признакам.

Значение признака ZCUST (номер клиента) у данных различное. У коэф. этот признак пустой. Второй показатель ZUSEIT у данных одинаковый, у коэф. отличается от данных.
Может поэтому нулевое значение {0QUANTITY} возвращает?


Последний раз редактировалось ploshka Ср, сен 26 2012, 10:39, всего редактировалось 1 раз.

Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: FOX формула в BI-IP  Тема решена
СообщениеДобавлено: Ср, сен 26 2012, 10:38 
Почетный гуру
Почетный гуру

Зарегистрирован:
Чт, фев 03 2005, 10:18
Сообщения: 503
ploshka написал(а):

Значение признака ZCUST (номер клиента) у данных различное. У коэф. этот признак пустой. Второй показатель ZUSEIT у данных одинаковый, у коэф. отличается от данных.
Может поэтому нулевое значение {0QUANTITY} возвращает?


Ну да Вы пытались считать данные с разреза. в котором их нет.
А когда поставили цикл, FOX пробежал по ним сам.
Вот только не ясно какое значение в Вас принимает ZUSEIT, он не меняется в цикле и не задается Вами напрямую.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: FOX формула в BI-IP
СообщениеДобавлено: Ср, сен 26 2012, 11:05 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, фев 08 2010, 13:11
Сообщения: 55
Air_demon написал(а):
Вот только не ясно какое значение в Вас принимает ZUSEIT, он не меняется в цикле и не задается Вами напрямую

Да, согласен. Значение меняться не должно, мне его просто перенести в куб2 надо. Но если его исключить из операндов формулы, то коэф. и данные получаются в разных блоках. Включил ZUSEIT в цикл:

Code:
FOREACH ZCUST, ZUSEIT IN REFDATA.
   { 0QUANTITY, ZDAY, ZUNIT2, ZCUST, 'ZCUBE2', ZPOKAZ2, ZUSEIT } = { 0QUANTITY, #, ZUNIT1, ZCUST, 'ZCUBE1', ZPOKAZ1, ZUSEIT } * ZKOEF.
ENDFOR.


И всё заработало. Спасибо :)


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB