Skip to main content

Release Notes

Follow us on X to stay up-to-date with new releases!

๐Ÿ” Search Improvements

We're excited to announce our new Search Improvements For Tagged Objects, which allow you to use tags to find the exact item you need โ€” faster!

โœจKey Improvementsโ€‹

  • Prioritizing endorsed items: Endorsed dashboards and datasets are now featured at the top of your search results so that you can start your analysis with confidence. Learn how to mark an object as endorsed to help your team find reliable, high-quality content.
  • Searching by Tags:
    • Before: You have to search using keywords, then narrow down the results with the tag filter.
    • After: Skip the keywords! You can use the tag filter to get all objects associated with that tag. Learn how to organize your content with tags.

๐Ÿค– Auto-Generated Titles and Messages in Pull Request Workflow

Why this feature?โ€‹

Writing clear, descriptive PR titles and messages takes time and mental energy. Analysts often face writer's block when creating pull requests, leading to rushed or incomplete descriptions. This results in poorly documented changes that make code reviews harder.

How it worksโ€‹

  • Smart Generation: AI analyzes your code changes and automatically creates a clear title and detailed description
  • One-Click Usage: Accept the suggestions instantly or customize them to your needs
  • Context-Aware: Captures important details you might forget to mention

Before vs Afterโ€‹

Before (Manual Process)

  • Manually craft a descriptive title and message.
  • Spend time recalling and documenting all changes.
  • Risk inconsistent or incomplete descriptions.

After (AI-Powered)

  • AI instantly generates a clear title and detailed message.
  • One-click to accept the suggestions or customize them.
  • Ensure every PR has consistent, high-quality documentation.

Key Benefitsโ€‹

  • Faster PRs - No more writer's block when creating pull requests
  • Better Documentation - AI catches details you might forget to mention
  • Consistent Quality - Every PR gets a well-structured title and description
  • Time Savings - Spend less time on admin work, more time on analysis

Getting Startedโ€‹

To use this feature, you need to:

  1. Join the Alpha Program - Sign up for Holistics AI access
  2. Connect to GitHub - Integrate with your GitHub repository
  3. Enable PR Workflow - Activate the PR Workflow for your organization

Once enabled, the AI will automatically generate titles and descriptions for all new pull requests in your workflow.

๐ŸŽฏ Viz-aware AQL: Metrics that automatically adapt to your charts

๐Ÿ”ฅ Why this feature?โ€‹

Ever created the same metric 5 times just because users wanted to view data by month, quarter, AND year? Yeah, we fixed that.

๐Ÿ’ก How it worksโ€‹

  • Context-aware functions: New AQL functions that automatically adapt to visualization settings
  • Dynamic references: Use 'x_axis', 'rows', 'columns' instead of hardcoding dimensions
  • Automatic adaptation: Metrics recalculate correctly when users change chart configurations

Before vs Afterโ€‹

โŒ Before (Static AQL)

// Static period comparison - only works for monthly data
metric revenue_vs_prev_month {
definition: @aql
sum(orders.revenue) -
sum(orders.revenue) | relative_period(orders.created_at | month(), interval(-1))
;;
}

// Separate metric needed for yearly comparison
metric revenue_vs_prev_year {
definition: @aql
sum(orders.revenue) -
sum(orders.revenue) | relative_period(orders.created_at | year(), interval(-1 year))
;;
}

// Running total hardcoded to specific dimension
metric running_total_by_month {
definition: @aql
window_sum(sum(orders.revenue), order: orders.created_at | month())
;;
}

// Percent of total hardcoded to specific dimension
metric pct_of_product_total {
definition: @aql (sum(orders.revenue) | of_all(products.category)) / sum(orders.revenue) ;;
}

// ๐Ÿ˜ฐ Common issues:
// - Need duplicate metrics for each time grain
// - Calculations break when users change visualization settings
// - Running totals don't work when pivoting by different dimensions

โœ… After (Viz-aware AQL)

// One metric that adapts to any time grain
metric revenue_vs_previous_period {
definition: @aql
sum(orders.revenue) | relative_period(orders.created_at, -1)
;;
}

