it's the job of the ETL process to do the cleansing and detect the errors.
and, in the idea of filling a cube after the DW, indexes are not required
and slow down the loading process of the database.
filling a cube doesn't required any index, it's a full scan read process.
it's why they don't talk about PK.
but it's your choice, In my case I'm using PK on the fact tables because I
have to produce reports based on the leaf level of my fact table.
> Looking at M$ and Kimball examples - I don't see any of them defining a PK
> inside the fact tables. Isn't this bad since it won't offer integrity and
> allow duplicates to be inserted?