My first Publication Agile-Data-Warehouse-Design-eBook | Page 107
86
Chapter 3
Historic Value Attributes
Historical value (HV)
attributes support
“as was” reporting
HV attributes
require more ETL
resources, but
provide more
flexible reporting
Historic value (HV) attributes support “as was” reporting by providing the histori-
cally correct dimensional values to group and filter historical events and measures.
Everything is reported “as it was” at the time of the event. Returning to the Mori-
arty example, an HV customer STATE attribute would roll last year’s orders up to
New York, and this year’s up to California.
Preserving dimensional history requires more ETL work but data warehouses that
are built using HV dimensions are more flexible. Not only can they correctly
answer the “What were things really like when …?” questions by default, they can
also be used with minimal effort to recast history to current values for “as is”
reporting, or to a specific date, such as a financial year-end for “as at” reporting.
HV dimensions techniques for supporting both “as is” and “as was” reporting are
covered in Chapter 6.
Historic value dimensional attributes support the agile principle “Welcome chang-
ing requirements, even late in development.” Stakeholders are able to change
their mind about using current or historic values without ETL developers “tearing
their hair out” and having to reload the data warehouse.
Telling Change Stories
You discover
temporal properties
by telling change
stories
To discover exactly how a dimension handles descriptive history, you add an extra
row to the dimension table, to hold a change story for each attribute and ask the
stakeholders to help you fill it out. For each attribute, you start by asking if it can
change; for example:
Can the PRODUCT NAME of a PRODUCT change?
If the answer is NO, label the attribute as fixed value with the short code FV and
copy its example value from the first row (the typical member) into its change story
as in Figure 3-15 to illustrate that it is unchanging over time. Then move on to the
next attribute.
If the answer is YES, the attribute’s values are not fixed and you need to ask a
follow-on question to discover if stakeholders want/need (not always the same
thing) historical values. For example, if PRODUCT TYPE is not FV ask:
If the PRODUCT TYPE of a PRODUCT changes will you need its
historic values for grouping and filtering your reports?