The AI does the thinking.
The compiler does the SQL.
Most natural-language tools translate your question straight into SQL. Holistics adds an intermediary step. The AI first writes concise, high-level AQL, which a compiler then turns into your warehouse's SQL.
metric count_users = count(users.id)dimensions { region: country.region }measures {avg_revenue:top(5, countries.id, by: count_users) | avg(revenue)}
WITH "aql__t3" AS (SELECT "ecommerce_countries"."continent_name"AS "ecommerce_countries→continent_name","ecommerce_countries"."name" AS "name",COUNT("ecommerce_users"."id") AS"count_ecommerce_users→id"FROM "ecommerce"."users" "ecommerce_users"JOIN "ecommerce"."countries" …
Routing the AI through AQL instead of straight to SQL pays off on every axis that matters for agentic analytics.
The answer comes back as a few lines of compact, high-level logic instead of pages of SQL. It's small enough to read, comprehend, and verify yourself.
Working in a high-level language, the AI never sweats database-specific syntax or SQL gymnastics for common analytics, so it's far more accurate than a model writing raw SQL directly.
AQL works directly with your semantic layer, so generated logic always uses the correct metric and dimension definitions, and clears access-control checks before it serves an end user.
Composability and 90+ pre-built analytical functions let it handle far more complex use cases, the long-tail questions that direct SQL generation stumbles on.

