Skip to main content

Release Notes

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

๐Ÿ”“ Ability for explorers to edit, create Canvas Dashboard in Reporting

Now, admins, and analysts can grant explorers the create/edit/delete permission to dashboards in the public workspace. Once granted, explorers will have the Quick Edit experience to create/edit dashboards:

  • Only UI-based editing, no code-based editing, and
  • No branching request/merging is required

Notes:

  • All changes are saved as code in your repository for consistency and traceability.
  • This feature will be available for not only the 4.0 but also the 3.0 Holistics version.
  • Explorers still wonโ€™t be able to create/save Canvas Dashboards into their own Private Workspace

Try it out and let us know how it works for you! ๐Ÿ˜Š

๐Ÿ“ค Multiple destinations for Slack Schedule and Alert

You can now set up Data Schedules (or Alerts) for multiple Slack channels! ๐ŸŽ‰
This enhancement is designed to give you more flexibility and control, making it easier to manage and streamline your data deliveries to Slack.

Try it out and let us know how it works for you! ๐Ÿ˜Š

๐Ÿ“ Exporting an entire dashboard directly to Excel

You can now export entire dashboards directly to Excel! ๐ŸŽ‰

This update is designed to saves you time and effort, letting you download your dashboard as a single Excel file in just a few clicks.

โœจ New Styling Options for KPI Metric

Level Up Your KPIs with New Styling Options โœจ ๐ŸŒŸ ๐Ÿ˜

With our new styling options, you are now empowered to make your KPIs more visually impactful. Adjust font size, font color, text alignment, and explore unique styles for each comparison type ๐Ÿ™Œ

Ready to give your KPI Metrics a dazzling makeover? Share your styling creations with us! โœจ๐ŸŽ‰

๐Ÿงจ Change Dimension/Metric via Dashboard Filter (by using AQL and Query Parameters)

Introductionโ€‹

AQL is getting an upgrade! No more static calculations. You can now make AQL dynamic by combining it with Query Parameters.

This means AQL definitions can adjust based on user inputs via the Dashboard Filter, and you'll be able to do Dynamic fields selection (dynamic dimensions, dynamic metrics)

Demoโ€‹

Dynamic Dimensions Selectionโ€‹

Dynamic Metrics Selectionโ€‹

More details on how to set upโ€‹

If you want to understand more details on how to set up this, please refer to our doc about Advanced Use Cases

๐Ÿ’ฅ New Resolving Conflicts Flow

Say goodbye to the hassle of manually resolving merge conflicts!

Weโ€™re thrilled to introduce the Quick Resolve option, which allows you to:

  • Instantly choose whether to keep your version, or the incoming version for each conflicted file.
  • Apply your choice to all files at once, so you can quickly return to your tasks.

For those who prefer a more hands-on approach, the Manual Resolve option remains available, letting you sort out the conflict in the code editor.

Check it out in action:

๐ŸŽ‰ Enhanced Table Interactions

Weโ€™ve made working with tables easier and more intuitive! With these updates, you can now:

  • Change aggregations and time grains
  • Auto-size columns
  • Rename columns
  • Remove columns

All directly on your tables, giving you more control and flexibility in your workflow.

Give it a try and let us know what you think! ๐Ÿ˜Š

๐Ÿ” Two-factor Authentication (2FA)

Holistics now supports two-factor authentication (2FA) for password-based login.

Two-factor authentication (2FA) adds an extra layer of security to your Holistics account. Once enabled, it requires an additional code from an authenticator app (e.g., Authy, Google Authenticator, etc.) along with your email and password, ensuring only you can access your account.

The admin can require two-factor authentication for all users to enhance the organizationโ€™s security.

To learn more, please go toย Two-factor Authentication for detailed settings.

โ›ณ AQL Condition: Apply Complex Filters to All Metrics at Once

Stop duplicating the same filter logic across every metric in your exploration. AQL Condition lets you define filtering criteria once and apply it to all your metrics automatically.

Why this feature?โ€‹

When building explorations, you often need to apply the same complex filter to multiple metrics. Previously, you had to add where() clauses to every single metric, leading to repetitive code and maintenance headaches. If you needed to change the filter logic, you'd have to update it in multiple places.

Now you can define your filtering logic once in the explore's filters block, and it automatically applies to all metrics.

How it worksโ€‹

AQL Condition uses the same expression syntax as the where() function's condition parameter, but you define it at the exploration level instead of repeating it for each metric.

Before vs Afterโ€‹

Before (Repetitive filtering)

explore {
dimensions {
// your_dimensions
}
measures {
orders: total_orders | where(users.gender == 'female' or countries.name == 'Vietnam'),
revenue: revenue | where(users.gender == 'female' or countries.name == 'Vietnam'),
users: total_users | where(users.gender == 'female' or countries.name == 'Vietnam')
}
filters {
// your_condition
}
}

After (Single filter definition)

explore {
dimensions {
// your_dimensions
}
measures {
orders: total_orders,
revenue: revenue,
users: total_users
}
filters {
users.gender == 'female' or countries.name == 'Vietnam'
}
}

This approach makes your code cleaner and easier to maintain, while ensuring consistent filtering across all metrics.

Learn moreโ€‹

See the full documentation: AQL Condition reference

For making conditions dynamic with dashboard filters, see: Dynamic Conditions

โฐ Extract date parts from dates

In a time-series report, you may want to group data by different time intervals such as Day of Week, Day of Month, Month of Year, Hour of Day, etc.

Previously, you had to write AQL expressions to extract such date parts from dates. Now, our Date Parts feature helps you easily extract these specific types of dates from time dimensions so that you can slice your data under different time lenses.

For more detailed examples, please refer to this document: