Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / OLAP и DWH Новый топик    Ответить
 Создать дополнительные меры или дополнительное измерение?  [new]
DaniilSeryi
Member

Откуда:
Сообщений: 793
Имеется следующая информация о визитах клиентов:
Объект, Город, Страна, Время начала визита, время конца визита, Доход.
Требуется создать куб на основе этих данных.
И если я правильно понимаю, всё было бы хорошо и просто:
Измерение времени (дата - месяц - квартал - год - имя месяца - месяц года - номер квартала года),
измерение объект (ID Объекта - Имя объекта),
измерение город (Id Города - Имя города - Имя Страны),
и меры Число визитов, Число визитов без оплаты, и ДоходПолученный.
Но... Но число визитов и доход надо разбить ещё и по продолжительности визитов (до 15 минут, до часа, до двух часов, до трёх часов, до 4 часов, более 4 часов).
Продолжительность визита вычисляется как
case datediff(minute,[Время начала  визита], [время конца визита])/60.0 
when <=0.25 then 0.25
when >0.25 and <=1 then 1
when >1  and <=2 then 2
when >2  and <=3  then 3
when >3  and <=4  then 4
when >4 then 5
end as 'ВремяВизита'


И вопрос вот в чём - создавать дополнительное измерение ВремяВизита или дополнительные меры для числа визитов и дохода? Что правильнее? И поправьте меня в остальных мерах и измерениях, если в чём ошибся. imho, правильнее создать измерение.
3 июн 17, 12:23    [20536753]     Ответить | Цитировать Сообщить модератору
 Re: Создать дополнительные меры или дополнительное измерение?  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 4449
DaniilSeryi
Но число визитов и доход надо разбить ещё и по продолжительности визитов
создавать дополнительное измерение ВремяВизита или дополнительные меры для числа визитов и дохода?
измерение удобно если фокус на функционале фильтрации
меры удобнее если фокус на самих значениях и сравнении их друг с другом
4 июн 17, 01:01    [20537585]     Ответить | Цитировать Сообщить модератору
 Re: Создать дополнительные меры или дополнительное измерение?  [new]
javajdbc
Member

Откуда: Montreal
Сообщений: 16385
DaniilSeryi,

определитесь с гранулярностью Факта.
Самое простое --
ФактВизит
(ДимДатаВизитаФК инт -- YYYYMMDD начало
ДимВремяВизитаФК инт -- HHMMSS начало
ДлительностьВизита инт -- минуты ------мера
DimПериодДлительностиФК инт -- ссылка на дименшн
Доход нумерик(18,2) -----------мера
ДимОбьектФК инт
ДимЛокейшнФК инт
)

DimПериодДлительности
(DimПериодДлительностиПК инт -- ключ
ПериодКод
ПериодНазвание_РУС
ПериодНазвание_ENG
)

-1 'Неопределено''Неопределено''Unknown'
1 'М15' '0-15 минут''0-15 minutes'
2 'М30' '15-30 минут''15-30 minutes'
3 'H01' '30-60 минут''30-60 minutes'
4 'H99' '>4 часов''>4 hours'



...судя по продолжительности , похоже на ескорт сервис.
4 июн 17, 03:00    [20537624]     Ответить | Цитировать Сообщить модератору
 Re: Создать дополнительные меры или дополнительное измерение?  [new]
DaniilSeryi
Member

Откуда:
Сообщений: 793
javajdbc,
Представил себе продвинутый эскорт-сервис с базами данных, отчетностью и кубами для аналитиков. Посмеялся.
4 июн 17, 15:41    [20538001]     Ответить | Цитировать Сообщить модератору
 Re: Создать дополнительные меры или дополнительное измерение?  [new]
DaniilSeryi
Member

Откуда:
Сообщений: 793
javajdbc,

Что касается гранулярности - то в моём случае это совокупность визитов за день, а то и за месяц, а не отдельный визит.
При этом один из срезов, который сейчас делается - как раз по объектам и продолжительности визитов .
4 июн 17, 15:56    [20538014]     Ответить | Цитировать Сообщить модератору
 Re: Создать дополнительные меры или дополнительное измерение?  [new]
javajdbc
Member

Откуда: Montreal
Сообщений: 16385
DaniilSeryi
javajdbc,

Что касается гранулярности - то в моём случае это совокупность визитов за день, а то и за месяц, а не отдельный визит.
При этом один из срезов, который сейчас делается - как раз по объектам и продолжительности визитов .