// Running total that follows visualization
metric revenue_running_total {
definition: @aql
window_sum(sum(orders.revenue), order: 'x_axis')
;;
}

// Percentage calculations that adapt to pivot structure
metric pct_of_row_total {
definition: @aql
percent_of_total(sum(orders.revenue), 'row_total')
;;
}

// ๐ŸŽ‰ Benefits:
// - Single metric works for monthly, quarterly, yearly views
// - Automatically adapts when users change chart settings
// - Drill-downs and pivots work seamlessly
Note

Your existing static AQL definitions continue to work as before - no breaking changes! If you want to make your metrics visualization-aware, you can modify them to use the new context-aware functions.

Functions that support viz-aware featuresโ€‹

Percentage Calculations

  • percent_of_total - Calculate percentages with 'row_total', 'column_total', or 'grand_total'

Time-based Functions

  • relative_period - Compare metrics across time periods that adapt to visualization granularity

Window Functions

๐Ÿš€ Better syntax validation for Canvas Dashboard

๐Ÿ”ฅ Why this feature?โ€‹

Some of our customers were struggling with cryptic field reference errors that only showed up when trying to publish dashboards. No clear error messages, no way to navigate to problems, and broken references went undetected when fields were renamed. This was creating a poor developer experience and blocking teams from scaling their analytics.

๐Ÿ’ก How it worksโ€‹

  • Real-time validation: Field reference errors now show up immediately with red underlines as you type
  • Click-to-navigate: Click on errors to jump directly to the problematic code
  • New r() syntax: Use r(users.id) instead of ref('users', 'id')

Before vs Afterโ€‹

โŒ Before (Old Syntax)

// Old syntax - prone to typos, no IDE support
VizBlock {
label: 'Revenue by Category'
viz: PieChart {
dataset: 'ecommerce'
legend: ref('products', 'category') // No validation
series {
field {
ref: ref('orders', 'revenue') // String-based, error-prone
aggregation: 'sum'
}
}
}
}

// ๐Ÿ˜ฐ Common issues:
// - Typo: ref('product', 'category') โ†’ No error until runtime
// - Renamed field: orders.revenue โ†’ orders.total_revenue โ†’ Broken reference
// - No autocomplete or navigation support

โœ… After (New Syntax)

// New syntax - validated, IDE-friendly
VizBlock {
label: 'Revenue by Category'
viz: PieChart {
dataset: 'ecommerce'
legend: r(products.category) // Real-time validation
series {
field {
ref: r(orders.revenue) // Click to navigate to definition
aggregation: 'sum'
}
}
}
}

// ๐ŸŽ‰ Benefits:
// - Typo: r(product.category) โ†’ Immediate red underline
// - Renamed field: Automatic detection of broken references
// - Full IDE support: autocomplete, go-to-definition, find usages
Note

This applies everywhere we use field references - not just dashboards but also Pre-aggregates.

๐Ÿ‘€ Migration to new syntaxโ€‹

We don't support mass conversion yet, but the transition is seamless:

  • New dashboards automatically use the new r(model_name.field_name) syntax
  • Existing dashboards convert to new syntax whenever you edit and save a widget
  • Old syntax still works - no breaking changes.

โœจ Holistics AI: Deprecate Explore data (basic), more unified experience

Weโ€™ve deprecated Explore Data (basic mode) to unify the experience - now in just a single Explore Data interface.

Alongside this, Explore Data now can Explain Chart - a new capability that helps you easily understand visualizations with clear, concise explanations of trends and patterns. It makes charts easier to interpret, so users can act on insights with more confidence.

๐ŸŒŸ More powerful, easier to use - now all in one place.


๐Ÿ“ฅ Interested in Holistics AI? Join the waitlist and start exploring a new way to work with data.

๐Ÿš€ Pull Request (PR) Workflow in Holistics

Open Beta

PR Workflow is in open beta and currently supports GitHub only

We're introducing a new Pull Request (PR) workflow to help organizations maintain quality and control over their dashboard changes. This feature empowers administrators to implement a robust review process before changes go live.

