Разработка таблицы фактов для SSAS

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

Я собрал некоторые данные и теперь пытаюсь создать таблицу фактов. Куб будет смотреть на рефералов, и я пытаюсь показать информацию с течением времени, показывающую количество рефералов, которые открылись за месяц, количество, которые закрылись за месяц, и количество, которые были открыты в любой момент месяца ( т.е. они могли открыться в предыдущем месяце и закрыться в следующем месяце).

Как лучше спроектировать эти меры, я застрял. Должны ли быть три таблицы фактов или можно обойтись одной? Если я сделаю три таблицы фактов, я могу связать номер записи и дату открытия, чтобы получить номер, который открылся через месяц, я могу связать номер записи и дату закрытия, чтобы создать номер, который закрылся через месяц, но тот, который у меня есть понятия не имею, как описать, когда он был открыт в любой момент месяца. Нужно ли мне для этой таблицы создавать строку на каждый день для каждого реферала? Это кажется немного интенсивным, и поэтому я сразу подумал, что это неправильно.

Итак, вопросы двоякие:

  1. Могу ли я сделать три измерения в одной таблице, и если да, то каков наилучший метод для этого?
  2. Каков наилучший метод открытия в любой момент месяца?

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

Размеры у меня:

Демография: Рекордное число; Пол; Этническая принадлежность; Дата рождения;

Направление: Запись номер; Открытая дата; Дата окончания;

Время: Дата; Месяц; Четверть; Год;

Таблица фактов, которую я изначально разработал, была следующей:

Данные:

Номер записи; Открыто_в_месяце; Закрыто_в_месяце; Открыто_в_месяце;

С момента создания куба я вижу, что числа не совпадают с тем, что я ввел в тестовые данные, и поэтому я знаю, что перепутал таблицу фактов, и именно эту таблицу мне нужно создать заново.


person user1663003    schedule 23.08.2013    source источник
comment
Таблица измерений дат оказалась очень полезной для нашего хранилища данных.   -  person Dan Bracuk    schedule 23.08.2013
comment
Я добавил измерение времени, которое охватывает нужный мне период, и я связываю его с измерениями, чтобы создать свою иерархию год/квартал/месяц. Проблема в том, как мне реализовать то, что я хочу подсчитать.   -  person user1663003    schedule 23.08.2013


Ответы (2)


У меня мало опыта создания кубов в SSAS, но я бы, вероятно, создал представление примерно так

ReferallFacts:

Id | IsOpen | DateOpened | OpenedBy | DateClosed | ClosedBy | OpenForMinutes...

CalendarDimension:

ShortDate | Week | Month | Quarter | Year | FinancialWeek...

СотрудникРазмер:

Id | FirstName | LastName | LineManager | Department...

ОтделРазмер:

Id | Name | ParentDepartment | Manager | Location...

В этом случае я действительно не вижу необходимости в более чем одной таблице фактов, поскольку все, что вы описываете «по месяцам», «по дням», обрабатывается измерением календаря.

Здесь это действительно хороший пошаговый обзор, а также на pcteach.me есть несколько хороших видеороликов по SSAS.

person T I    schedule 23.08.2013
comment
Спасибо. Я посмотрю, смогу ли я получить пошаговое руководство на телефоне, так как оно заблокировано на рабочем компьютере. Кажется, мне нужно изменить таблицу, чтобы она выглядела примерно так: Данные: Номер записи; Открыт; Дата_открыть; дата_закрыта; Приводит ли это к тому, что у меня есть одна строка на номер записи в таблице фактов? Я так понимаю он все считает так: Если is_open=0 то не считает, а как он с этим справляется в предыдущие месяцы? Например. в мае он был открыт, а в июне - нет, поэтому поле изменилось. Нужен ли мне один для строки на каждый день для каждого номера записи? - person user1663003; 23.08.2013
comment
Я просмотрел пошаговое руководство, спасибо, и я могу создать куб и развернуть его и даже перенести в SharePoint, проблема, с которой я столкнулся, заключается в том, что таблица фактов спроектирована неправильно, и это последняя проблема, которую я должен взломать, чтобы получить это работает правильно. У меня проблема в том, что реферал может перейти от открытого в апреле к закрытому в мае, и мне нужно представлять его состояние в каждый момент времени. т.е. если кто-то хочет узнать, сколько из них было открыто в апреле, он будет отображаться как открытый, но как только он будет закрыт после даты закрытия, он будет считаться закрытым. - person user1663003; 23.08.2013

Рассматривали ли вы подход, основанный на событиях, когда событием является открытие или закрытие реферала?

Прежде всего, вам необходимо определить уровень детализации вашей таблицы фактов. Если вам нужно знать количество открытых рефералов на конкретную дату и время в месяце, ваша таблица фактов должна быть с самой низкой степенью детализации (индивидуальные записи рефералов):

FactReferrals: ( DateId, TimeId, EventId, RecordNumber, ReferralEventValue )

Здесь ReferralEventValue — это просто целочисленное значение 1, когда открывается реферал, и -1, когда реферал закрывается. EventId относится к измерению только с двумя элементами: Opened и Closed.

Такой подход позволяет получить количество закрытых или открытых событий за любой заданный период времени. Кроме того, взяв сумму ReferralEventValue с начала времени и до определенного момента времени, вы получите точное количество открытых рефералов в этот конкретный момент. Чтобы ускорить эту сумму в SSAS, вы можете разработать агрегаты или создать отдельную меру, которая представляет собой накопленную сумму ReferralEventValue.

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

person Dan    schedule 23.08.2013
comment
Значит, мне нужна одна запись в день, когда реферал был открыт для каждой записи? Например. ID даты, ID события; Номер записи; Реферралевентвалуе; - person user1663003; 23.08.2013
comment
Да, на самом деле вам потребуется две записи на реферала. Одна запись для даты открытия записи, а другая для даты закрытия. Но если вам не нужны данные с детализацией по отдельным рефералам, вы также можете суммировать всех открытых рефералов за день (или неделю, или месяц) в одной записи, а всех закрытых рефералов за день (или неделю, или месяц) в другой записи. . - person Dan; 23.08.2013
comment
Ах хорошо. Я думал, что мне понадобится по одному на каждый день, когда реферал был открыт, а не по два, по одному на даты открытия и закрытия. Мне нужен реферальный уровень на самом низком уровне, но выше могут быть просто агрегаты, выполненные в SSAS. - person user1663003; 23.08.2013