Datasets
What each of the four datasets contains, what exactly one row means, and how they join together.
Start with Reading the columns if you are deciding what to load; it maps the ticket columns into families and explains the types. Column values lists what the status columns can contain.
The shape of the model
Tickets is the wide, denormalised centre: it carries the event, article, sale, buyer and holder context flattened onto every row. The other three are narrow and deliberately carry none of that context — join them back to Tickets when you need it.
| From | To | Join on | Grain effect |
|---|---|---|---|
TicketUsages | Tickets | MandatorInternalId, TicketInternalId | many to one |
Surveys | Tickets | MandatorInternalId, TicketInternalId | many to one |
StatisticGroups | Tickets | MandatorInternalId, ArticleInternalId | many to one |
That denormalisation is intentional. It means most questions can be answered from Tickets alone, without a join, and the join keys you do need are few and obvious.
Note the grain change on the joins: a ticket has many usages, and an article has many statistics groups. Both multiply rows, so aggregate deliberately rather than counting after joining.