Skip to main content
Latest release:

Bumper Crop
[ buhm-per krop ]
noun: an unusually abundant harvest from a particular crop. The term is now most commonly used in a figurative way to refer to a large amount or influx of something (that’s often likened to a harvest).

// Thanks to ideal growing conditions, California had a bumper crop of olives in 2012.
// The stars aligned and Hex had a bumper crop of new features in August 2022.

Put down the Old Farmer’s Almanac and fire up your Hex workspaces, my data agronomists. The corn is tall, the sun is shining, and we’ve got an unusually bountiful harvest of new Hex features for you: App URL parameters, Schema Browser querying shortcuts, a new map region layer, Clickhouse support, new cell styles, chart cell updates, Library UI improvements, and more.

(Still feeling agricultural? Check out this quick Hex app that lets you explore historical crop yields. Spot any good bumper crops?)

🔗 App URL parameters

You can now generate a “Current inputs” sharing link that contains pre-filled values for input parameters, so you can share a specific view of an app.

These links actually include the input parameter values in-line, so you could generate them dynamically with code (say, to link from a recent sales app to a pre-filled view of a customer 360 app): https://app.hex.tech/hex-public/app/cc3f7ed7-e662-4d42-b36c-fa2fb8ec2740/latest?_area="United+States+of+America"&_crop="Olives"&_show_all_areas=false.

Though it’s possible to edit them manually, proper URL encoding can sometimes be hard to get right. The tried-and-true way to generate a properly formatted input link is to set the desired input values in a published app and use the “Copy link > Current inputs” button.

🔎 Schema Browser query shortcuts

There’s a handy new context menu on tables in the Schema Browser that lets you easily copy fully qualified table names or a pre-filled select statement that includes all columns.

Why do this instead of a shorter select *? Well, as you inevitably start narrowing the list of columns to return, going back and writing them out by hand becomes a lot more tedious than just deleting unwanted lines in a pre-written query.

We’re working on more updates to the Schema Browser, so reach out with any feedback on what functionality you’d like to see added!

📍 Map area regions

Maps have some powerful new functionality: In an Area layer, you can now map data from common regions (countries, US states, counties, etc.) without having to provide complex geospatially formatted data. Just bring a column containing simple values (eg: California, Vermont, Arizona) and let the map layer handle the hard part.

We’re adding more map regions— if you have a region you frequently work with that isn’t in the list, shoot us a message and we’ll add it for you!

👨‍🎨 New cell styles

SQL and Text cells have a brand new coat of paint!

SQL cells have a streamlined UI that makes it easier to set cache options and simplifies switching between Dataframe and Query mode.

Text cells now blend in with the liminal space between cells in Notebook view, making them more visible as section headings and better differentiating between code and text.

Oh, and while we’re talking about Text cells…

📸 Images in Text cells

Text cells can now display images! Just drag an image inline, or copy and paste one in. This will add the image to the file directory of the project.

PS: This also works in markdown cells! Historically, local images from the project filesystem could not be referenced in Markdown cells, but this is now possible. You can also drag+drop or copy/paste new images into Markdown cells, just like Text cells.

📊 Charts updates

There’s a bunch of great updates to chart cells that have shipped out recently:

Layer legends

Multi-layer charts now show all series accurately in the legend! To enable this, select “Automatic” from the color picker config.

X and Y offsets

You can create grouped bar charts using the X or Y-offset config. To group a bar chart, select the same column in the Color and X-offset (or Y-offset, for a Y axis grouped chart). This will “offset” the location of each bar based on that value, creating a grouped layout.

Text layer

Text layers let you add labels and annotations anywhere on a chart. Select a column with the text to display, choose the X and Y columns that control label placement, and then fine-tune with the Dx, Dy, Angle, and Radius configs to place text exactly where you want it.

Use this to add more complex labels, or to call out specific points as important. It works great with Filter cells— filter down the dataframe powering the chart to just the records you want to annotate, and then add the filter_output as a new text layer.

🏡 Clickhouse integration

Everyone’s favorite super fast database now works out of the box with Hex. There’s nothing particular about the configuration— just add a new data connection, provide the usual authentication details, and you’re off writing Clickhouse queries in SQL cells.

🖼️ Screenshots in Library

The Library now features a screenshot of every app at time of most recent publish or scheduled run. We hope this makes it easier to find the app you’re looking for, before you click.

Unlike many libraries, we encourage you to judge your apps by their screenshots 😉.

Note: This will be empty for previously-published apps but will now populate the next time they are published or run on a schedule.

Other improvements

  • SQL cells in the same project now share one session. This is a mostly invisible change that lets power users set session params and write complex multi-statement or non-read-only queries.

  • If you’ve created a large app with lots of outputs, you can now Clear outputs from the project list view to wipe them clean.

  • We’ve banished some unnecessary scrollbars on text cells.

  • We fixed an issue that was causing lines and their points on chart cells to be misaligned— or as James put it, “missing the point entirely” 😑.

  • Transformed columns in Pivot cells now use underscores instead of parentheses as suffixes, like field_sum, field_year, etc. This makes them easier to work with downstream and in Writeback cells.

