2017-02-14 2 views
0

Nous avons une table de faits qui recueille des informations détaillant quand un employé a sélectionné un avantage. Le problème que nous essayons de résoudre est de savoir comment compter le total des avantages sélectionnés par tous les employés.Fact Table Design - Comment capturer un fait qui précède la date de début des données

Nous avons un indicateur BenefitSelectedOnDay et normalement, nous pouvons faire un SUM sur ceci pour obtenir un résultat, mais cela ne fonctionne que pour les sélections de bénéfices depuis que nous avons commencé à charger les données.

Par exemple:

  • client Suppose n ° 1 a été avec nos outils d'analyse depuis Octobre 2016. Nous avons 4 mois de données dans la plate-forme.
  • Lorsque les données sont chargées en Octobre, les données source d'avantages affiche:
    1. Employé # 1 sélectionné un avantage le 4 Avril 2016.
    2. employé # 2 sélectionné une prestation le 3 Octobre 2016

La définition de l'indicateur BenefitSelectedOnDay pour l'employé n ° 2 est très simple. Le problème est que faire avec l'employé n ° 1 parce que nous ne pouvons pas définir un indicateur sur un jour qui n'existe pas pour ce client dans la table de faits. Les données du client n ° 1 commenceront le 1er octobre 2016.

Le comptage de la sélection des avantages est problématique dans certains scénarios. Si nous filtrons le rapport par date et ne considérons que les sélections de prestations au quatrième trimestre 2016, nous n'avons aucun problème. Mais, si nous voulons un nombre total de sélections, nous avons un problème car nous n'avons pas défini d'indicateur pour l'employé n ° 1 car la date de sélection précède la plage de données du client n ° 1 (1er octobre 2016 - 31 janvier 2017).

+0

Pourriez-vous nous montrer à quoi ressemble le fait? Il pourrait être préférable d'avoir une représentation précise d'une date à laquelle un employé a commencé un avantage, plutôt que d'essayer de trouver la date dans un fait et de le signaler. Peut-être y a-t-il deux faits en jeu ici – Rich

Répondre

0

Deux approches semblent logiques dans votre scénario:

  1. charge des données historiques remontant jusqu'à la première date de sélection des prestations qui est encore pertinent pour l'information actuelle. Bien que cela puisse prendre un peu de travail et de l'espace supplémentaire, cela peut être votre seule solution si les employés sont admissibles à des avantages différents en fonction de la durée pendant laquelle l'avantage a été actif. Ajoutez des enregistrements pour un seul jour avant la date d'inscription (30 septembre dans ce cas) et marquez tous les avantages précédemment sélectionnés et actifs à la date d'inscription du client (1er octobre) comme étant sélectionnés à cette date. Ils tomberont en dehors de la fenêtre de rapport d'octobre, mais compteront pour des requêtes illimitées. Si les avantages sont un binaire on/off chose qui devrait fonctionner très bien.

Personnellement, je voudrais aller avec l'option 1 sauf si les exigences de stockage sont ridicules. Même alors, vous pouvez charger uniquement les enregistrements marqués dans la table de faits. Votre client pourrait être confus s'il est en mesure de sélectionner une période avant la date d'adhésion et obtenir des données brisées, mais vous pouvez expliquer/justifier cela.