This parameter should be used on the aggregated view, which will allow Omni to match the aggregated table to the underlying views it aggregates.Documentation Index
Fetch the complete documentation index at: https://docs.omni.co/llms.txt
Use this file to discover all available pages before exploring further.
Syntax
Thefields parameter accepts two formats: an object (recommended) or an array.
- Object (recommended)
- Array
Properties
Maps field names from the base table to columns in the aggregated view, specified as
view_name.field_name.- Object format (recommended): Each key is a field from the base view and each value is the corresponding column name in the aggregate table. This format is more explicit and easier to maintain.
-
Array format: A positional array of field names that correspond to columns in the aggregated view in the order they appear in the view’s
sqlstatement.
fields mapping for aggregate awareness to work across those joins. Without the join keys, Omni cannot optimize queries that involve joins.The name of the base view that this aggregated view summarizes.
Examples
In this example, you have anorder_items table that contains a few metrics. Using aggregate awareness, you can create a user_facts table that rolls up these metrics.
Let’s take a look at how the fields in the underlying views will map to the fields in the aggregated user_facts view:
| Underlying view fields | Aggregated user_facts fields | |
|---|---|---|
users.id | becomes | user_id |
order_items.created_at[month] | becomes | month |
order_items.count | becomes | count |
order_items.total_sale_price | becomes | total_sale_price |
user_facts.view file would look like this:
- Object (recommended)
- Array
user_facts.view file
users.id is included in the fields mapping. This is the join key between order_items and users, which enables aggregate awareness to work across joins in topics. When a query joins these tables, Omni can use the user_facts materialized view and perform the join against the pre-aggregated table rather than the full order_items table.
Without aggregate awareness, a query requesting these fields would join the underlying tables and aggregate at query time:
Query without aggregate awareness
materialized_query configured, Omni recognizes that user_facts already contains these results and rewrites the query to hit the aggregate table directly, eliminating the join:
Query with aggregate awareness