....ок, но полезнее сделать сначала DWH (или куб) с гранулярностью
одного визита. Тогда конкретная продолжительность и доход будет мерой.
и к каждому визиту можно будет подсоединить срез DimPeriod.
Такой подход, по идее, закрывает все ваши задачи.
4 июн 17, 17:17    [20538086]     Ответить | Цитировать Сообщить модератору
 Re: Создать дополнительные меры или дополнительное измерение?  [new]
ShIgor
Member

Откуда: Нижний Новгород
Сообщений: 1953
javajdbc,

не закроет, ибо "совокупность визитов за день, а то и за месяц, а не отдельный визит"
не позволит создать полноценную связь с измерением "Продолжительность"
5 июн 17, 09:55    [20539201]     Ответить | Цитировать Сообщить модератору
 Re: Создать дополнительные меры или дополнительное измерение?  [new]
javajdbc
Member

Откуда: Montreal
Сообщений: 16385
ShIgor
javajdbc,

не закроет, ибо "совокупность визитов за день, а то и за месяц, а не отдельный визит"
не позволит создать полноценную связь с измерением "Продолжительность"



Если что-то нельзя связать через САМЫЙ гранулярный факт,
то это уже не связывается вообще. По описанию логической модели: Визит --
самый мелкий факт.

....конечно, можно до-придумать что
Визит состоит из нескольких (ескорт) Сервисов, тогда можно
еще мельче факт сделать...

...ставьте задачу полнее и будет точнее решение...
5 июн 17, 14:03    [20540238]     Ответить | Цитировать Сообщить модератору
 Re: Создать дополнительные меры или дополнительное измерение?  [new]
DaniilSeryi
Member

Откуда:
Сообщений: 793
javajdbc,

Вопрос интересный появился: раз у меня зависимость объект - Локация, то делать Снежинку
create table dwh.DimObject
(DimObjectID int identity (1,1),
ObjectShortName varchar(4),
ObjectFullName varchar(40),
LocationID int
)

create table dwh.DimLocation
(LocationID int identity (1,1),
CityName varchar(40),
CountryName varchar(40),
)

или всё-таки Звезду

create table dwh.DimObject
(DimObjectID int identity (1,1),
ObjectShortName varchar(4),
ObjectFullName varchar(40)
)

create table dwh.DimLocation
(LocationID int identity (1,1),
CityName varchar(40),
CountryName varchar(40),
)

?
Пока иду по первому варианту.
5 июн 17, 16:21    [20540880]     Ответить | Цитировать Сообщить модератору
 Re: Создать дополнительные меры или дополнительное измерение?  [new]
javajdbc
Member

Откуда: Montreal
Сообщений: 16385
DaniilSeryi,

однозначного ответа нет -- подбные ситуации
можно смоделировать где-то четырьмя-пятью
способами, и каждый будет иметь свои плюсы и минусы.
читайте Кимбала и микрософт 70-463.

На небольших обьемах, без SCD, и/или если дименшн нужно использовать
без фактов, то двух-етажная снежинка вполне приемлима.
6 июн 17, 02:33    [20541896]     Ответить | Цитировать Сообщить модератору
 Re: Создать дополнительные меры или дополнительное измерение?  [new]
DaniilSeryi
Member

Откуда:
Сообщений: 793
По итогам размышлений у меня получается две таблицы фактов.
Первая - с измерение "Объект - Город - Страна" и измерением времени.
Вторая - с измерением "Объект - Город - Страна", измерением времени и измерением "Длительность визита на объект", предложенным javajdbc.

Причина в том, что к ряду мер применение измерения "Длительность визита на объект" невозможно (пример таких мер - число звонков или число людей, прошедших мимо объекта или число сорвавшихся заказов).
Как я понимаю, обе таблицы фактов можно засунуть в один и тот же куб.
А вот что делать потом, когда засунул в куб вторую таблицу фактов? Связывать их между собой, не связывать, добавлять в куб дополнительные копии таблиц измерений, или привязывать к таблицам фактов одни и те же копии таблиц измерений? Или надо сделать что-то ещё?
И будет ли возможность в один отчёт засунуть меры из обоих таблиц, или нет?

В запросе на основе данных OLTP фигурируют агрегированные данные, которые потом распадаются на эти две таблицы фактов, и хочется генерировать максимально похожий по набору данных отчёт, отсюда и вопросы.
8 июн 17, 10:24    [20549105]     Ответить | Цитировать Сообщить модератору
Все форумы / OLAP и DWH Ответить