Sync Visualizations to various destinations support

The Issue

Currently, there is no support to send visualizations (tables, charts, etc) to different destinations like Google Sheets, Slack, Mail, etc. from Redash itself.

I am aware that we can use IMPORTDATA() in Google Sheets and use the respective query’s API Key to import the data there, but this approach has the following downsides:

  1. IMPORTDATA() function is not reliable
  • As awesome as this feature may be in Google sheets but this is dependent on Google and there have been multiple instances of this function getting down from Google’s side for multiple days : https://discuss.redash.io/t/google-sheet-error-importdata-error-could-not-fetch-url/7671

  • There are limits on how much data can be imported via this function and the number of times we can call this function. These limits are at both - the user level as well as the organization level.
    Also, we have tried to increase these limits and have found that they can not be increased. This makes the reports very unreliable and unscalable.

  1. Query Level API Keys are not secure
  • Being able to access data via APIs itself is a major security concern as someone who may have left the organization can still access the data via those API keys.
    We can consider removing the user after he/she has left the organization so that their personal API keys get removed, but we can not change the API keys at the query level every time a user leaves the organization.

  • People tend to use these API keys in their production systems(using Redash as a database) as well, due to which we have encountered incidents of heavy load on Redash and eventually Redash getting down due to that.

  1. Limited destinations
  • As the only method to export data is via APIs, it makes the destinations limited as we need to make the API to fetch the data.

  • Due to the large variety of options it provides Redash easily becomes one of the prominent tools for BI Reporting at any organization and people generally tend to share the visualizations’ screenshots manually in different destinations like Slack and Email.
    It will be great if they are able to control this process from Redash itself and sync the visualizations to destinations of their choice with every query refresh.

What we propose

  1. Have support to add various destinations(Google Sheets, Slack, Email, etc) at the visualization level so that one can leverage the power of Redash better in the organization and also is able to centrally control what all data is being exported where and at what frequency.

  2. Deprecate Query Level API Keys and allow users to fetch data via User Level API Keys only.

  3. User shall be allowed to manually sync the visualization to any destination and sync to be called every time the query executes successfully on its schedule.

I’m not sure this make sense in general. We can make it a configurable behavior, but for most companies this is actually a safer option than using a user API key, as the exposure is limited to a single query.

I always thought we can evolve Alerts intro a more generic functionality, where we have different types of triggers and different types of actions:

  • Today a trigger is only evaluating some rule. But we could add a simpler trigger of “every time the query runs”.
  • Today the action is to send a simple message to email/Slack/etc. We could add support for using the viz snapshot and/or results in whole.

I believe this should address the use case you mention?

Yes, we are on the same lines on both points.

  1. Let’s begin working on evolving the existing alert destinations and add functionality to sync visualization to destinations. We can start by simply syncing the query results for a start as sending charts and other graphs can be a little tricky.
    We have already started implementing this in our organization, so would love to help here as well.

  2. Yeah, it would be better to make query level API keys configurable considering the points I mentioned above. Would love to help in this as well.

Hey @arikfr

We have developed this feature at our organization for Google sheets. Would like to contribute it back to the community.

If we are on the same lines, we can have a demo as well.