2017-08-04 3 views
0

Objectif: J'ai un modèle de base de données relationnelle (RDB). Quelques tables ont un horodatage d'attribut. Je souhaite créer une dimension de date pour mon modèle multidimensionnel.Migration relationnelle à multidimensionnelle - Comment créer une dimension temporelle à partir d'un horodatage - SSAS

Affichage de la solution Microsoft Tutorial Solution 3, j'ai remarqué que l'attribut FullDateAlternateKey de la table de dimension de date a le même format que l'attribut timestamp dans les tables RDB.

Question: Alors, je me demandais s'il y a un moyen de générer automatiquement un schéma de la table de dimension Date (avec la FullDateAlternateKey comme clé primaire) et le remplir avec les données des horodateurs dans les tableaux du RDB?

Ensuite, je pourrais faire l'attribut d'horodatage à partir des tables du RDB une clé étrangère à la table de dimension temporelle dans mon modèle multidimensionnel.

Répondre

-1

Étape 1: Choisissez la granularité et générez la clé de dimension temporelle en fonction de cette granularité. Par exemple, en choisissant l'heure de granularité, il faudrait quelque chose comme 2001020323 (aaaaammjjh). Il n'existe pas de méthode automatique pour cela en utilisant SSAS. Il est donc préférable d'utiliser un script pour créer la table de dimension temporelle dans la source de données sous-jacente, puis l'importer dans DSAS et l'utiliser pour créer la dimension temporelle. (like this one)

Étape 2: Je dois correspondre les touches de dimension temporelle, donc je besoin d'un/script de processus ETL/travail en prenant mon horodatage en entrée et en retournant une clé pour cet horodatage qui correspond aux clés dans la dimension temporelle table.

+1

Une dimension qui n'a que des horodatages utilisés dans les faits n'est pas utile en tant que dimension heure/date. Elle doit être une dimension continue de dates ou d'heures, y compris celles qui ne sont pas utilisées selon la réponse de Ron.Vous seriez certainement capable de créer une dimension à partir des horodateurs de votre fait, en interrogeant cela dans le DSV, mais Ron a raison: non. – Rich

+0

Je dois faire correspondre les clés de la dimension temps, d'où la nécessité de l'ETL sur mon horodatage. – Testing360

+1

Bien sûr. Mais votre dimension de temps devrait être faite indépendamment de ce qui est dans votre réalité, et ensuite vous correspondez à cela. – Rich

2

Ne pas.

Décidez d'abord du "grain" de votre cote. Il semble que vous vouliez une dimension DATE, donc le grain sera un jour.

Puis, décidez des colonnes que vous souhaitez dans la dimension. Exemples: numéro de semaine, numéro de jour dans semaine, numéro de jour dans année, nom de jour, nom de mois, etc.

Ensuite, créez une feuille de calcul contenant une rangée par date, pour la plage de dates dont vous avez besoin, et calculez la colonnes dont vous avez besoin. Enfin, chargez et traitez la cote à partir de la feuille de calcul en utilisant votre méthode ETL/ELT préférée.

La raison pour laquelle vous ne le compilez pas à partir des valeurs de données entrantes est que vous pouvez avoir des lacunes dans les données. Une dimension de date doit avoir TOUTES les dates dans la plage souhaitée (par exemple, 1900-01-01 à 2999-12-31) afin que vos outils BI puissent éventuellement l'utiliser pour les rapports de séries chronologiques. Si vous n'avez pas toutes les dates, et essayez d'afficher la date sur l'axe des x d'un graphique, vous obtiendrez des visualisations fausses.

Une autre raison d'utiliser une feuille de calcul comme source est que la dimension DATE est l'une des dimensions les plus volatiles de votre conception. Vos utilisateurs demanderont de nouvelles colonnes et des variations sur les colonnes (par exemple, "Pouvons-nous avoir une colonne avec la date du 4 août 2017?") Et une feuille de calcul est un moyen très rapide de gérer les données et de reconstruire dimension si nécessaire.

+0

Qu'en est-il des données qui se trouvent déjà dans la base de données? Comment cela va-t-il correspondre à la dimension temporelle? C'est mon problème/doute. J'ai besoin de montrer les données qui proviennent d'une base de données relationnelle, j'ai donc besoin d'un moyen de convertir l'attribut timestamp de ces tables relationnelles en dimension date, afin que je puisse montrer ces tables. Ou pas? – Testing360

+1

Je ne connais pas votre processus de chargement, donc je ne peux pas identifier une seule solution, mais une option de travail serait d'ajouter une colonne DATE à votre table de faits, et de la remplir avec votre distribution d'horodatage à une date. Ensuite, si vous avez votre dimension de date saisie par date, vous pouvez joindre les deux tables. –