This may be an unpopular opinion, but if you have US$70/mo to spare, it's hard to beat Tableau for this exact use case.<p>"Connect to an arbitrary database, create a view that joins numerous tables (including foreign tables, via blending) together, load to columnar storage on a local SSD for performance if necessary, add arbitrary derived columns (including well-defined lateral lookups for things like 'annotate this action with the date of the first action of this action's user' [0]), group by 4 of the derived columns, map two of the groupings to nested dimensions along the horizontal axis and two to the vertical axis, and show the sum or count at each cell in a resulting table, then when satisfied, drill down into a slice and turn it into a bar chart with colors that match your branding needs" - every one of those clauses can be accomplished with drag-and-drop mouse commands almost at the speed of thought.<p>And once you get the hang of it, there's zero impedance mismatch with hand-rolled SQL, it's just way faster to iterate on, especially with schemas where you may not remember all the columns available to you, and especially when you're doing so over screenshare with non-technical colleagues.<p>[0] <a href="https://help.tableau.com/current/pro/desktop/en-us/calculations_calculatedfields_lod_overview.htm" rel="nofollow">https://help.tableau.com/current/pro/desktop/en-us/calculati...</a>