Skip to main content
Latest release:

📊 Upgraded SQL cells – now with charts!

We’ve made it easier to explore the results of a SQL query visually:

You can now create a chart directly in the SQL results section by clicking the creatively titled “Chart” button in the top right! These charts operate just like a standalone chart cell, so you can even drag them directly into the app builder.

While we were here, we also gave SQL cells a small makeover, cleaning up some of the buttons and simplifying the layout 🙂.

... and a revamped filter UX 🕶️

We’ve overhauled Table display filters to make removing nulls, outliers, or your own company’s email addresses a breeze. You can now filter data using the “Filter” bar, any column header, or even by right clicking on a value of interest. These filters remain visible at the top of the table so they can be easily reviewed and removed.

Table filters now also apply to the returned dataframe, so downstream cells will use the filtered data. If you were using table filters prior to this, you’ll have the opportunity to opt into this new behavior.

We also added the “Filter” bar to our Chart Cell to make them work seamlessly when switching between the results of a query and a chart, and to provide a unified UX across the product.

Bonus: these filters support Jinja inputs too (learn more).

… and a bunch of other improvements to tables 🏓

We also snuck in a few extra goodies to Table displays:

JSON columns got a glow up

Columns that contain arrays or objects now have a useful “Expand” button, so that you can view the contents of the column without having to scroll or copy paste into a text editor.

📋 Copy to clipboard

If the table you’re rendering is greater than 50MB, you can now copy the contents directly to your clipboard with a handy button.

Please be aware that every time you copy data from Hex directly to Excel, my company-mandated neural lace hits me with 10,000 volts. I’m not saying don’t do it, I just want you to have all the facts.

For real, though: If you find yourself frequently copying data out to another tool to do something, please don’t hesitate to let us know how we can make that something easier to do in Hex!

Copy to clipboard

↕️ Vertically resizable tables

You can vertically resize Table display cells (or SQL cells in Display mode), and then scroll within the configured height to view your results. This also works in the app builder, making it a lot easier to build neatly organized table/chart grids.

We’ve also changed the default number of rows to 50 for new cells 🎉.

📌 Column pinning

You can now pin a column in a table, to make it stay on screen as you scroll horizontally. Especially if you are on team OBT (see: ship logbook data from the intro), this makes life a lot easier.

Pinning a column in a table display

🔢 No more row numbers in CSV exports

We had a few customers share that they didn’t love that our exported CSVs includes row numbers in the file. We also asked our internal data team for their thoughts, and they didn’t hold back: “Frustrating AF”, “hate them”, “unprofessional”, “I always delete the row numbers”, and “no row nums. not ever”.

So uh, we went ahead and removed those pesky row numbers from CSV exports. They’re technically still generated, but at the last second before export we divert them to a nice big spreadsheet in the cloud where they can run and play together all day long.

Other improvements

  • Snappier chart edits: Hex now detects whether the changes you’re making to a chart affect the underlying data, or is purely a visual change (for example, renaming an axis, or changing a series color). If it’s the latter, we skip the data processing step, resulting in faster edits.

  • Snowpark is now enabled in Python 3.9 and 3.10 images. On the Snowflake side, this is still in private preview, so reach out to your Snowflake account rep to get it enabled.

  • Published app actions: We’ve added a cute lil button to make it easier to comment and share links to elements in a published app.

    The new action button

🐳 Custom Docker Images

You can now provide your own custom Docker images to power Hex projects, making it a one-click process to spin up the tailored environments your company needs. Bring us your custom packages, your complex dependencies, your powerful environments yearning to run in the cloud, and we’ll spin them up for you.

Custom docker image configuration

If you’ve already got your custom docker images in a repository (Dockerhub and AWS ECR are supported), it’s just a few clicks to choose which image you’d like to use in Hex and create a prewarmed pool of kernels. There’s a detailed walkthrough of this process in the custom images documentation.

There’s also support for setting up Python environments with Conda to help you further manage environments.

This is a paid feature, available for workspaces on the Teams plan and above. If you’re interested in using custom images, please reach out to your Hex account contact or [email protected].

🗃️ External file integrations

S3

Access S3 files directly from Hex, just like a locally uploaded file. Once an S3 bucket is configured in Workspace Assets settings, you’ll be able to browse buckets and import files right from the Files sidebar of any Hex project.

You’re also able to natively write files to S3 buckets without any configuration or manual upload. Using a standard file.write() or dataframe.to_csv() with an external-files/s3/<your_bucket>/<your_filename> path will just work— provided your S3 credentials have the appropriate permissions and writeback is enabled in Hex bucket settings.

Find more details in the documentation.

Google Drive 👋 coming soon 👋

