Réponses:
Pensez à un processus ou à un événement que vous souhaitez analyser.
Supposons que vous construisiez Lougle Analytics et que vous souhaitez analyser les visites (par opposition aux demandes d'une seule page) sur votre site. La visite d'un site Web est un processus.
Une table de faits représente un processus ou un événement que vous souhaitez analyser, dans ce cas, il s'agit d'une liste de visites sur site. Vous pouvez avoir autant de tables de faits que vous le souhaitez, une par processus ou événement.
Quels éléments pourraient vous être utiles dans l'analyse des visites sur site?
Techniquement, vous pouvez mettre tout cela dans une seule table - comme vous le feriez dans Excel, mais cela deviendrait très gros très rapidement, nous ferons donc UN niveau de normalisation. La conception dimensionnelle consiste souvent simplement à «mettre tout ce dont vous avez besoin pour une analyse dans une grande table», puis à normaliser un niveau.
Ainsi, votre table de faits ressemblera à ceci:
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
Il a un tas de valeurs clés qui font référence à des valeurs dans d'autres tableaux †, et deux non-clés. Les non-clés sont des valeurs numériques et sont appelées mesures . Pouvez-vous prendre la moyenne du nom de marque du navigateur Web? Non, c'est donc une dimension. Pouvez-vous prendre la moyenne de la durée de la visite? Oui, c'est donc une mesure.
Les autres tables sont appelées tables de dimension , et la ip_address
table de dimension peut ressembler à ceci:
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)
Notez qu'il n'est pas normalisé: le pays peut être dérivé de la ville (localité). Cependant, dans un entrepôt de données, nous nous soucions de faciliter d' abord l' analyse . En facilitant l'analyse, j'entends éviter les jointures profondes.
Notez que certaines des données de la table de dimension sont hiérarchiques : pays> division> localité. Votre serveur OLAP (espérons-le) comprend les hiérarchies pour prendre en charge les opérations d'exploration.
Un cube logique n'est que la collection de dimensions et de mesures avec laquelle vous travaillez. Contrairement à un cube Rubik, il peut avoir plus de 3 dimensions. Considérez simplement une dimension comme une colonne dans votre ensemble de données.
OLAP est un ensemble d'opérations que vous pouvez effectuer sur un ensemble de données, tel qu'un pivotement, un découpage, un découpage en dés, un perçage. Pensez aux tableaux croisés dynamiques Excel. Un serveur OLAP facilite les opérations OLAP.
† généralement sans clés étrangères
Dans l'image ci-dessous, qui est un exemple d'un schéma en étoile de base. Les dimensions sont les Dim_Tables.
Ce sont généralement les valeurs par lesquelles vous souhaitez analyser les données. Donc, vous voulez regarder les ventes d'un produit particulier, dans un pays particulier, sur une plage de dates particulière.
Dans la table fact_sales, vous n'avez qu'une seule mesure qui est Units_Sold.
Les mesures (au niveau le plus simple) ne sont que des éléments que vous souhaitez agréger lors de l'analyse en fonction de critères dans les dimensions.
S'il y a autre chose de plus spécifique que vous aimeriez savoir, faites-le moi savoir.
city
dans vos schémas, donc quand vous ditescountry could be derived from city
que je ne suis pas certain de ce que vous voulez dire.