Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Distinct Count / 22 сообщений из 22, страница 1 из 1
17.04.2003, 16:36
    #32143406
Rex
Rex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct Count
Возникла проблема с Distinct Count в MSAS. Речь идёт о продажах, необходимо посчитать, скольким покупателям продан товар за день с разделением по группам и маркам. Вроде бы понятно как решать. Но проблема в том, что данные за разные дни должны складываться. Т.е. если один покупатель сделал несколько покупок в 1 день, то это одна продажа, но при этом за месяц должны быть просуммированы дневные рез-ты, а не посчитан distinct за месяц.
Есть идеи?
...
Рейтинг: 0 / 0
17.04.2003, 16:59
    #32143452
DmitryS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct Count
Функцию Sum гляньте...
...
Рейтинг: 0 / 0
17.04.2003, 17:05
    #32143465
Rex
Rex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct Count
Глянул. Суммирует. И куда её применить? Измерение "время" типа "звезда", а custom rollup есть только в parent-child.
...
Рейтинг: 0 / 0
17.04.2003, 17:51
    #32143520
Rex
Rex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct Count
Прошу прощения, не туда посмотрел.
...
Рейтинг: 0 / 0
17.04.2003, 19:47
    #32143621
Rex
Rex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct Count
И, тем не менее, вот цитата из Books Online:
Код: plaintext
Note  If a cube has a measure with its Aggregate Function property set to Distinct Count, adding a custom rollup operator or expression to a level will cause the cube's structure to become invalid.

Возвращаясь к первоначальному вопросу, как всё-таки сделать так, чтобы за день считался distinct count, а за более продолжительные отрезки сумма дневных показателей?
...
Рейтинг: 0 / 0
17.04.2003, 20:00
    #32143629
Jurii
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct Count
Я думаю Distinct Count должен отработать до конца, выдать результаты на каждый день месяца и ненужный Вам итоговый результат за месяц. Далее, в OLAP-клиенте Вам нужно спрятать итоговое значение, и вычислить нужный вам итог, сложив все дни.
...
Рейтинг: 0 / 0
18.04.2003, 08:46
    #32143732
Дядя Федор
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct Count
Код: plaintext
iif([Дата].CurrentMember.Level.Name= "День" ,ТипаДистинктКаунт,ТипаСумма)


При этом ТипаДистинктКаунт и ТипаСумма могут быть как заранее прописанными и спрятанными от пользователя показателями, так и формулами.

Сходу напрашивается показатель ТипаДистинктКаунт, тогда

Код: plaintext
ТипаСумма=Sum(Descendants([Дата].CurrentMember,[Дата].[День]),[Measures].[ТипаДистинктКаунт])


Но это я так, что первое в голову пришло...
...
Рейтинг: 0 / 0
18.04.2003, 16:50
    #32144293
DmitryS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct Count
ТипаСумма - этого calculated member'a достаточно буде:-) Ежли, конечно, День - это лист.
...
Рейтинг: 0 / 0
22.04.2003, 11:57
    #32145780
Rex
Rex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct Count
Люди, объясните пожалуйста чайнику, какие процессы происходят при этом, а то сильно тормозит (простыня в Crystal Analysis открывалась 1,5 часа на P4 1,7 МГц, сервер и клиент на одной машине).
...
Рейтинг: 0 / 0
22.04.2003, 12:54
    #32145838
