Skip to main content

Building the Semantic Model

Once you’ve defined your semantic model with views, entities, dimensions, and measures, you need to build it before use:
This command validates and compiles your semantic model definitions, making them available to agents, workflows, and routing agents. Always run oxy build after creating or modifying semantic model files to ensure your changes are picked up.

In Agents

Add the semantic_query tool to your agent to enable it to query the semantic model directly. The agent can then answer business questions using your defined metrics and dimensions.

Basic Setup

agents/analytics.agent.yml

Tool Configuration

The semantic_query tool has the following properties:
When querying a topic with default_filters, those filters are automatically applied to all queries. User-provided filters are combined with default filters using AND logic. For example, if a topic has a default filter for tenant_id = 'abc123', every query will be scoped to that tenant regardless of additional filters specified by the user.

Example Queries

Once configured, your agent can handle queries like:
  • “What’s the total revenue by customer segment?”
  • “Show me the top 5 products by sales this month”
  • “What’s the average order value for each acquisition channel?”
The agent will use the semantic model to understand available dimensions and measures, then construct appropriate queries.

Multiple Topics

You can add multiple semantic_query tools for different topics:
agents/multi_domain.agent.yml

In Workflows

Use the semantic_query task type in workflows to execute structured queries against your semantic model. This is ideal for automated reporting, data pipelines, and scheduled analytics.

Basic Workflow Task

workflows/sales_report.workflow.yml

Semantic Query Task Properties

Field Referencing

Reference dimensions and measures using the format view_name.field_name:

Filtering Data

Apply filters to narrow down your results. These filters are combined with any default_filters defined in the topic using AND logic:
If the topic ecommerce_analytics has default filters (e.g., tenant_id = 'xyz'), they are automatically applied along with the filters specified above. All default filters and user filters must be satisfied.

Ordering Results

Control the sort order of your results:

Advanced Example

workflows/customer_analysis.workflow.yml

In Routing Agents

Routing agents can include semantic topics as routes, enabling intelligent task routing based on semantic understanding.

Adding Topics to Routes

agents/_routing.agent.yml

Complete Routing Example

agents/_data_router.agent.yml

Best Practices

Agent Usage

  • Provide clear system instructions on when to use semantic queries
  • Include multiple topics for agents that span business domains
  • Let the agent decide which dimensions and measures to use based on the question

Workflow Usage

  • Use semantic queries for repeatable analysis patterns
  • Leverage variables for dynamic filtering
  • Chain semantic queries with agent tasks for insights generation

Routing Agent Usage

  • Include semantic topics alongside specialized agents and workflows
  • Use glob patterns to automatically include all topics
  • Provide clear routing instructions in system_instructions
  • Configure appropriate fallback routes

Performance

  • Use limit to constrain result set size when appropriate
  • Be selective with dimensions—only include what you need
  • Consider adding indexes on frequently filtered columns
  • Use default_filters in topics for common business rules

Error Handling

  • Test your semantic queries before deploying to production
  • Handle cases where queries return no results
  • Provide meaningful error messages to users
  • Monitor query performance and optimize as needed

Topics

Organize views into topics

Agents

Learn more about agents

Workflows

Learn more about workflows

Overview

Back to semantic model overview