Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Как в FoodMart 2000 написать CM для поиска покупателя, купившего последним текущий товар? / 9 сообщений из 9, страница 1 из 1
18.02.2005, 17:40
    #32924009
Вжик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в FoodMart 2000 написать CM для поиска покупателя, купившего последним текущий товар?
Коллеги, такая вот задачка: показать покупателя, который последним купил текущий товар. Помогите написать СМ, желательно чтобы по-быстрее работал.
...
Рейтинг: 0 / 0
18.02.2005, 18:57
    #32924216
Dmitry Biryukov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в FoodMart 2000 написать CM для поиска покупателя, купившего последним текущий товар?
если в лоб, то так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
   TAIL(
       NonEmptyCrossJoin(
                 Время.[Самый нижний уровень].Members, 
                 Покупатели.[Самый нижний уровень].Members,
                 {Товары.CurrentMember}                 
           )
   , 1 ).item( 0 ).item( 1 ).name

может быть Моша что-то оптимальнее с рекурсией подскажет
...
Рейтинг: 0 / 0
18.02.2005, 21:15
    #32924371
Вжик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в FoodMart 2000 написать CM для поиска покупателя, купившего последним текущий товар?
Dmitry Biryukov, спасибо за вариант. Но, что в нем гарантирует, что это именно последний покупатель? Сортировка времени в естественном порядке? Хотя я думаю, что оно будет работать. Другой вопрос: если я найду мембер элемента Время, в который была поставка, то как от мебмера Времени (тьюпла) перейти к измерению Покупатель - чего-то я никак не соображаю...
...
Рейтинг: 0 / 0
21.02.2005, 10:19
    #32925477
Dmitry Biryukov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в FoodMart 2000 написать CM для поиска покупателя, купившего последним текущий товар?
Вжикчто в нем гарантирует, что это именно последний покупатель? Сортировка времени в естественном порядке?

Думаю что именно это

Вжикесли я найду мембер элемента Время, в который была поставка, то как от мебмера Времени (тьюпла) перейти к измерению Покупатель - чего-то я никак не соображаю...

я тоже над этим думал :-) и с рекурсией не получилось. могу найти последнюю дату, когда этот товар преобретался, могу найти последнего (в измерении, а не во времени) покупателя, который этот товар преобрёл. А вот объединить это не получилось.

Пробовал генерить строку-тупл, а потом StrToTuple - ERR біло ответом
...
Рейтинг: 0 / 0
21.02.2005, 10:33
    #32925513
Mosha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в FoodMart 2000 написать CM для поиска покупателя, купившего последним текущий товар?
Вжик если я найду мембер элемента Время, в который была поставка, то как от мебмера Времени (тьюпла) перейти к измерению Покупатель
Дмитрий - если известно последнее время когда был куплен товар, то почему бы не воспользоваться решением предложенным Вами:

Код: plaintext
NonEmptyCrossJoin(Customer.[Name].MEMBERS, {Time.[Feb  20   2005 ]},  1 ).Item( 0 ).Item( 0 ).Name

Конечно возможно что в этот день этот товар купило много покупателей, но тогда постановка задачи не говорит какого выбирать - так что мы выбираем первого попавшегося. Но если надо, то NECJ возвращает всех таких покупателей.

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights
...
Рейтинг: 0 / 0
21.02.2005, 11:02
    #32925581
Вжик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в FoodMart 2000 написать CM для поиска покупателя, купившего последним текущий товар?
Mosha, спасибо за участие. А нет ли иных способов, не используя NECJ. Спрашиваю, потому, что интересны вопросы быстродействия и иные альтернативные варинаты решения, если есть.
...
Рейтинг: 0 / 0
21.02.2005, 11:50
    #32925720
Dmitry Biryukov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в FoodMart 2000 написать CM для поиска покупателя, купившего последним текущий товар?
Mosha
Дмитрий - если известно последнее время когда был куплен товар, то почему бы не воспользоваться решением предложенным Вами
Последнее время я расчитываю как
Код: plaintext
1.
member Measures.LastTimeMember as '
Iif(IsEmpty([Unit Sales]), Time.PrevMember.UniqueName, Time.CurrentMember.UniqueName)'
Если убрать UniqueName, то возвращает оно совсем не то, что хотелось бы (видимо сказывается emplicit data type conversion)
а вот как этот iif подставить внутрь NECJ - вообще ума не приложу - все мои варианты не прошли проверку синтаксиса

Теоретически должен быть линейный алгоритм (NECJ даёт время порядка X^2): поиск последнего времени + поиск кастомера
...
Рейтинг: 0 / 0
21.02.2005, 12:32
    #32925872
Вжик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в FoodMart 2000 написать CM для поиска покупателя, купившего последним текущий товар?
И как это работает? Рекурсия получается?
...
Рейтинг: 0 / 0
21.02.2005, 12:59
    #32925967
Dmitry Biryukov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в FoodMart 2000 написать CM для поиска покупателя, купившего последним текущий товар?
нет :-)
такое выражение вернуло бы Unit Sales последней (по времени) покупки используя рекурсию
Код: plaintext
1.
member Measures.LastTimeMember as '
Iif(IsEmpty([Unit Sales]), Time.PrevMember, [Unit Sales])'

Осталось заставить это выражение возвращать мембер, а не тупл.
...
Рейтинг: 0 / 0
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Как в FoodMart 2000 написать CM для поиска покупателя, купившего последним текущий товар? / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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