Разработка схемы SQL или OLAP для воронкообразного анализа

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

Каждое событие сохраняется в следующей таблице событий SQL:

SessionId
EventTypeId (PageView, Click, Type),
EventValue (HomePage, Button-1 etc...)
Timestamp

Каждый сеанс сохраняется в следующей таблице сеансов (упрощенно):

SessionId
SelectedProductId
SessionPurchaseAmount (0 for sessions without a purchase)

Мой вопрос заключается в том, как разработать схему схемы базы данных, чтобы я мог использовать ее для фильтрации/анализа сеансов по воронке? Еще одна вещь, которую мне нужно выяснить, это то, как свести схему SQL к структуре OLAP.

Воронка должна быть определена динамически, как это делается в MixPanel/GA/других платформах веб-аналитики.

Я хочу использовать PowerPivot для анализа.

Пример данных:

События:

SessionId EventType EventValue Timestamp

1         PageView  Home       01:01:00
1         PageView  Catalog    01:02:00
1         PageView  Cart       01:02:30
2         PageView  Home       04:01:03

Сессии:

SessionId SelectedProduct PurchaseAmount

1         Dress-AA2       $12.00           
2         NULL            $0.00

Я хочу видеть данные результатов в воронке, которую я определяю динамически. Например, если я установлю воронку Home -> Catalog -> Cart, данные, которые я хочу увидеть, будут следующими:

Home     100%
Catalog  50%
Cart     50%

Спасибо!


person Uri Abramson    schedule 26.01.2014    source источник
comment
Ури, есть пример данных?   -  person Petr Havlik    schedule 27.01.2014
comment
Можете ли вы просто создать расчеты, которые являются числом уникальных идентификаторов сеанса для каждого значения события/общего количества различных идентификаторов сеанса? Тогда вы можете разместить их в том порядке, в котором вы предпочитаете?   -  person mmarie    schedule 28.01.2014
comment
@mmarie каждая строка в воронке представляет собой отдельный счет всех сеансов, которые дошли до этого этапа И прошли все предыдущие этапы. Я могу сделать это с помощью динамического SQL, но я ищу лучший способ.   -  person Uri Abramson    schedule 28.01.2014
comment
@UriAbramson Я предлагаю лучший способ с Power Pivot. Создайте вычисляемые элементы для каждого шага.   -  person mmarie    schedule 28.01.2014
comment
@mmarie, не могли бы вы рассказать немного больше о решении, которое вы предлагаете?   -  person Uri Abramson    schedule 28.01.2014