DmitryS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct Count
Не должно.:-( Увас же не миллион дней в измерении
А происходит следующее: берётся дистинкт каунт (быстро) по каждому дню и суммируется всё (медленнее). Аггрегаций много посчитано? Куб МОЛАПовский?
...
Рейтинг: 0 / 0
22.04.2003, 13:20
    #32145868
Rex
Rex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct Count
Дни за 5 лет, куб MOLAP. Выч. метрика типа distinct такая:
Код: plaintext
Count(Distinct(Filter(Descendants([Outlet].CurrentMember, Outlet.Outlet), [Sales Volume Packs]> 0 )))

[Outlet] -- это измерение торговых точек, по которым нужно сосчитать distinct. В таблице фактов -- кол-во проданного товара.
...
Рейтинг: 0 / 0
22.04.2003, 13:44
    #32145897
Jurii
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct Count
А сколько у Вас торговых точек, и сколько детальных записей в таблице фактов? (как известно, при больших объемах данных Distinct Count работает не так быстро, особенно если использовать не встроенные фичи OLAP-сервера, а не гарантированно оптимальные MDX-выражения).
...
Рейтинг: 0 / 0
22.04.2003, 14:53
    #32145989
DmitryS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct Count
Хех... Медленноработает не Каунт(Дистинкт...). Ему и Фильтра по большому измерению достаточно...
...
Рейтинг: 0 / 0
22.04.2003, 15:07
    #32146006
Rex
Rex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct Count
2 Jurii
Торговых точек 29 тыс, фактов в таблице 740 тыс. Но это ведь в целом, а если за день, то торговых точек у одного агента 25, а продаж 9.
...
Рейтинг: 0 / 0
22.04.2003, 16:05
    #32146070
Jurii
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct Count
To Rex & DmitryS:

740 тыс. записей - это конечно копейки, но вот 29 тыс. торговых точек - это не так мало. В OLAP-кубах Distinct Count работает совсем не так, как в обычном SQL (намного медленнее, вычисление происходит всегда налету), и из моей практики, торможение происходит всегда, когда категорий/members в кубе несколько десятков тысяч или больше. Другое дело - насколько серьезно это торможение. 1.5 часа - это перебор, я лично сталкивался с ситуациями, когда торможение составляло от 1 до 10 минут для кубов, созданных на основе как минимум 10 миллионов записей и содержащих как минимум 20-30 тыс. категорий (это делалось на компьютере средней мощности Pentium-3 256 Mb RAM, и при увеличении оперативной памяти ситуация улучшалась). Правда кубы я строил не с помощью MS AS, а на OLAP-сервере Cognos PowerPlay.
...
Рейтинг: 0 / 0
22.04.2003, 16:10
    #32146077
DNA
DNA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct Count
В OLAP-кубах Distinct Count работает совсем не так, как в обычном SQL

Не уверен что это так, по карйней мере в MS AS.
Достаточно посмотреть как увеличивается время процессинга куба и объем готового куба если просто изменить SUM на Disctinct Count.
Я подозреваю что MS AS преднасчитывает Distinct Count-ы
...
Рейтинг: 0 / 0
22.04.2003, 16:21
    #32146087
Дядя Федор
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct Count
Я подозреваю что MS AS преднасчитывает Distinct Count-ы

Это относится только к обычным measures. А в данном случае distinct считается в Calculated member-е... и значит на лету. На таком мееедленном лету, судя по тому, что сказано.
...
Рейтинг: 0 / 0
22.04.2003, 16:25
    #32146092
Jurii
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct Count
Достаточно посмотреть как увеличивается время процессинга куба и объем готового куба если просто изменить SUM на Disctinct Count.
Я подозреваю что MS AS преднасчитывает Distinct Count-ы


Как то я обсуждал этот вопрос с г-ном Ивановым на форуме www.olap.ru
Сначала он говорил, что если делать Distinct Count - размер куба увеличивается всего на 2%, и агрегаты создаются компактные. Далее, в ходе дискуссии оказалось, что он делал эксперимент для совсем маленького кубика, и мы пришли к тому, что вроде как невозможно сделать агрегаты для Distinct count (иначе бы по законам комбинаторики кубы стали бы огромными). К сожалению, комментариев от экспертов по MS AS (уровня Ирины) мы не получили.
Так что интересно было бы посмотреть на Вашу статистику (насколько куб дольше процессится, насколько возрастает его объем, при каких начальных условиях проводился эксперимент и т.п.).
...
Рейтинг: 0 / 0
22.04.2003, 16:59
    #32146130
DmitryS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct Count
1) СМ не процессятся, а вычисляются на клиенте.
2) Тормозит не дистинкт каунт (т.е. и он тоже), а ещё, Фильтр. Если вместо Дистинкт каунта написать Sum, работать всё равно будет весьма долго. Уверяю Вас. На подобных СМ съедены собаки всех пород и возрастов:-)
Точнее, не только Фильтр, а выражение Ф-ция(Фильтр)
...
Рейтинг: 0 / 0
22.04.2003, 17:00
    #32146133
DmitryS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct Count
Написал и сам засомневался:-)
...
Рейтинг: 0 / 0
22.04.2003, 17:23
    #32146164
DNA
DNA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct Count
2 Jurii

Ну например, я пробовал загружать куб из 42 миллионов записей, одно из измерений содержало 1 миллион листьев, разбитых по группам по 64000.
Нужно было получать Distinct Count по этим листьям.

Когда применялась Sum - куб процессился несколько минут (большее время тратилось именно на закачку) и размер его был порядка 200 мегабайт.

Когда поставил Distinct Count - процессинг куба занял примерно полтора часа, во время процессинга было сожрано 1 гигабайт памяти (меньше начинало страшно тормозить и свопиться) и 9 гигабайт диска на темповые таблицы, по окончании процессинга они были убиты сервером и результирующий куб оказался 4 гигабайта.

Так что, это точно не 2 процента :)
...
Рейтинг: 0 / 0
22.04.2003, 17:24
    #32146165
Rex
Rex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct Count
А как сделать так, чтобы Filter не фильтровал все 29 тыс точек, а только те, которые относятся к нужному срезу? Ведь если зафиксировать торгового агента и день, то получается совсем небольшая 2-мерная таблица -- 25 точек на пару десятков товаров.

Возвращаясь к предыдущему вопросу, хотелось бы понять также всю физику процесса и как работает это CurrentMember и Descendants в контексте выражения вычисляемой метрики.
...
Рейтинг: 0 / 0
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Distinct Count / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]