Текущее время: Пн, июн 23 2025, 15:13

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




Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: Вариант решения задачи
СообщениеДобавлено: Пн, сен 19 2011, 12:29 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Сб, сен 03 2011, 08:51
Сообщения: 100
Пол: Мужской
Добрый день!

Столкнулся с такой задачей (уже решил, но в лоб).

Суть такая. Есть записи в кубе:

Номер__________Телефон_____________Адрес
10_____________8(123)4567813________ул. Ленина
20_____________8(123)4567825________ул. Садовая
20_____________*____________________ул. Мира
20_____________8(123)4567834_________ул. Советская
40__________________________________ул. Новосадовая


Запрос должен выводить нам в финале такие записи:
Номер__________% Телефон_____________% Адрес
10_____________100%__________________100%
20_____________67% __________________100%
40_____________0%_____________________100%

Тоесть процент заполнения по каждой позиции.

Как сделал я. Сделал запрос на вывод всех данных в Sheet2 (Data), написал VBA цикл, который проходит по каждой записи, вычисляет группу элементов с одинаковым номером, проверяет поля на заполнимость и различные другие исключения и формирует уже отчет в Sheet1 (Report).

Все это хорошо и работает даже быстро, не смотря на то, что в реальном примере около 20 столбов с данными.

Но если делать отчет за месяц, то выводится около 4000 записей. А если делать за год, то очень долго будет все работать.

Как бы эту задачу оптимизировать лучше? Знания BW минимальны)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вариант решения задачи
СообщениеДобавлено: Пн, сен 19 2011, 19:39 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, окт 11 2005, 12:10
Сообщения: 687
Откуда: Москва
Пол: Мужской
Проще и надежнее всего проверять заполнение при загрузке и записывать в 20 показателей 0 или 1, ну и в один показатель 1, чтобы при агрегации получалось 20 2 3.
Тогда все почти само посчитается.

_________________
Глаза боятся, а руки крюки


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вариант решения задачи
СообщениеДобавлено: Вт, сен 20 2011, 08:17 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Сб, сен 03 2011, 08:51
Сообщения: 100
Пол: Мужской
Тоесть в подпрограмму запуска (или завершения? ) нужно вставить ABAP код со всеми условиями.

Ну да в BEx потом формулу посчитать сколько будет в процентах 2 от 3.

Впринципи думал об этом, но знания не позволяли реализовать. Сейчас потихоньку уже разбираюсь.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вариант решения задачи
СообщениеДобавлено: Вт, сен 20 2011, 08:31 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, окт 11 2005, 12:10
Сообщения: 687
Откуда: Москва
Пол: Мужской
Можно подпрограммой запуска или завершения, можно подпрограммой в трансформации формировать показатель.
Второе проще с точки зрения ABAP, но таких кусочков кода будет не один, а 20 :).

_________________
Глаза боятся, а руки крюки


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вариант решения задачи
СообщениеДобавлено: Вт, сен 20 2011, 10:20 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, дек 23 2008, 17:09
Сообщения: 315
Как вариант, задача подсчета значений через переменную путь замены: ...требуется подсчитать кол-во материалов


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Вариант решения задачи
СообщениеДобавлено: Вт, сен 20 2011, 10:54 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, окт 11 2005, 12:10
Сообщения: 687
Откуда: Москва
Пол: Мужской
Online написал(а):
Как вариант, задача подсчета значений через переменную путь замены: ...требуется подсчитать кол-во материалов

По этому совету решение такое:
1. Завести у всех 20 признаков числовой атрибут.
2. Для решетки (пустого значения) заполнить его 1.
3. Сделать 20 переменных-формул.
4. Сделать показатель, содержащий общее число строк (неважно как).
5. Посчитать долю заполнения по следующей формуле 1 - NOERR("Кол-во пустых строк"/"Общее кол-во строк").
6. Поколдовать, чтоб работало, поскольку опыт подсказывает, что обратные пересчеты (когда считаем сколько нет, вместо того, чтобы считать сколько есть) сразу не работают.
7. Помучать форумчан по поводу пункта 6.

_________________
Глаза боятся, а руки крюки


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вариант решения задачи
СообщениеДобавлено: Вт, сен 20 2011, 11:56 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Сб, сен 03 2011, 08:51
Сообщения: 100
Пол: Мужской
Спасибо)) есть над чем шаманить)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вариант решения задачи
СообщениеДобавлено: Вт, сен 20 2011, 12:11 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, дек 23 2008, 17:09
Сообщения: 315
G написал:
По этому совету решение такое:...

Если я правильно понял, то по ссылке как раз вариант как обойтись без первых двух пунктов. По 5-му - можно и в сторону процентных функций глянуть. :)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Вариант решения задачи
СообщениеДобавлено: Вт, сен 20 2011, 12:21 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, окт 11 2005, 12:10
Сообщения: 687
Откуда: Москва
Пол: Мужской
Online написал(а):
Если я правильно понял, то по ссылке как раз вариант как обойтись без первых двух пунктов.

Ветку по ссылке перечитал, но так и не понял, как указанный способ позволяет отличить пустое значение от заполненного.

_________________
Глаза боятся, а руки крюки


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вариант решения задачи
СообщениеДобавлено: Вт, сен 20 2011, 12:41 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, дек 23 2008, 17:09
Сообщения: 315
G написал:
Ветку по ссылке перечитал, но так и не понял, как указанный способ позволяет отличить пустое значение от заполненного.

Имхо, просто отличить пустое значение от заполненного позволяет путь замены "Evaluate as Boolean (Value 0 or 1)", а по ссылке, возможно, более интересный вариант: подсчет кол-ва разных значений, т.е. можно будет корректней учесть повторяющиеся болванки 12345667.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Вариант решения задачи
СообщениеДобавлено: Вт, сен 20 2011, 13:07 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, окт 11 2005, 12:10
Сообщения: 687
Откуда: Москва
Пол: Мужской
Online написал(а):
отличить пустое значение от заполненного позволяет путь замены "Evaluate as Boolean (Value 0 or 1)"

Согласен, так будет работать (сам не додумался, считал, что бекс вообще не умеет работать со строковыми ключами). И существенно проще в реализации, чем все остальное.

_________________
Глаза боятся, а руки крюки


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вариант решения задачи
СообщениеДобавлено: Чт, сен 22 2011, 07:17 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Сб, сен 03 2011, 08:51
Сообщения: 100
Пол: Мужской
Давайте составим итоговый вариант тогда наиболее оптимальный для данной задачи из того что обсудили. Не совсем понял по последнему.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вариант решения задачи
СообщениеДобавлено: Чт, сен 22 2011, 08:57 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, окт 11 2005, 12:10
Сообщения: 687
Откуда: Москва
Пол: Мужской
Нужно сделать для каждого признака переменную-формулу.
Нужно сделать для каждого признака расчетный показатель с этой переменной и расчетом процентов.

_________________
Глаза боятся, а руки крюки


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

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


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

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


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

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