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

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


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

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


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

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