Связь между двумя таблицами фактов

Согласно концепциям хранилища данных, правильно ли иметь соотношение (1 м или даже мм) между двумя таблицами фактов?

Twetter сценарий будет примером. Мы можем предположить, что у нас есть две таблицы фактов (твиты и пользователи). Если мы хотим узнать, какой пользователь написал твит или твиты были сделаны с помощью использования, мы должны объединить эти две таблицы фактов. Так это (мм) отношения между фактами-твитами и факт-пользователями? Или есть другой способ структурировать эту проблему?

2 ответа

Решение

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

fFollowers должны относиться к пользователю (твиттер), дате (FollowDate), времени (FollowTime), пользователю (фолловеру). Вам также понадобится CancelDate/Time, которая должна указывать на запись измерения "Неизвестная / будущая дата", если подписка активна. Мера по умолчанию будет считать.

Скорее всего, dTweet будет вырожденным измерением, связывающим атрибуты, которые не связаны с измерением и не являются измеримыми значениями, такими как tweetId(ключ) и широта / долгота того места, где был отправлен твит. Это измерение может не быть необходимым.

fTweet должен относиться к пользователю (Tweeter), дате (TweetDate), времени (TweetTime) и dTweet, если вы считаете, что измерение необходимо. Граф будет мерой. Вы также можете иметь длину текста в качестве меры.

В вашем бизнесе проблема. Вы хотите посчитать количество подписчиков на момент появления твита. Вам нужно написать выражение меры для fTweet, которое извлекает fFollowers.Count, где TweetDate/Time между FollowDate/Time и CancelDate/Time. Я бы назвал этот RecipientCount, и это будет мера твита. Если этот показатель находится на fTweet, то при срезании по dTweet.ID он должен увидеть количество получателей твита.

Нет, не напрямую связывать таблицы фактов. Вы можете связать их только через общие измерения.

В вашем сценарии Twitter, Пользователь не факт, это деминсинг. Тогда у вас будут отношения 1:m между Dim User и Fact Tweets, и анализ не вызывает затруднений:

Count(Tweets) By User
Другие вопросы по тегам