• I think auditing the history of data is important. It's not something that can be added retrospectively so the sooner you implement a solution, the better.

    My personal preference is for an AuditKey column in every dimension. This is a foreign key to an Audit dimension which contains detailed information on how that piece of data was put there, e.g. the date and time it was last changed as well as the ETL involved in moving it etc. You could go to town on this and it depends very much on how complex your ETL is. Keeping the history of the changes made to data can be very useful in tracking errors or problems down the line. By adding a step to all your ETL processes that inserts to the Audit dimension you can keep this system going for future changes.