Skip to content

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.

FromToJoin onGrain effect
TicketUsagesTicketsMandatorInternalId, TicketInternalIdmany to one
SurveysTicketsMandatorInternalId, TicketInternalIdmany to one
StatisticGroupsTicketsMandatorInternalId, ArticleInternalIdmany 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.

Subsections#sub

Endpoints#endpoints