Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Статус клиентов
|
|||
|---|---|---|---|
|
#18+
Задача следующая Клиент может иметь какой-то статус. в каждый момент времени - какой-то определённый. Конечно-же он может переходить из одного статуса в другой. задача состоит в том, чтобы описать все эти переходы, в частности: 1) В кадый момент определять количество клиентов в каждом из статусов. 2) В произвольный период времи определять количество переходов клиентов из одного статуса в другой. 3) Для каждого клиента определять историю переходов. Надо всё это спроектировать. Может кто делал что-то подобное, или помнит, где это описано у классиков, чтобы мне не изобретать велосипед. Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2006, 18:19 |
|
||
|
Статус клиентов
|
|||
|---|---|---|---|
|
#18+
Виктор СаковичЗадача следующая Клиент может иметь какой-то статус. в каждый момент времени - какой-то определённый. Конечно-же он может переходить из одного статуса в другой. задача состоит в том, чтобы описать все эти переходы, в частности: 1) В кадый момент определять количество клиентов в каждом из статусов. 2) В произвольный период времи определять количество переходов клиентов из одного статуса в другой. 3) Для каждого клиента определять историю переходов. Надо всё это спроектировать. Может кто делал что-то подобное, или помнит, где это описано у классиков, чтобы мне не изобретать велосипед. Заранее спасибо. Так вам надо чего? оперативную систему построить или информационную? Если информационную, то чем это отличается от избитой темы складских остатков? по мне так ни чем. Клиент - товар Статус - склад Время - время. Таблица движений, а если надо то и по (месячных, дневных, часовых) остатков. По-моему, все предельно просто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2006, 19:43 |
|
||
|
Статус клиентов
|
|||
|---|---|---|---|
|
#18+
мне тоже приходится решать такие задачи постоянно, но к сожалению ничего хорошего придумать в общем случае не получается. Наиболее "железобетонный" вариант - либо ROLAP, либо писать UDF. Если вам удалось придумать что-то другое, то хотелось бы знать об этом :-). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2006, 22:05 |
|
||
|
Статус клиентов
|
|||
|---|---|---|---|
|
#18+
OldNovмне тоже приходится решать такие задачи постоянно, но к сожалению ничего хорошего придумать в общем случае не получается. Наиболее "железобетонный" вариант - либо ROLAP, либо писать UDF. Если вам удалось придумать что-то другое, то хотелось бы знать об этом :-). А зачем так "кисло" : ROLAP, UDF. Помоему все на MOLAP модно легко замутить, если конечно хранилище с толком сделано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2006, 14:54 |
|
||
|
Статус клиентов
|
|||
|---|---|---|---|
|
#18+
Согласен с backfire. Добавлю лишь, что по классике для первой задачи лепим снэпшоты, но в случае высокой дискретности анализа по времени и приличной производительности можно обойтись и без них. Всё остальное в одной таблице фактов, да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2006, 10:06 |
|
||
|
Статус клиентов
|
|||
|---|---|---|---|
|
#18+
2 Виктор Сакович: задача состоит в том, чтобы описать все эти переходы, в частности: 1) В кадый момент определять количество клиентов в каждом из статусов. 2) В произвольный период времи определять количество переходов клиентов из одного статуса в другой. 3) Для каждого клиента определять историю переходов. Надо всё это спроектировать Рекомендую Вам привести пример исходных данных и отчетов, которые Вы хотите из них получить, так Вам быстрее помогут. Например, Иванов 10 февраля приобрел статус S1, а 23 марта получил статус S2... И т.д. (лучше в виде табличек). И прокомментируйте пункт 2, этот пункт самый хитрый. В случае если Вы пользуетесь определенным аналитическим инструментарием (например MSTR), огласите его, чтобы Вам не давали советов исходя из опыта использования другого инструментария (например MS AS). 2 OldNov: Наиболее "железобетонный" вариант - либо ROLAP, либо писать UDF. Если вам удалось придумать что-то другое, то хотелось бы знать об этом :-). Мне удалось придумать, как это сделать с помощью MOLAP. Например одна из моих задач, когда для каждого из нескольких сот тысяч объектов в учетной системе указаны на некоторые даты события присвоения им тех или иных статусов. На выходе я получил возможность на любые даты вычислять сколько объектов находилось на том или ином статусе, каково среднее время нахождения объектов на определенном статусе и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2006, 13:42 |
|
||
|
Статус клиентов
|
|||
|---|---|---|---|
|
#18+
ну конечно же, аналогия с остатками - это первое, что приходит в голову. Но мне всё-таки кажется, что задачка несколько иная. Как уже отметил DmytryS - это задачка высокой степени дискретности. Более того в задаче остатков ключевую роль играет величина этих остатков, а здесь её нет вообще. Вопроса Yurii я не понял. Мне казалось, я достаточно всё подробно сформулировал. Но попробую прокомментировать. пункт 2 состоит в следующем. Пусть есть несколько состояний S1, S2, ..., Sn. Нужно определить сколько за период от T1 до T2 произошло переходов из Sk в Sl. При этом возможна, конечно, ситуация, что за этот период таких переходов будет не один, но этим пренебрежём для ясности. OLAP скорее всего будет BO или MSTR. Но вопрос вообще-то касался проектирования хранилища. Спасибо всем, кто отозвался. Что-то мне начинает прорисовываться. Когда окончательно прорисуется и реализуется, могу поделиться. Что-то подсмотрел у решения компании Covansys, немножко сам докручу под свои нужды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2006, 10:28 |
|
||
|
Статус клиентов
|
|||
|---|---|---|---|
|
#18+
Виктор, Подобного рода задачку решал следующим образом: Табличка вида: Client_id, date_begin, date_end, status_id И сверху вьюшка, которая приводит к виду: date_id, date, status_id Из такого вида, естественно, любой отчет получается. Но естественно приходится напрягаться с ETL. Если додумаетесь до чего-то более красивого, пишите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2006, 13:38 |
|
||
|
Статус клиентов
|
|||
|---|---|---|---|
|
#18+
No PasaranВиктор, Подобного рода задачку решал следующим образом: Табличка вида: Client_id, date_begin, date_end, status_id И сверху вьюшка, которая приводит к виду: date_id, date, status_id Из такого вида, естественно, любой отчет получается. Но естественно приходится напрягаться с ETL. Если додумаетесь до чего-то более красивого, пишите. А задачку 2 как будешь решать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2006, 14:23 |
|
||
|
Статус клиентов
|
|||
|---|---|---|---|
|
#18+
Виктор СаковичOLAP скорее всего будет BO или MSTR. Но вопрос вообще-то касался проектирования хранилища. Виктор, если будет BO, рекомендую посмотреть на модуль Set Analysis. Если я правильно понимаю задачу, то это задача сегментации заказчиков и анализа миграции между сегментами. В Set Analysis используется работа не с записями, а со множествами. Это позволяет, в частности, делать такие вещи: - Создание и разделение сегментов - Измерение основных показателей для сегментов - Отслеживание роста или убывания численности ключевых сегментов - Отслеживание изменений в сегментах - Отслеживание принадлежности к сегментам во времени - Идентификация перемещений между сегментами - Определение зависимостей, влияющих на переход между сегментами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2006, 14:40 |
|
||
|
Статус клиентов
|
|||
|---|---|---|---|
|
#18+
Maxim Lvov Виктор СаковичOLAP скорее всего будет BO или MSTR. Но вопрос вообще-то касался проектирования хранилища. Виктор, если будет BO, рекомендую посмотреть на модуль Set Analysis. Если я правильно понимаю задачу, то это задача сегментации заказчиков и анализа миграции между сегментами. В Set Analysis используется работа не с записями, а со множествами. Это позволяет, в частности, делать такие вещи: - Создание и разделение сегментов - Измерение основных показателей для сегментов - Отслеживание роста или убывания численности ключевых сегментов - Отслеживание изменений в сегментах - Отслеживание принадлежности к сегментам во времени - Идентификация перемещений между сегментами - Определение зависимостей, влияющих на переход между сегментами А там есть предложеиия по структуре хранилища для описанной задачи7 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2006, 14:45 |
|
||
|
Статус клиентов
|
|||
|---|---|---|---|
|
#18+
Есть структура - это BusinessObjects Warehouse. Она заточена под определенные аналитические приложения (Customer Intelligence, Finance Intelligence и т.п.), которые входят в состав набора Performance Management, куда также входит Set Analysis. Об этих пакетных аналитических приложениях можно почитать на сайте производителя. Но Set Analysis можно использовать в рамках Performance Management и без этих "готовых" аналитических приложений. Т.е. по произвольному источнику. Но к этому источнику предъявлвяется ряд требований (связанных с первичными ключами, возможностью создания таблиц и view в этом источнике и т.п.). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2006, 15:11 |
|
||
|
Статус клиентов
|
|||
|---|---|---|---|
|
#18+
Maxim LvovЕсть структура - это BusinessObjects Warehouse. Она заточена под определенные аналитические приложения (Customer Intelligence, Finance Intelligence и т.п.), которые входят в состав набора Performance Management, куда также входит Set Analysis. Об этих пакетных аналитических приложениях можно почитать на сайте производителя. Но Set Analysis можно использовать в рамках Performance Management и без этих "готовых" аналитических приложений. Т.е. по произвольному источнику. Но к этому источнику предъявлвяется ряд требований (связанных с первичными ключами, возможностью создания таблиц и view в этом источнике и т.п.). Про аналитические приложения почитать то можно, хвалебного маркетинга у всех хоть отбавляй, а ER диаграмм хранилища (меня заинтересовало Customer Intelligence) вряд ли там найдёшь. А сейчас мне нужно именно это. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2006, 15:27 |
|
||
|
Статус клиентов
|
|||
|---|---|---|---|
|
#18+
Виктор СаковичЗадача следующая Клиент может иметь какой-то статус. в каждый момент времени - какой-то определённый. Конечно-же он может переходить из одного статуса в другой. задача состоит в том, чтобы описать все эти переходы, в частности: 1) В кадый момент определять количество клиентов в каждом из статусов. 2) В произвольный период времи определять количество переходов клиентов из одного статуса в другой. 3) Для каждого клиента определять историю переходов. Надо всё это спроектировать. Может кто делал что-то подобное, или помнит, где это описано у классиков, чтобы мне не изобретать велосипед. Заранее спасибо. Всем привет! Вариант первый, ИМХО, самый сложный описан тут - The Data WarehouseToolkit Second Edition The Complete Guide to Dimensional Modeling by Ralph Kimball Margy Ross CHAPTER 6 Customer Relationship Management Еще вариант рассматривать статус клиента как factless fact. Я бы выбрал этот вариант, хотя все зависит от задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2006, 16:47 |
|
||
|
Статус клиентов
|
|||
|---|---|---|---|
|
#18+
серый ник...Еще вариант рассматривать статус клиента как factless fact. Я бы выбрал этот вариант, хотя все зависит от задачи. Понятно, что factless fact table, какая же ещё. Вопрос был, какую выбрать структуру для этой таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2006, 19:27 |
|
||
|
Статус клиентов
|
|||
|---|---|---|---|
|
#18+
Виктор Сакович Надо всё это спроектировать. Может кто делал что-то подобное, или помнит, где это описано у классиков, чтобы мне не изобретать велосипед. Велосипед называется модернизированный SCD-2 :) client_hist ------------------ client_id integer version_id integer status varchar2(10) from_date date end_date date Виктор Сакович 1) В кадый момент определять количество клиентов в каждом из статусов. Код: plaintext 1. 2. 3. 4. Виктор Сакович 2) В произвольный период времи определять количество переходов клиентов из одного статуса в другой. Надо задачу доопределять. Нужны ли все переходы или только те, что случились за период. Или нужно ли считать только последовательные переходы, или любые попадания из одного статуса в другой - с любым количеством промежуточных шагов (только А-Б или А-В-Г-Б). Во случае если только один фактический переход, то запрос, например, такой (еще бы проверить на граничные условия - попадания истории на начало и конец отчетного периода) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Виктор Сакович 3) Для каждого клиента определять историю переходов. Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2006, 19:40 |
|
||
|
Статус клиентов
|
|||
|---|---|---|---|
|
#18+
Виктор Сакович серый ник...Еще вариант рассматривать статус клиента как factless fact. Я бы выбрал этот вариант, хотя все зависит от задачи. Понятно, что factless fact table, какая же ещё. Вопрос был, какую выбрать структуру для этой таблицы. ну вы блин даете(ц) хф структу не ВЫБРАТЬ, а спроектировать трэба. если нужен чисто анализ переходов клиентов из статуса в статус то делаете снэпшот статусов клиентов на дату\месяц\ год\ событие\... и загоняете в factless fact table.(см картинку)))))) Дальше травите на это дело МСТР или БО без особых проблем. Если нужна привязка к мерам, то SCD type 2 + type3, но это решение уже не такое юзер френдли. Хотя в БО это делается не сложно, главное все-таки структура. PS картинка смеха ради... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2006, 20:20 |
|
||
|
Статус клиентов
|
|||
|---|---|---|---|
|
#18+
серый ник..что-то сглючило Спасибо конечно, но это уже предлагал No Pasaran. Задачка 2 не очень то решается этим способом, ниже объясню почему. scd2 select from_client.status ||'->'||to_client.status, count(*) from client_hist from_client, client_hist to_client where from_client.begin_date <= report_end_date and from_client.end_date >= report_begin_date and to_client.begin_date <= report_end_date and to_client.end_date >= report_begin_date and from_client.client_id = to_client.client_id and from_client.version_id = to_client.version_id + 1 group by from_client.status ||'->'||to_client.status Да в этом то всё и дело. Не хочется эту табличку джойнить на себя, она большая очень. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2006, 09:51 |
|
||
|
Статус клиентов
|
|||
|---|---|---|---|
|
#18+
автор2) В произвольный период времи определять количество переходов клиентов из одного статуса в другой. Client_id, date_begin, date_end, status_id Previous_status_id Select count(*) from table where status_id=S1 and previous_status_id=Sk and date_begin between #DATE1 and #DATE2 Или я непавильно понял задачу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2006, 10:11 |
|
||
|
Статус клиентов
|
|||
|---|---|---|---|
|
#18+
No Pasaran автор2) В произвольный период времи определять количество переходов клиентов из одного статуса в другой. Client_id, date_begin, date_end, status_id Previous_status_id Select count(*) from table where status_id=S1 and previous_status_id=Sk and date_begin between #DATE1 and #DATE2 Или я непавильно понял задачу? Ну да, что-то вроде, в правильном направлении двигаешься. В общем пока я решил попробовать реализовать структуру, которая при помощи вьюшки даст следующую фактовую таблицу. Client_id status_id date_id previous_status_id tenure Где tenure - количество дней с момента перемены статуса. Тогда задачка 2) решается просто фильтром tenure=0, с первой и третьей - и так всё понятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2006, 10:29 |
|
||
|
|

start [/forum/topic.php?fid=49&msg=33789269&tid=1870004]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
42ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 219ms |
| total: | 328ms |

| 0 / 0 |