Coming any day now is an identical integration for Google Drive, if that’s your cloud file repository of choice. We’ll add a reminder to the product updates when it’s fully live, but it pairs so nicely with S3 that we had to mention it now. It will work in the same way and with the same UI as the S3 integration.

And in the interim, if you need to access GDrive… the beauty of Hex is that you can can always write code that goes and does whatever you need! We have a tutorial on this very subject, but you could also ask Magic to help 🪄

The new blank project screen

Magic for every stack

Speaking of Magic… Magic is now available for customers on our EU multi-tenant stack. If you’ve been waiting for access on an EU workspace, you’ll now find the Magic toggle in your workspace and/or user settings.

PS: For the Magic power users, there’s also some new UI additions that let you customize your default Magic response settings:

The new blank project screen

Other improvements

  • Added to a project you’d prefer to not be a part of? You now have the option of removing yourself.

  • We made (and are still making) a TON of other improvements to remove some bottlenecks and unnecessary lags in Hex projects. The nitty gritty of it is pretty complicated, so for now, we’ll just lump this into “general performance improvements”. More to come on this front once we’re done!

🔮 Hex Magic Public Beta

We’re very excited to announce that Hex Magic – our suite of AI augmentation tools – is moving into public beta. This gives all Hex users a powerful set of AI-driven features to help you do more with data.

Magic lets you use AI to generate, edit, debug, and document code right from your Hex project, with a deep contextual understanding of your code and data.

Opt-in to Hex Magic by visiting your Hex user preferences (Settings → Preferences) and toggling on the Magic option. Users on Pro, Teams, and Enterprise plans get unlimited Magic usage, and users on Community have 100 Magic requests per month.

As a reminder, this is a beta. Magic – like all AI features – is subject to errors, hallucinations, and mistakes. Please use it with care!

Hex Magic is not yet available for workspaces on EU or HIPAA compliant stacks.

🧙 New Magical Powers

Hex Magic gives you access to 5 Magic tools: Generate, Edit, Explain, Fix, and Explode. You’ll find the Magic menu in the top right corner of SQL, Python, Markdown, and R cells.

For tips, tricks, and a detailed list of examples of how to use Magic, check out the documentation.

Hex Magic overview

🪄 Generate

ex: show me all orders placed in the last 30 days for > average order price.

Magic Generate lets you ask for code and queries with natural language. Describe what you want to generate in plain English, being as specific as possible, and hit Enter. As Magic thinks, you'll see the generated code begin to fill in below.

Magic has context on your tables and schemas, so you really can just ask natural language questions and Magic will map to the most relevant tables!

✏️ Edit

ex: change this query to look at unusually small orders.

Magic Edit works just like Generate, but for modifying existing code and queries. If you trigger Magic in a cell that already has code, it'll default to edit mode.

You can ask Magic Edit to do anything to your code, from answering a totally different question to performing manual tasks like renaming every table reference. As Magic thinks, you'll see edited code begin to fill in alongside the previous code, with a line-by-line diff of the changes made.

📝 Explain

Magic explain automatically documents code – whether it’s something you wrote, or something unfamiliar you’re seeing for the first time. It works similar to a Magic edit, so you'll see the documented code with comments stream back word-by-word.

Magic explaining some pandas and matplotlib code

🩹 Fix

Magic fix automatically detects and fixes errors in your code. Whenever a cell returns an error, Magic begins preparing a fix, which can be applied with the "Magic fix" button in the error output.

Here, Magic's just fixing a missing comma— but it can solve complex issues, and resolve multiple problems at once rather than step-debugging through them all.

Magic fixing a simple SQL error

💥 Explode

Magic explode takes CTEs and "explodes" them into individual chained SQL cells. This can make complex queries more easy to debug, understand, and iterate on.

Explode makes use of query mode, so your exploded queries will not add any additional runtime over the original CTE.

🏷️ Bonus: Rename

Naming things is hard easy with Magic. You can ask Magic to rename a cell based on the code within it, to keep your project neatly organized.

Other improvements

  • When you click the New Project button, you’ll be greeted with a much friendlier empty state — it now take exactly two clicks to go from the Hex homepage to a working SQL cell. For workspaces with multiple data connections, Admins can also now designate a Default data connection that (you guessed it) the first SQL cell will default to.
The new blank project screen
  • You can now sign up for Hex with your personal email, and spin up a free-forever workspace for any side projects or portfolio work. Or if you’re a data consultant, you can create separate workspaces to hand off to each of your clients.

  • We also made improvements to our workspace switcher so you can quickly see which email(s) you're authenticated with, and transition between different workspaces.

  • When the output of a SQL query has caching enabled, paging through the results will now be significantly snappier. 🫰

  • We fixed a bug that was making dataframe SQL on w i d e tables far slower than it needed to be.

  • We’ve made improvements to engine that aggregates data for charts, speeding up chart runtimes along the way. (You might be sensing a theme here…)

  • Finally, we also made some improvements to how we write the results of a project to our database, making projects and apps much faster to render results.

