PopSQL – Modern, collaborative SQL editor for your team
popsql.io
popsql.io
Currently, we're a team of 5 on a paid plan and we're loving the tool. We mainly use it to:
- Share queries to extract some kind of data from our databases - Quickly run queries to answer a quick question - My favorite use case: We create queries around bugs we've noticed in our data. We add "TODO:" in front of the query's name. We'll then move the query to a "Done" folder once we get the expected result.
- ChartIO
- 'WagonHQ, Modern SQL Editor' [1] (now aquired by Box)
- MetaBase [2,3]
- Redash [4]
MetaBase is the only one that I know of that is
- fully open source,
- mature (graphing options, permission model),
- still actively maintained, and
- both friendly to non-technical users and expert sql'ers alike
[1] https://news.ycombinator.com/item?id=9792464
[2] http://www.metabase.com [3] https://news.ycombinator.com/item?id=10425959
[1]http://www.metabase.com/docs/v0.21.1/users-guide/12-sql-para...
https://www.holistics.io (I work here).
Franchise – An Open-Source SQL Notebook | https://news.ycombinator.com/item?id=15303833 (Sep 2017, 63 comments)
https://github.com/hvf/franchise
Also mentioned there:
Just to make sure someone doesn't get the wrong impressions from your comment: Redash is 99% open source (and I'm going to close this gap this month[1]), mature and actively maintained. The friendliness is subjective, but we're not trying to please everyone :-)
[1] Sometimes it's easier to prototype new things in the SaaS version, but everything reaches open source eventually. There is practically one feature that wasn't open sourced until now, and I'm going to add it to the open source version now.
CREATE TABLE queries IF NOT EXISTS (
name varchar(64),
version varchar(64),
query text,
description text
);
NOTIFY chat 'Alice: Bob, please insert that query into the new queries table, and then NOTIFY "chat" with the name and version of it';
LISTEN chat;
Asynchronous notification "chat" with payload "Bob: See update-rank, v. borked-1" received from server process with PID 8448.
Asynchronous notification "chat" with payload "Bob: I have it set to update in a temp table, so we don't have to reset the real table" received from server process with PID 8448.
SELECT queries.query FROM queries WHERE name="update-rank" AND version="borked-1"
INTO query;
\echo query
-- "Looks sane, let's run it"
DO $$ EXECUTE query INTO result $$; -- Something like that, I'm guessing.
\echo result
PL/PgSQL's EXECUTE is not to be confused with the EXECUTE that is used with stored procedures.Bonus points if you edit the query by shelling out to sed or butterflies.
I am unsure of what happens for other OS's.
I tried out TeamSQL a while back and it choked pretty hard at about 250.
(disclaimer: I built CSV Explorer)
- Chart is greyed out on my data. Why is that?
- Can I provide parameters (such as a date) in the query that can be changed by whoever wants to run a report? I can't see how to do this.
- Can I publish this as a dashboard that can be used by non-technical team members?
That's a convoluted way to say "1 or 2 person teams"
Hunh you don't you put your queries in sprocs and store that in the data base and your source control system of choice.
Soory I don't see what problem this product is for apart from maybe enabling sub optimal coding practices
Not everybody enjoys sprocs-- having 3 sources of truth (repository, dev db, prod db) gives me headaches.
I've recently started working with a SME (<100 users) who took this approach after abandoning the vendor's reporting recommendations for their Line of Business application (apparently it was just crap).
Other areas of the business cannot be without these reports under any circumstances. Negotiation is not an option.
Since about 2012 they've had various employees generating reports, alerts and data warehouses as objects in the database. Naturally some of these have been superseded. Very often the old objects were left behind "just incase". Almost all of the original authors have left and documentation has been lost or just didn't exist in the first place.
Many of these objects are dense and difficult (because SQL was the wrong tool for the job, or because they go many layers deep like matryoshka dolls).
Demands for changes to reports are frequent (weekly), and some reports functionally overlap, but produce wildly different results for different areas of the business based on various "rules".
Honestly, the database is a fucking mess (approximately 1900 objects relating to reports, alerts and data warehouses - some of which are dolls going many many levels deep., There's a huge sense of shame and fear over trying to regain control.
I totaly understand that this was entirely a human problem. With more restraint this wouldn't have happened. Both inside and out side of the IT team. However, a tool like PopSQL, metabase, etc. I believe would've helped with;
1. Ad-hoc queries that didn't really need to be full objects
2. Discoverability through prettier annotations, etc. - reduction of reports being duplicated
3. Auditing - last access/run times, etc. would be much easier to find to reduce the cruft
4. If the tool is more appropriate it could off load some of the things that SQL is not good at
There are undeniably good reasons for storing reports, alerts and data warehouses (developer maintained objects) in version control. If the report creation/alteration requests don't come often, then I'd argue it's ideal.
However living in the real world, I personally feel it needs to be balanced in conjunction with tools like PopSQL, metabase, etc. Right tool for the right job.
I think metabase/redash/etc is a great fit for the development of reports and the kinds of things that dont need to be anything more than a sql query. IME fast turnaround can be huge for lots of businesses.
I agree with all of your points. A lot of the problem is organizational and political and historical - but the right tool can make a big difference.
That seems to be one of the biggest hurdles I think I'm going to have to figure out, rather than the technical side.
Theres two directions you could be coming from though - if its a problem of the users producing data and storing it in excel instead of your database thats more of an application problem.
But if its a matter of excel being where your users want to look at and work with the data - I say embrace that. Use your metabase/tableau/redash to provide them with that data and let them get it out in excel and do whatever they want. Give them a little time and then let them show you what theyre doing with it.
IME about half the time theyre actually doing things with it that you cant really help them with unless you spent a ton of time. The other half you can take what theyre doing and either apply those changes into the query itself, saving them time and sharing that work with others - or teach them a better/easier/faster way of achieving whatever it is theyre after. I use it as a long-tail way of gathering requirements a lot of times - let me give you all the data you might need for this and you figure out how it can be useful for you.