powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Distinct Count
22 сообщений из 22, страница 1 из 1
Distinct Count
    #32143406
Rex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возникла проблема с Distinct Count в MSAS. Речь идёт о продажах, необходимо посчитать, скольким покупателям продан товар за день с разделением по группам и маркам. Вроде бы понятно как решать. Но проблема в том, что данные за разные дни должны складываться. Т.е. если один покупатель сделал несколько покупок в 1 день, то это одна продажа, но при этом за месяц должны быть просуммированы дневные рез-ты, а не посчитан distinct за месяц.
Есть идеи?
...
Рейтинг: 0 / 0
Distinct Count
    #32143452
DmitryS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Функцию Sum гляньте...
...
Рейтинг: 0 / 0
Distinct Count
    #32143465
Rex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Глянул. Суммирует. И куда её применить? Измерение "время" типа "звезда", а custom rollup есть только в parent-child.
...
Рейтинг: 0 / 0
Distinct Count
    #32143520
Rex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прошу прощения, не туда посмотрел.
...
Рейтинг: 0 / 0
Distinct Count
    #32143621
Rex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И, тем не менее, вот цитата из 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
Distinct Count
    #32143629
Jurii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я думаю Distinct Count должен отработать до конца, выдать результаты на каждый день месяца и ненужный Вам итоговый результат за месяц. Далее, в OLAP-клиенте Вам нужно спрятать итоговое значение, и вычислить нужный вам итог, сложив все дни.
...
Рейтинг: 0 / 0
Distinct Count
    #32143732
Дядя Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
iif([Дата].CurrentMember.Level.Name= "День" ,ТипаДистинктКаунт,ТипаСумма)


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

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

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


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

[Outlet] -- это измерение торговых точек, по которым нужно сосчитать distinct. В таблице фактов -- кол-во проданного товара.
...
Рейтинг: 0 / 0
Distinct Count
    #32145897
Jurii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А сколько у Вас торговых точек, и сколько детальных записей в таблице фактов? (как известно, при больших объемах данных Distinct Count работает не так быстро, особенно если использовать не встроенные фичи OLAP-сервера, а не гарантированно оптимальные MDX-выражения).
...
Рейтинг: 0 / 0
Distinct Count
    #32145989
DmitryS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хех... Медленноработает не Каунт(Дистинкт...). Ему и Фильтра по большому измерению достаточно...
...
Рейтинг: 0 / 0
Distinct Count
    #32146006
Rex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Jurii
Торговых точек 29 тыс, фактов в таблице 740 тыс. Но это ведь в целом, а если за день, то торговых точек у одного агента 25, а продаж 9.
...
Рейтинг: 0 / 0
Distinct Count
    #32146070
Jurii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Distinct Count
    #32146077
DNA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DNA
Гость
В OLAP-кубах Distinct Count работает совсем не так, как в обычном SQL

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

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


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

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

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

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

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

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


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