My first Publication Agile-Data-Warehouse-Design-eBook | Page 256

236 Chapter 8 If all the repeated milestone values are needed they must be modeled as discrete events If milestone events have a M:M relationship it may not be appropriate to combine them in the same evolving event Tell process stories that describe the typical, min and max intervals between milestones Use missing values to describe the initial state of an event. You also want to describe its final states, completed or otherwise How Many Typically, BI queries will use the most recent values for a repeating milestone but if stakeholders say they need all the values then you will have to model the milestone as a separate discrete event at its atomic-level of detail. If you have already done so you can point the stakeholders at its event table. Either way, you still want to push for a single value definition for each repeating detail so that you can add it to the evolving event. To help stakeholders to understand why the most recent value would be useful, remind them that the role of the new event table is to summarize the current progress or final state of each evolving event story. If stakeholders continue to struggle to give you a single value definitive answer for a detail, then it probably does not belong in the evolving event. This can happen where there is a M:M relationship between milestones and more complex alloca- tions are needed. In which case, it may not be appropriate to combine any of the details from the milestone. If the initial event and a milestone turns out to have a M:1 relationship, this is not so problematic but some allocation of additive quanti- ties will be needed. For example, if 2 different orders for 100 units are partially fulfilled by a single shipment of 190 units, a SHIPPED QUANTITY of 100 must be assigned to the first evolving order event and 90 assigned to the second. If you determine that a milestone' detail belongs in the event, you should use its examples to tell interesting process stories. For milestone dates, ask stakeholders to give you examples that will represent typical, minimum, and maximum intervals between milestones. If a detail has already been modeled as part of a discrete event, you may be able to reuse values from its event table, but these must make sense in combination with the examples already present in the evolving event. For example, if you have used a relative time value like “Today” for ORDER DATE you might leave SHIP DATE as missing to show that initially there is no shipment yet for an order loaded into the data warehouse today. As you add new details, you may have to alter some of the existing examples dates to bring out interesting scenarios, such as the initial and final states of the event. The initial state will have missing values for all the milestone details that have not happened yet. This means some details that are mandatory in discrete events must become optional in the evolving event. For example, CARRIER is always present on a CARRIER DELIVERY event but will be “Unassigned” in the evolving CUSTOMER ORDERS event if an order has not been shipped yet. If there can be more than one final state, try to capture additional process stories for each possible outcome; for example, ask stakeholders to give you stories of successfully com- pleted orders and cancelled orders. When you have finished modeling an evolving event, it is a good idea to reorder the details after the main clause in W and process order—keeping all the whens, whos, whats, wheres, and so on together in the order they appear chronologically. Doing so can make a complex evolving event much easier to read.