With RudderStack, you need not define a schema for your event data before sending it from your source device. RudderStack automatically does that for you, before dumping the data into the warehouse.
This document covers the structure of this warehouse schema in detail, and the columns created in different tables based on different events.
The source name (written in snake case, e.g.
source_name) is used by RudderStack to create a schema in the warehouse (called dataset in case of BigQuery). The schema name once created by RudderStack cannot be not changed subsequently, even if you edit the source name on the RudderStack dashboard.
Below is a comprehensive list of tables that are created for each RudderStack source which is connected to the warehouse:
All the common properties along with the custom properties for a
All the unique users are stored in this table.
Only the latest properties used to
Below are the list of some common properties set on all the tables mentioned above:
Anonymous ID of the user
Context properties set in the event
Unique message ID of the event, except for the
The field will be the user ID in case of
Timestamp set by the RudderStack SDK when the event call was sent
Timestamp registered by RudderStack at the time of event ingestion
Calculated by RudderStack to account for the client clock skew. The formula used:
Timestamp registered by RudderStack SDK when call was invoked
A subset of the ISO 8601 timestamp formats are recognized as timestamp. Anything else is not recognized as timestamp. Listed below are the accepted timestamp formats.
There are some limitations when it comes to using reserved words in a schema, table, or column names. If such words are used in event names, traits or properties, they will be prefixed with a
_when RudderStack creates tables or columns for them in your schema.
Besides, integers are not allowed at the start of the schema or table name. Hence, such schema, column or table names will be prefixed with a
'25dollarpurchase' will be changed to
More details about the list of reserved keywords can be found in the individual warehouse destination docs.
A column in a table once recognized and set as a specific data type by RudderStack will not accept values of other data types. We set the value of the column as
NULL for the new event
As an example, a
Added to Cart track event has a property
cart_value has been recognized and set as
int as RudderStack based on initial events. If a new
Added to Cart event has
cart_value property as string, the value of it will be set as
NULL in the warehouse.