🍱 Collections

There’s a new way to organize and curate your work in Hex: Collections!

Collections are groups of projects or components that can be created, populated, and shared by users in a workspace.

Collections in action

Unlike a traditional file directory, Hex projects and components can live in multiple collections, increasing flexibility and decreasing the potential for data silos.

When adding something to a collection, you have the option to also share, view, or edit permissions with all collection members, ensuring that your team can stay in sync with the latest and greatest insights.

We’ve been using this internally for a little while now, and it’s felt really great. We’d love to hear your thoughts, ideas, and feature requests for collections after trying them out!

Learn more in the docs.

⚙️ Admin panel polish

The admin settings pages have been overhauled to make it more intuitive to find what you’re looking for. We’ve put everything important at the top level in the sidebar, so you don’t need to remember what section data connections or SSO are nested within.

We’ve also done some general UI polish to spruce up each individual settings page.

New and improved admin panel

Admins can now generate invite links to easily add new users to Hex, individually or in bulk. You can choose the permissions an invite link grants, set the expiration date of a link, or limit it to just a one-time use.

Whether you’re using Hex to teach a class, run a workshop, or just have a lot of new folks to bring on board, this should drastically improve the manual process of adding users.

Generating a new invite link

Other improvements

  • We fixed an interesting bug that caused Chart cells to aggregate incorrectly when the column on the x axis had a dot "." character in the name.
  • We fixed a bug that caused scheduled runs to still process for recently deleted projects
  • The openai package is now included in our base package library 🤖
  • We are knee-deep in some performance improvements that hopefully we will be sharing with you soon!

It always feels harder than it should to find the right report or dashboard. You just want to find the latest MRR numbers. Is that in MRR DASH [sales]? Or “Board MRR update Dash 2”?

Syke, it’s in [official] Company KPI Dashboard, but you’ll never find that by searching “mrr” or “monthly revenue”.

So we’ve rebuilt search to look through metadata, titles, descriptions, text, and even the code in your projects. Search for a table name to find all the projects querying it, or hunt down a report by the name of one of its sections.

Workspace wide cell search

Results show a preview of the code or text that matched your query, and you can click into them to be taken directly to that part of the project.

…and advanced filtering

Too many results? With advanced filtering, you can easily narrow results by creator, date (created or last edited), category, and status.

You can also choose which fields to search by, so you can get more accurate results if you know the string you’re searching for is in a project description or title.

Workspace search filters

🌹 The perfect date

We went through every square inch of the Notebook & App view to make sure that anywhere a user inputs a date, or we render a date, the perfect yyyy-mm-dd format is supported.

The Perfect Date

If you find a spot we missed, let us know and we’ll take you out on a perfect date. Sushi, pizza, ice cream, you name it. Totally serious.

☁️ Custom SQL Formatting with SQLFluff

You can now upload a custom SQLFluff config that Hex will use when formatting SQL cells. Set up formatting rules for a data connection, and they’ll be available workspace-wide so the entire team’s code can be styled consistently.

Upload .sqlfluff files directly to any project or workspace data connection, in that data connection’s settings. SQLFluff has a ton of rules you can customize, from capitalization to leading commas, or even finicky things like indentation and new lines.

🤏 Compact number formatting

Number and currency formatting now supports “Compact format”, which provides a more polished view for reports. This is available everywhere number formatting is, from pivot cells to charts and table displays.

Sometimes it really is the small compact things!

Other improvements

  • If an app-only user gets a link to the Notebook view of a project, they now get a much friendlier request access/redirect page.
  • We’ve added support for two new databases: AlloyDB and Presto.
  • The data browser should load your schemas and tables faster!
  • We fixed a bug that caused issues when duplicating a project that had images in text cells.

🍿 Custom Kernels

Part of the magic of Hex is that anyone can start doing analysis without having to worry about pip installs, virtualenvs, or —heaven forbid— dockerfiles and homebrew commands.

But as companies scale and workloads grow increasingly unique, specific requirements arise. Before you know it, you’re back on the command line tinkering with Python environments, wondering if that pip warning is actually something to worry about or not.

Well, now you can add custom kernels to Hex, making it a one-click process to spin up the tailored environments your company needs. Just give us a Dockerfile, and we’ll do the rest.

Custom kernel selector dropdown.

This feature is only available for single tenant customers.

If you’re interested in custom kernels, reach out to your Hex point of contact or [email protected].