Data Modeling with AQL
What is a data model
A data model is an abstract representation on top of a database table/SQL query that you may manipulate without directly affecting the underlying data.
from Holistics Documentation
This definition is a bottom-up definition. From a top-down point of view, a data model represents a Business Entity.
The fact that it's backed by a database table or a SQL Query is only an implementation detail. For example, every business has its own concept of What a User is. The job of a data model is to expose a concrete object representing that concept for Business Users to reason and interact with.

One crucial aspect of understanding the data model is understanding what Dimensions and Measures are.
Measure
Measures are numeric values obtained by aggregating individual values, serving as key indicators (KPIs) for specific aspects or processes of a business. Using the context of the user model as an example, a measure would be something like total_users, active_users, life_time_value, etc.
However, measures alone may lack meaning. How can we address questions about factors such as
- "What led to the growth in Total Users this month"?
- "Where did the new users come from?"
- "Was it a result of a recent promotion?"
This is where dimensions come in
Dimension
Dimensions are attributes of the model, and they give us the context to help us understand the meaning of the measures. For example, Total Users don't mean much as an isolated number

Using the Sign Up At dimension, we can break Total Numbers down into the month level and have more context to understand what it means

This gave us the context to understand:
- What is the increase this month?
- How is the increase compared to other months?
- Which month has the highest spike in Registered Users?
This type of analysis is called “slice-and-dice", meaning we chose an arbitrary set of dimensions to break a measure down to the Level of Detail defined by the dimensions.
