Bonnard Docs
ModelingViews

Cubes

Select which cubes and members to expose in a view.

Overview

The cubes property defines which cubes are combined in a view and which of their members (measures, dimensions, segments) are exposed. This is the core mechanism for building focused analytical interfaces.

Example

views:
  - name: orders_overview
    cubes:
      - join_path: orders
        includes:
          - count
          - total_revenue
          - status
          - created_at

      - join_path: orders.users
        includes:
          - name
          - email

Properties

join_path (required)

Specifies which cube to include and how to reach it via joins:

cubes:
  # Direct cube reference
  - join_path: orders

  # Joined cube (orders -> users)
  - join_path: orders.users

  # Multi-hop join (orders -> users -> countries)
  - join_path: orders.users.countries

includes

List specific members to expose:

- join_path: orders
  includes:
    - count           # measure
    - total_revenue   # measure
    - status          # dimension
    - created_at      # dimension

Include all members with "*":

- join_path: orders
  includes: "*"

excludes

Remove specific members when using includes: "*":

- join_path: orders
  includes: "*"
  excludes:
    - internal_notes
    - debug_flag

prefix

Add cube name prefix to avoid naming collisions:

- join_path: orders
  prefix: true
  includes:
    - count  # Becomes "orders_count" in the view

Member Customization

Override member properties when including:

- join_path: orders
  includes:
    - name: count
      alias: order_count
      title: "Total Orders"
      description: "Number of orders placed"

    - name: total_revenue
      alias: revenue
      format: currency

Customization Options

OptionDescription
aliasRename the member in this view
titleOverride display name
descriptionOverride description
formatOverride data format
metaOverride metadata

Common Patterns

Focused Dashboard View

views:
  - name: sales_dashboard
    cubes:
      - join_path: orders
        includes:
          - count
          - total_revenue
          - average_order_value
          - created_at

      - join_path: orders.products
        includes:
          - name: name
            alias: product_name
          - category

Multi-Cube Aggregation

views:
  - name: customer_360
    cubes:
      - join_path: users
        includes: "*"
        excludes: [password_hash, api_key]

      - join_path: users.orders
        includes:
          - count
          - total_revenue

      - join_path: users.support_tickets
        includes:
          - count

See Also

  • views
  • views.includes
  • cubes.joins