Je construis un entrepôt de données qui inclut des informations de livraison pour les restaurants. Les données sont stockées dans SQL Server 2005 et sont ensuite placées dans un cube SQL Server Analysis Services 2005.Comment concevoir une table de faits pour les données de livraison
Les informations livraisons comprend les tableaux suivants:
FactDeliveres
- BranchKey
- DeliveryDateKey
- ProductKey
- InvoiceNumber (DD: dimension dégénérée)
- Quantité
- UnitCosT
- Linecost
Note:
- La granularité de FactDeliveres est chaque ligne sur la facture
- La dimension de produit comprend des informations des fournisseurs
Et le problème: il n'y a pas de clé primaire pour la table de faits. La clé primaire doit être quelque chose qui identifie de manière unique chaque livraison plus le ProductKey. Mais je n'ai aucun moyen d'identifier de manière unique une livraison.
Dans la base de données OLTP source, il existe un ID de livraison unique pour chaque diffusion, mais il s'agit d'un ID interne qui n'a aucun sens pour les utilisateurs. L'InvoiceNumber est le numéro de facture des fournisseurs - il est tapé manuellement et nous obtenons donc des doublons.
Dans le cube, j'ai créé une dimension basée uniquement sur le champ InvoiceNumber dans FactDeliveres. Cela signifie que lorsque vous groupez par InvoiceNumber, vous pouvez obtenir 2 livraisons combinées uniquement parce qu'elles ont (par erreur) le même InvoiceNumber. Je pense que j'ai besoin d'inclure le DeliveryID (à être appelé DeliveryKey), mais je ne sais pas comment.
Alors, dois-je:
- utiliser comme la clé sous-jacente de la dimension InvoiceNumber?
- Créer un DimDelivery qui se développe chaque fois qu'il y a une nouvelle livraison? Cela pourrait signifier que certains attributs sortent de FactDeliveries et vont dans DimDelivery, comme DeliveryDate, Supplier, InvoiceNumber.
Après tout cela, je pourrais vous demander: comment puis-je créer un cube de livraisons quand j'ai les informations suivantes dans ma base de données source
DeliveryHeaders
- DeliveryID (PK)
- DeliveryDate
- SupplierID (FK)
- InvoiceNumb er (tapé manuellement)
DeliveryDetails
- DeliveryID (PK)
- ProductID (PK)
- Quantité
- UnitCosT
Si l'une de ces commandes est associée à un contrat d'approvisionnement à long terme, vous pouvez inclure cette information. C'est une exigence de rapport assez typique pour les systèmes d'approvisionnement. –