Thursday, February 4, 2010

Falling in Love with Degenerate Dimensions

Since February is the month of love, and my love for my husband is not so likely to have me waxing rhapsodic so many years into our courtship, I thought I'd talk about my burgeoning love of Degenerate Dimensions.

I've been flirting with the idea for a while now. The fact that I can use Microsoft's Data Source View to make the fact table look like itself, a fact table, but also have it contort itself into numerous additional dimension "views" using the Named Query option. All those views, one place, SSAS, to implement them.

What if I were to really throw caution to the wind? What if I implemented a cube with no dimension tables at all. None. With every dimension a degenerate, I only have one table to load. Sure, I have to put in a lot of varchar values to get things looking nice, but is that really as bad as it used to be? And will it totally take care of slowly-changing dimension issues? In a really elegant way?

I've got a client who has just 56 customers. The client is tracking things about these customers over a ten year span.

"Egads, 560 records!" you say, "You're going to put everything into a single fact table and make all the dimensions degenerate in a table that has 560 records and grows by less than a hundred records every year?"

I know. It's crazy talk. But falling in love is all about crazy.

No comments: