Подумайте о процессе или событии, которое вы хотите проанализировать.
Допустим, вы создавали Lougle Analytics и хотите проанализировать посещения (в отличие от одностраничных запросов) вашего сайта. Посещение сайта - это процесс.
Таблица фактов представляет собой процесс или событие , которое вы хотите проанализировать, в данном случае это список посещений сайта. Вы можете иметь столько таблиц фактов, сколько хотите, по одной на процесс или событие.
Какие вещи могут быть полезны для вас при анализе посещений сайта?
- Информация о веб-браузере (бренд, разрешение экрана, ...)
- Информация о пользователе (страна, штат, город, провайдер, на основе его IP-адреса)
- Информация о том, когда визит начался (год, квартал, месяц, неделя, день)
- Продолжительность визита
- Ссылающаяся страница, целевая страница и страница выхода (заголовок, путь URL)
- Количество страниц, посещенных во время посещения
Технически, вы можете поместить все это в одну таблицу - как в Excel, но это очень быстро и очень быстро, поэтому мы проведем ОДИН уровень нормализации. Габаритный дизайн часто просто «складывает все необходимое для анализа в одну большую таблицу», а затем нормализует один уровень.
Таким образом, ваша таблица фактов будет выглядеть так:
web_browser_key bigint
ip_address_key bigint
start_date_key int
referring_page_key bigint
landing_page_key bigint
exit_page_key bigint
duration_seconds int
number_of_pages_visited int
У него есть набор ключевых значений, которые относятся к значениям в других таблицах † и два неключевых ключа. Неклавиши являются числовыми значениями и называются мерами . Можете ли вы взять среднее значение бренда веб-браузера? Нет, так что это измерение. Можете ли вы взять среднее значение продолжительности посещения? Да, так что это мера.
Другие таблицы называются таблицами измерений , и ip_address
таблица измерений может выглядеть следующим образом:
ip_address_key bigserial primary key, /* use meaningless surrogate keys */
ip_address inet unique,
country text,
division text,
locality text,
latitude numeric(8,6),
longitude numeric(9,6)
Обратите внимание, что это не нормализовано: страна может быть получена из города (населенного пункта). Однако в хранилище данных мы в первую очередь заботимся о том, чтобы облегчить анализ . Под упрощением анализа я имею в виду избегание глубоких объединений.
Обратите внимание, что некоторые данные в таблице измерений являются иерархическими : страна> раздел> местность. Ваш сервер OLAP (надеюсь) понимает иерархии для поддержки операций детализации.
Логический куб - это просто набор измерений и мер, с которыми вы работаете. В отличие от кубика Рубика, он может иметь более трех измерений. Просто представьте измерение как столбец в вашем наборе данных.
OLAP - это набор операций, которые вы можете выполнять с набором данных, таких как поворот, нарезка, нарезка, сверление. Подумайте о сводных таблицах Excel. Сервер OLAP облегчает операции OLAP.
† обычно без внешних ключей
city
в ваших схемах нет упоминания a , поэтому, когда вы говорите,country could be derived from city
я не уверен, что вы имеете в виду.На изображении ниже, который является примером базовой схемы звезды. Размеры - это Dim_Tables.
Как правило, это значения, по которым вы хотите проанализировать данные. Таким образом, вы хотите посмотреть продажи определенного продукта, в определенной стране, за определенный диапазон дат.
В таблице fact_sales у вас есть только одна мера Units_Sold.
Меры (на простейшем уровне) - это просто вещи, которые вы хотите агрегировать при анализе на основе критериев в измерениях.
Если есть что-то более конкретное, что вы хотели бы знать, пожалуйста, дайте мне знать.
источник