Today we’re introducing a suite of UI-driven “No-Code” cells in Hex: Pivot, Filter, and Writeback (which you met in my last email). These allow everyone to do many of the most common data manipulation tasks without googling how to write writing any code.

These cells can be configured using just the UI, but they all return dataframes that can still be used in downstream code cells. Each of these cells also has a Duplicate as Code button, allowing you to “eject” to code, and edit and update it to their heart’s content.

This means you can use these cells not only as helpful workflow upgrades, but also as templates to help learn new things, or jumping-off points to dive into more complex operations. Read more on the blog!.

🏗️ Pivot cell

Perhaps the most powerful part of spreadsheet workflows is pivot tables. Now, we’re bringing them to modern data analytics workflows, with a powerful built-in cell:

Pivot cells can pivot, aggregate, and format data without writing any code. They return a pivot_result object that can be used natively in charts and other Hex cells, and can also output a raw .aggregated or .pivoted dataframe.

🌪️ Filter cell

The name kind of says it all – these filter dataframes. You can add individual filters, or groups, and toggle whether the operation keeps or removes matching rows.

Filter cells are writing SQL behind the scenes, and you can both view the compiled SQL or fully "eject" to a SQL cell anytime you'd like.

♻️ Writeback cell (again)

We actually introduced these last time, but they are a core part of the no-code suite. After you’ve pivoted, filtered, and otherwise transformed a dataframe, you can now send it back to the database, using an existing database connection that’s already configured.

Other improvements

  • When deactivating a user, you will now be prompted to choose to transfer ownership of their projects to another user.
  • We’ve fixed some timezone issues in dataframe SQL and charts.
  • We’ve fixed a bug with the Map cell that was causing it to break without showing an error.
  • SQL cell errors are now much easier to read!

Another round of Hex updates, hot off the presses! We’ve got big features, we’ve got little features, we’ve got features that are just right— but all of them, big or small, are the direct result of user requests and feedback over the last few months.

We’re always excited to ship new features, but we’re way more excited when we get to build things that you all have asked us for. Keep the feedback coming, and enjoy the new features!

♻️ Writeback cell

This one has been in the works for a long time! You can now writeback any dataframe in a project to a database table, choosing to overwrite or append data.

Writeback unlocks an entirely new set of workflows in Hex. You can use it in Notebook view to quickly reshape or clean a table. You can use it in published apps to allow end users to generate datasets and push them into your warehouse (be careful!). You can use it on scheduled runs to regularly update a table or push out status updates.

To get started, just enable it on any data connection:

✍️ Edit from app view

We get it – clicking back and forth between Notebook and App views could be pretty annoying, especially for quick fixes to charts or text.

So, we added a new option to open and edit cells, right from App mode! Just click the ✏️ button and edit to your heart’s content:

🗺️ Area and Heatmap map layers

We’ve added two new layer types to the Map cell, giving you the ability to plot custom polygon shapes (with the Area layer) and to easily visualize the distribution of points (with the Heatmap layer).

Our friends at Iggy built an awesome app showcasing the kind of thing you can build with custom map areas:

Check out the documentation for more on the different kinds of map layers.

🔠 Case sensitive sql autocompletion

Some of you like to yell at your SQL. And you probably want the SQL autocompletion to yell right back at you. That’s okay! We love that for you.

Others might prefer a gentler touch with their database, opting for lowercase queries. If so, you’re probably tired of the SQL autocompletion always yelling back at you in all caps— did you do something wrong!?

No dear user, you are perfect just the way you are. And now Hex’s SQL autocompletion listens to the case you’re using, and returns suggestions in the same case.

Other improvements

  • Workspace admins can now see the last active date of users in the Admin > Users panel.
  • We’ve improved warnings on chart cells for unexpected chart behavior.

  • You can now duplicate chart layers.

  • The “All” option in multiselect inputs now excludes ‘null’.

  • Hex now uses DuckDB 0.4.0

  • Many smaller bugfixes!

Today we’re introducing three new features that allow you to work with data at any scale: Query mode, Chained SQL, and Python pushdown.

As a bonus, we’re also removing the 5,000 row limit for Chart cells 🎉.

∞ Query mode

Query mode for SQL cells lets you work with effectively infinitely-sized data – no more worrying about memory overhead or limits.

In Query mode, Hex leaves the data in the warehouse instead of bringing it into the in-memory kernel. It’s not just a limit preview though: like all cells in Hex, Query mode cells still return an object (in this case, a Query, in lovely purple) that can be used downstream and is represented in the DAG, but is just a pointer to the full result set.

When it’s time to build visualizations, or run in-memory operations over the full dataset, just move the SQL cell back into Dataframe mode (which is still the default). Read more in the docs.

