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

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: Yandex [Bot]


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

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