• emiranda 59653 (4/2/2014)


    I'm not too sure how useful they are for ETL unless doing auditing as by their nature, surrogate keys won't exist on source systems, but then again I'm not too experienced on data warehouses which is why I'm asking for people's opinions.

    I always do my surrogate key processing in a staging area. By the time the data is prepared the keys are already populated - with the already-existing key values for rows to be updated/deleted and with newly generated key values for new rows. That way the final step of actually refreshing the data is kept as small and efficient as possible. If you do need to do updates and deletes against your table then having the surrogate key avoids another set of more complex joins to perform those updates. If your fact table is insert-only then the surrogate key probably won't help you.