⛓ Chained SQL

Chained SQL lets you reference previous queries with other SQL cells, relying on Hex to automatically combine the queries into common table expressions (CTEs) on the fly.

To use this, just reference any SQL cell result (a Query or Dataframe) in a downstream query using the same data connection. In the background, Hex will build the with...as statements for you, and you can see the fully-compiled query right there in the cell:

These “Chained SQL” queries work great with Query mode, allowing you to do multiple-step operations without pulling each intermediate result into memory. Then, at the end, you can flip the last cell into Dataframe mode and have a result set ready to use.

Chained SQL is complementary to Dataframe SQL, which lets you query any dataframe, including other query results, Pandas dfs, or even CSVs. Read more about when to use which feature in the docs.

🐍 Pushing down Python

That’s all great for SQL, but what about Python? Well, that’s becoming cloud-native too.

Last week, we introduced support for Snowpark, allowing you to run Python code right in Snowflake. Think of this like Query mode, for Python: Hex is running the operation in the warehouse, working with the data where it lives instead of shuttling it back and forth to an in-memory kernel.

In Hex, this support is truly first class – any existing Snowflake data source can turn on Snowpark, and then with one click create a connection in a project.

You can learn more about Snowpark and Hex on the blog.

💪 Scalable charts

Chart cells now perform server-side aggregation to let you plot data at effectively infinite scale. You can pass a dataframe of any size into a chart cell and aggregate it for display right from the chart configuration, without worrying about row or data limits.

Here’s an example of building a simple chart on a 900k row dataframe:

Under the hood, we're using VegaFusion to power this!

Other improvements

  • We’ve made lots of upgrades to the Map cell
  • We fixed an interesting issue that caused Chart cells to error when a dataframe had duplicate column names
  • App editors now have the option to “Refresh cached state” on published apps, so you can manually reset the cache on an app.
  • The default pandas installation has been updated to 1.4.2

We’ve got some good ones this week: a brand new map cell, project-level search, and user directory sync.

🗺️ Map cell

We’ve added a map cell to Hex, so you can visualize geospatial data without writing a single line of new code. Find it in the Display cell tab, right next to charts and table display cells.

When you’re digging into a dataset, the last thing you want to do is muddle through confusing syntax for a geospatial Python library you don’t regularly use. You just want to see your data on a beautiful map.

et voila: https://app.hex.tech/hex/app/eb4f9bd1-6b05-414d-adf4-cb1aa55d9cf3/latest.

Feedback request: Maps can get pretty complex, so we’re shipping a more simple cell and will let user feedback guide our enhancements. Please reply and let us know what kinds of mapping features you’d like the map cell to support!

If you’re like me and spend a lot of time in VS code, you’ve instinctively tried to cmd+shift+f in Hex before, to search across an entire project. And like me, felt silly when it didn’t work.

Well if you can work up the courage, try it again! From anywhere in a project, you can now hit cmd+shift+f (or use the Search sidebar tab) to search for text throughout the entire project. Cmd+f still works as usual for find+replace within cells.

🔐 User directory sync

Hex can now sync users and groups directly from Okta, Active Directory, and pretty much every other directory under the enterprise sun.

This means you can easily manage users in bulk, configure complex group-based access policies, and only make user edits in one system.

This is an Enterprise feature. If you’re excited about it, please get in touch to set this up.

Other improvements

  • Pandas-generated pivot tables (or any multi-index dataframe) can now be rendered nicely in table display cells!

  • SQL cells have a new option to "Infer numeric datatypes", that lets you turn off automatic decimal → float casting when working with very high precision numbers. Learn more in the docs.

  • Metric cells (you know, the ones that display a single value in your app) have been renamed to “Single Value” cells (makes sense, right?).

We have some gems for you today: screenshots in scheduled emails, dbt Docs, a beautiful new Notion integration, and full-screen editing mode.

🖼️ Screenshots in scheduled emails

Scheduled runs in Hex now have a new option: to include screenshots of the app right in the email! We also gave the scheduled run dialog a bit of a makeover 💅.

Note: screenshots can only be sent to people and groups with App User permission or above on an app.

📑 dbt Docs in schema browser

Our dbt integration just got way better! Now we show all the documentation from your dbt project right in your schema browser, including column descriptions and column-level test information. They even support markdown!

In case you missed it, we shipped an awesome improvement to our Notion embeds: Link Previews! You can paste the link to a published app into any Notion doc, as a mention (one-line link) or preview (full interactive embed). Check it out:

You can read more about it on Notion’s blog here.

↔️ Full-width editing mode

You can now toggle a full-width editing mode! This is great for those of you with r e a l l y w i d e monitors.

Other improvements

  • The "upper left" logo will link to Hex home for apps with custom logos.
  • You can also now enable Dark mode from the command palette:

Bugs squashed

  • We made a bunch of fixes to our dbt integration under the hood.
  • Dark mode had some lingering light elements - now appropriately dimmed.