Numeracy 2.0

Brian Smith
Numeracy
Published in
4 min readOct 19, 2018

We’re excited to launch our biggest update to Numeracy yet with 2 big new features: dashboards and parameterized queries, along with hundreds of improvements, optimizations, and bug fixes. To go along with this release we’re also making 2 big updates to our pricing:

  1. Numeracy is now free for individuals. This plan includes unlimited querying and lets you create 1 dashboard. If you’re still using psql you should seriously try Numeracy.
  2. We’ve cut the price of Numeracy in half to $10 per user per month. This makes Numeracy an affordable way to provide easy querying and dashboards to the entire team.

When we first launched a year ago the number one thing people requested was dashboards. It seemed like a pretty straightforward feature to build, but by the time we were finished we realized we had basically redesigned the whole app.

For example, we supported charts in version 1, but when you filled a whole dashboard with them they didn’t look good together. To fix this we rebuilt our charts from the ground up, fixing a lot of cases that didn’t work well in the process. We also learned that charts needed to be fully responsive so they would look great in the constrained environment of Slack on your phone, blown up on a dashboard, or embedded in a blog.

Surprisingly, the biggest change came from parameters. The goal was simple enough: create dashboards where you can update things like the date range or the region of the dashboard. Most analytics tools implement this as a template language which involves learning new syntax on top of SQL. It can be time consuming to update a query to be parameterized.

In contrast, we wanted to create a system that was easier to use even if you don’t ever intend to put your query in a dashboard. The solution we came up with is representing the parameters with a colon prefix, like :daterange. Instead of doing simple template substitution, we tokenize your query and rewrite it using the appropriate syntax for your database.

One of the hardest parts when most people start writing analytical SQL is dealing with all the complexities of dates. A simple query to calculate number of signups from the last 6 months excluding the current incomplete month in Postgres might look like this:

SELECT date_trunc('month', created), count(*)
FROM users
WHERE created < date_trunc('month', now())
AND created >= date_trunc('month', now() - interval '6 months')
GROUP BY 1

In MySQL, the same query would look like this:

SELECT date_format(created, '%Y-%m-01'), count(*)
FROM users
WHERE created < date_format(now(), '%Y-%m-01')
AND created >= date_format(date_sub(NOW(), interval 6 month), '%Y-%m-01')
GROUP BY 1

The syntax can get even more complicated if you want to calculate signups per week or use a timezone other than UTC. The query with Numeracy parameters, regardless of database, becomes:

SELECT :datebucket(created), count(*)
FROM users
WHERE created = :daterange
GROUP BY 1

Once you’ve written your query like this you can easily switch between months and weeks, switch to local time, and include or exclude incomplete time periods in the UI without having to change the query at all.

This approach is more work to implement but integrates more naturally into the SQL you write. It also allows for richer UI interactions that makes it easier for non-SQL users to answer their own questions.

This brings us to our last major new feature: dashboards. We spent a lot of time on the supporting features for dashboards like charts and parameters, but the hardest part of the dashboards themselves was making them as simple and obvious as possible. Even though a lot of dashboarding products have been created over the years, all the ones we found had pretty sharp edges and unintuitive behavior. Even our own attempts to improve the situation started out pretty wonky, but after a couple of iterations we found something that felt intuitive.

Looking back after wrapping up dashboards, it turned out to be a much bigger leap forward for the product than we could imagine. To go along with the improved functionality, we also wanted to make sure Numeracy was by-far the best value for what you get, which is why it’s now free for individuals and only $10/user/month for teams.

If you’ve tried Numeracy in the past you should definitely take another look, and if you haven’t there’s no better time than now.

P.S. join the conversation about the release over at Product Hunt.

--

--