Текущее время: Ср, авг 20 2025, 07:12

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




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: как отфильтровать записи по аттрибуту при трансформации
СообщениеДобавлено: Вт, июн 24 2008, 17:50 
Ассистент
Ассистент

Зарегистрирован:
Пн, май 05 2008, 11:17
Сообщения: 39
Допустим есть dso содержащее список городов со странами (признаки - город, страна). Признак город имеет аттрибут население. Нужно перелить данные в куб, с признаком - страна и показателем - кол-во городов. Но в куб нужно перелить только те города, у которых больше милионов жителей. Вопрос, как отфильтровать данные по значению АТТРИБУТА показателя из источника данных?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как отфильтровать записи по аттрибуту при трансформации
СообщениеДобавлено: Ср, июн 25 2008, 08:04 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, июл 03 2007, 10:26
Сообщения: 486
Откуда: Kazakhstan, Astana
Пол: Мужской
Если я правильно понял вопрос, то в правилах обновления из ODS в Куб для необходимого показателя Создаете подпрограмму. Что-то вроде
IF COMM_STRUCTURE-/BIC/ZPOPUP > 1 000 000.
RESULT = COMM_STRUCTURE-/BIC/ZPOPUP.
ELSE.
RETURNCODE = 1.
ENDIF.

_________________
"Great minds discuss ideas. Average minds discuss events. Small minds discuss people-Eleanor Roosevelt--Knowledge is to share, Keep it free, Keep sharing"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, июн 25 2008, 08:11 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Чт, май 26 2005, 11:36
Сообщения: 651
Откуда: Киев-Москва
1.Если вытащить жителей в ODS в виде навигационного атрибута, то задача бы вообще упростилась - фильтр на DTP по числу жителей и константа 1 в число городов. Агрегация на кубе даст результат.
2.Можно сделать expert routine на трансформации.
Идти по записям и удалять те, в которых счисло жителей меньше миллиона, а там, где больше, в выходную структуру писать страну и 1ку для числа городов. (тут прийдётся сделать select) В кубе все эти значения сагрегируются.
3.Ещё вариант - сделать семантический ключ по стране, чтобы в одном пакете данных попадали города одной страны и дальше по аналогии сделать отбор и подсчёт.

_________________
Рисую потоки данных.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как отфильтровать записи по аттрибуту при трансформации
СообщениеДобавлено: Ср, июн 25 2008, 08:14 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Чт, май 26 2005, 11:36
Сообщения: 651
Откуда: Киев-Москва
BORLAND написал:
IF COMM_STRUCTURE-/BIC/ZPOPUP > 1 000 000.
RESULT = COMM_STRUCTURE-/BIC/ZPOPUP.
ELSE.
RETURNCODE = 1.
ENDIF.
При таком варианте атрибут ZPOPUP должен быть в ODS, а в условии было, что он атрибут признака. Чтобы вытащить навигационный атрибут в ODS надо перелить ODS сам в себя с новым признаком.

_________________
Рисую потоки данных.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, июн 25 2008, 08:56 
Специалист
Специалист

Зарегистрирован:
Пн, июл 18 2005, 12:10
Сообщения: 169
Пол: Мужской
я бы сделал так:
Цитата:
2.Можно сделать expert routine на трансформации.
Идти по записям и удалять те, в которых счисло жителей меньше миллиона, а там, где больше, в выходную структуру писать страну и 1ку для числа городов. (тут прийдётся сделать select) В кубе все эти значения сагрегируются.

только без expert routine, а на обычной программе запуска, экспертная здесь не нужна. хотя...если учесть что залить нужно всего 1 признак и 1 показатель, можно и экспетрную.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, июн 25 2008, 09:40 
Ассистент
Ассистент

Зарегистрирован:
Пн, май 05 2008, 11:17
Сообщения: 39
Спасибо за советы.
Я <я не знать русский языка>, только учусь, абап не знаю, сделать нужно быстро.
проблема действительно в том , что фильтровать нужно по значению аттрибута признака, а не по самому признаку.
Zharik написал(а):
1.Если вытащить жителей в ODS в виде навигационного атрибута, то задача бы вообще упростилась - фильтр на DTP по числу жителей и константа 1 в число городов. Агрегация на кубе даст результат.

спасибо за идею, попробую.
Zharik написал(а):
2.Можно сделать expert routine на трансформации.
Идти по записям и удалять те, в которых счисло жителей меньше миллиона, а там, где больше, в выходную структуру писать страну и 1ку для числа городов. (тут прийдётся сделать select) В кубе все эти значения сагрегируются.

это понятно, что можно в подпрограмме старта удалить все записи. Но у меня проблема возникла как обратитьсяк атрибуту в коде? Можно пример кода если не сложно?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, июн 25 2008, 17:59 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Чт, май 26 2005, 11:36
Сообщения: 651
Откуда: Киев-Москва
код имеет примерно такой вид:
Цитата:
data: wa type _ty_s_TG_1.
data: populat type /BIC/OYZPOPUP. " тип данных, такой как в инфообъекте населения
LOOP AT RESULT_PACKAGE into wa. " просматриваем входные записи
Select single /BIC/ZPOPUP from /BIC/MZCOUNTRY " популяция из инфообъекта "страны"
INTO populat
where /BIC/ZCOUNTRY = wa-/BIC/ZCOUNTRY " для страны
and /BIC/ZCITY = wa-/BIC/ZCITY " и города страны
and objvers = 'A'. " указание брать активную версию даных
IF sy-subrc = 0 and populat > 1000000.
wa-/bic/zflag = 1.
ELSE.
wa-/bic/zflag = 0.
ENDIF.
MODIFY RESULT_PACKAGE from wa.
ENDLOOP.
В этом примере для городов-миллиоников в какой-то инфо объект zflag пишем 1-ку. Суммирование 1-к даст число городов-миллиоников. Посадите рядом ABAPера и скажите куда вставить код и из каких таблиц необходимо выбрать. Он сделает и Вас научит.

Пока мудрил этот код - подумал. Если необходимо только число городов-миллиоников, то в качестве источника трансформации можно взять не ODS какой-то, а сам инфо-объект "город". Подразумеваю, что город должен иметь в соединении страну. Тогда обычная трансформация и никакого кодирования, в принципе то, к чему надо стремиться. Такой вариант не рассматривали?

_________________
Рисую потоки данных.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июн 26 2008, 09:43 
Ассистент
Ассистент

Зарегистрирован:
Пн, май 05 2008, 11:17
Сообщения: 39
спасибо большое! )
пример с городами надуман, это аналогия, реально задача сложнее. Вопрос был в том, как фильтрануть по значению аттрибута -)
если б не нехватка времени, разобрался бы сам, а так, еще раз спасибо за помощь )


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

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


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

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


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

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