name
and description
fields, or include any combination of dimensions
, measures
, metrics
, filters
, and relationships
as needed.
customers
, products
, employees
, stores
, invoices
, aircraft
.dimensions
(customer name, product category, employee department, store location, invoice status). May also include some measures
directly related to the entity (e.g., credit_limit
for a customer) or summary/rollup metrics
(e.g., total_invoiced_amount
on an invoice model).is_premium_customer
, product_is_discontinued
).page_views
, orders
, transactions
, login_events
, support_tickets
, security_incidents
.dimension
. They contain dimensions
describing the event (e.g., URL for page view, order status, transaction type, user agent for login). They typically contain measures
quantifying the event (e.g., order_amount
, view_duration_seconds
, transaction_value
). Summary metrics
related to the event itself might be included.relationships
) linking back to multiple Entity-Focused models (e.g., an orders
event links to customers
, products
, and employees
).last_7_days
, this_quarter
) or event attributes (successful_logins
, high_priority_tickets
).monthly_revenue
, daily_user_activity
, campaign_performance_facts
.measures
that contribute to the core metric
(s). The dimensions
are typically foreign keys (e.g., date_id
, customer_id
, product_id
, region_id
) that link to separate Entity-Focused models. They might also include degenerate dimensions (attributes directly on the fact record).metrics
(e.g., total_revenue
, active_users
, conversion_rate
) calculated from the base measures.entities
to connect the foreign key dimensions back to their respective dimension/entity models.last_quarter
, year_to_date
) or filters related to the metric calculation itself.relationships
clearly to connect your models. This is how Buster understands how events relate to entities (e.g., which customer placed which order).orders
model (Event) will link to customers
and products
(Entities)..yml
files within the specified model paths in your buster.yml
.
This approach, organizing models into separate files, often grouped into subdirectories based on business domain (e.g., models/finance/
, models/marketing/
, models/product/
), is essential for improving discoverability and maintainability as your semantic layer grows.
order_items
, not OrderItems
or order-items
).name
) and add dimensions, measures, etc., incrementally as analysis requires.page_views
model, demonstrating various optional components: