DW Factless Table Table с полями в свободной форме
Я восстанавливаю таблицу фактов из таблицы транзакций. Существуют очевидные общие цвета, такие как Org, Status, Service, ServiceAction, Date Date и т. Д. Однако я пытаюсь решить две проблемы:
В таблице "Транзакции" есть поля для ввода в свободной форме для таких значений, как телефон, электронная почта, chkbxRequestReceipt. Все они напрямую связаны с TransactionKey. Если я извлекаю эти поля из таблицы фактов в их собственные значения dim, это создает отношение 1-1 к факторам, которое кажется неправильным.
ServiceAction dim - это 1 поле таблицы фактов, но затем оно разбивается на 3 разные таблицы dim. Это было сделано, потому что Сервисы не имеют общих полей. Существует 1 транзакция для каждого ServiceAction. Таким образом, сумма строк в 3 таблицах службы = общее количество строк таблицы транзакций.
Может ли кто-нибудь дать совет, как лучше всего это смоделировать?
2 ответа
Телефон, электронная почта, chkbxRequestReceipt можно рассматривать как вырожденное измерение (или несколько вырожденных измерений). Вырожденные измерения - это измерения без таблицы измерений. У вас есть вырожденные измерения, когда таблица фактов имеет размер уровня транзакции.
О трех таблицах для
ServiceAction
, Я предлагаю поместить их в одну таблицу измерений, но я понимаю, что у вас будет таблица с большим количеством пустых значений. Если вы просто пишете свои отчеты вручную, три таблицы не являются проблемой, но если вы используете инструмент, который использует многомерную модель для автоматической генерации кода SQL, то вам, вероятно, потребуется одна таблица измерений.
Вы даже можете подумать, что у вас есть три разных измерения, которые совместно используют один и тот же столбец в таблице фактов, это будет работать, но для бизнес-пользователей это может немного смущать, если они могут создавать свои собственные отчеты. В любом случае, в этом случае вам также необходимо создать четвертое измерение. AllSerivceAction
в случае, если вам нужно создать отчет, в котором вы хотите показать все звонки, а также информацию о ServiceAction
1) Не каждый элемент данных обязательно входит в размерную модель. Предполагается, что измерения - это то, с чем вы будете анализировать свои измерения. Будут ли ваши пользователи проверять какие-либо из ваших мер по номеру телефона, адресу электронной почты или запрашивалась квитанция? Если нет, то эти вещи, скорее всего, не принадлежат вашей размерной модели. Они могут принадлежать к нормализованному складскому уровню или базе данных отчетов, если они у вас есть.
Если кто-то настаивает на том, что они должны быть доступны в многомерной модели (и их рассуждения обоснованы - скажем, сначала они проводят анализ с использованием более очевидных измерений, а иногда им нужно посмотреть на один из этих элементов данных, чтобы предпринять действия для чего-то странного, что они нашел)
- Прежде всего проверьте, должны ли они быть атрибутами существующих измерений. Возможно, адрес электронной почты и телефон относятся к измерению, подобному Org, или, возможно, к измерению Customer или Person, которое вы не упомянули. Если они концептуально связаны друг с другом, но не соответствуют существующему измерению в вашей модели, стоит подумать о том, нужно ли добавлять измерение. Вы упомянули, что это свободный текст, поэтому вам, возможно, придется управлять качеством данных в рамках процесса ETL, если вы пойдете этим путем.
- Если они не имеют смысла в другом измерении, или если у вас есть какие-либо свободные текстовые поля с такими вещами, как комментарии / заметки, то метод Ральфа Кимбалла для работы со свободными текстовыми полями состоит в том, чтобы поместить их в измерение, чтобы люди могли добавить их в когда им нужно.
2) Честно говоря, трудно судить, насколько это правильно, исходя из предоставленной информации. Не зная больше о том, что такое Сервис, что такое ServiceAction, какие поля существуют в вашем измерении ServiceAction и т. Д. Я не хотел бы догадываться о подходящем дизайне для этого. Я с удовольствием вернусь к этому, если будет добавлена дополнительная информация.