Skip to content Skip to sidebar Skip to footer

Fact Table With Information That Is Regularly Updatable In Source System

I'm building a dimensional data warehouse and learning how to model my various business processes from my source system in my warehouse. I'm currently modelling a 'Bid' (bid for wo

Solution 1:

Like one of the comments mention, Change Data Capture is a fairly generic term for "how do I handle changes to data entities over time", and there are entire books on it (and a gazillion posts and articles).

Regardless of any statements that seem to suggest a clear black-and-white or always-do-it-like-this answer, the real answer, as usual, is "it depends" - in your case, on what grain you need for your particular fact table.

If your data changes in unpredictable ways or very often, it can become challenging to implement Kimball's version of an accumulated snapshot (picture how many "milestone" date columns, etc. you might end up needing).

So, if you prefer, you can decide to make your fact table be an transactional fact table rather than a snapshot, where the fact key would be (Bid Key, Timestamp), and then in your application layer (whether a view, mview, actual app, or whatever), you can ensure that a given query only gets the latest version of each Bid (note that this can be thought of as kind of a virtual accumulated snapshot). If you find that you don't need the previous versions (the history of each Bid), you can have a routine that prunes them (i.e. deletes or moves them somewhere else).

Alternatively, you can only allow the fact (Bid) to be added when it is in it's final state, but then you will likely have a significant lag where a new (updateable) Bid doesn't make it to the fact table for some time.

Either way, there are several solid and proven techniques for handling this - you just have to clearly identify the business requirements and design accordingly.

Good luck!

Post a Comment for "Fact Table With Information That Is Regularly Updatable In Source System"