Why We Built Thisโ€‹

Have you ever discovered unexpected changes in your production dashboards? While you can track down who made the changes, by then the damage is already done.

The root cause? A lack of mandatory review process for dashboard changes. Without proper oversight, unrestricted publishing can compromise your project's reliability and integrity.

Key Featuresโ€‹

The new PR Workflow includes:

  • Company-wide Control: Administrators can enable/disable the PR Workflow for their entire organization
  • Review Management: Administrators and Dashboard Owners can review all changes before they go live
  • Streamlined Process for Analysts:
    • Easy submission of changes for review
    • Automatic publishing after PR approval and merge
    • Instant notifications if any errors occur during publishing

For detailed information, check out our PR Workflow documentation.

๐Ÿ’พย Reusable Component Library

You donโ€™t need a national survey to know that most data teams rebuild the same charts again and again across different dashboards. Weโ€™ve all been there, staring at a new dashboard request and thinking "I know we've built something like this before..."?

Your best dashboard components deserve to live multiple lives, not buried in some report from last quarter, waiting to be rebuilt from scratch.

With Reusable Component Library, every visualization you create can become a building block for future dashboards. Think of it as your team's collective intelligence, transformed into drag-and-drop components. When you need it again, simply grab it from your library, tweak it, and you're done.

For more information, please visit our documentation.

โœ… Content Endorsement

We're excited to announce Content Endorsement has been officially launched, a feature that provides your organization a powerful way to mark trusted and reliable content.

The Problem We've Solvedโ€‹โ€‹

As analytics content grows across your organization, users often struggle to identify which reports and dashboards are reliable and current. Without clear indicators of content quality and status, teams waste time on outdated materials and lack confidence in their data-driven decisions.

The Solutionโ€‹โ€‹

By offering Content Endorsement features, we help data teams mark trusted content. Users can easily identify reliable, recommended content.

Documentationโ€‹

For more details, please refer to our public docs: Content Endorsement

โฌ†๏ธ Import CSV & Google Sheets

Coming Soon

This feature is under development and will be released soon!

Why Spreadsheet Analysis Is Still A Painโ€‹

Picture this: It's Monday morning, and your stakeholder needs insights from that customer survey data sitting in a spreadsheet. Or maybe you want to combine your CRM export with existing metrics for a one-time analysis. In traditional BI setups, you're looking at:

  • Waiting for data engineering resources
  • Complex ETL pipeline setup for temporary data
  • Database permissions and access hurdles
  • Hours or days before you can start analyzing

What if you could skip all that and go straight to insights?

The Solution: Import CSV/Google Sheets Through Holisticsโ€‹

Imagine this instead: You drag your CSV file into Holistics, and it loads straight into your database. Within seconds you're building charts and dashboards.

No IT tickets, no manual setup, no waiting around.

We're working on seamless CSV and Google Sheets import that drops your data directly into your existing warehouse, automatically creates data models with proper field types, and lets you start analyzing immediately.

Your data stays in your own infrastructure, gets proper validation and configuration. You can also re-upload your source file to keep things fresh. From raw file to actionable insights in a minute.

Want early access? Reach out to us via a support ticket!

Want early access?

Let us know via this Beta Request form.

๐Ÿงจ Dynamic Data Sources

Introductionโ€‹

In some scenario, you want to point the dashboards to different data source (database or data warehouse) dynamically, based on who's viewing the report or whether it's in production or dev mode.

Dynamically pointing Holistics to different data sources

Thanks to its programmable nature, Holistics can support this capability natively. This will enable popular use cases such as:

  • Clients Dashboarding: Build the same set of models/datasets/dashboards for clients but different data source for each client underneath.
  • Dev/Prod environment: Dynamically switch the underlying data sources (from dev โ†’ prod and vice versa) based on the environment that analysts are working on
  • Dynamic data sources for embedded analytics: Embedded analytics but different customers use different databases.
info

For those of you who separate dev and prod environments based on schema instead of the data source, please refer to our release note about dynamic schemas.

Demoโ€‹

For more information, please refer to our doc about Dynamic Data Sources