You’ve got data, and you’d like (or are required) to share it. Whether that data is a single question or a full data room with access to multiple databases, we’ll walk through the different ways you can share data with Metabase.
Whom are you sharing your data with?
To determine how to share the data, there are fundamentally two questions you need to ask:
- whom you’re sharing the data with
- and how heavy that data is.
Whom you’re sharing data with breaks down into two realms: inside your organization, and outside your organization.
Data weight in this context refers to how much data you’re sharing, are you sharing a single question? Or do you need to share a collection, which could include a curated set of questions and dashboards? For more privileged access, you may need to share entire tables or databases.
We’ll walk through our options for all cases, but here’s an overview (figure 1).
Inside the organization
Sharing with team members who have access to Metabase is as simple as messaging or emailing someone a link to a saved question, dashboard, or collection.
For sharing data internally, you have a lot of options:
The dead simple (and surprisingly overlooked) option is that you can just copy the URL of a saved question from the browser’s address bar and send it to a colleague. For question #123, the URL would look something like:
You can also throw together a dashboard with a set of questions, and send them the link. The dashboard doesn’t have to be persistent, i.e., something you’d look at regularly. It can be just a one-off report, like capturing the data around an incident, or a particularly successful campaign.
Email and message
You can, of course, email or message someone a link, but you can also export the results of a question to CSV, XLSV, or JSON, then email those files, or upload them to a shared drive.
For an automated approach, you can also set up a dashboard subscription via email or Slack.
You can send scheduled emails or Slack messages that include all of the questions on a dashboard (minus the text cards). You can email a dashboard subscription to any Metabase user or to any email address, so even folks who don’t have accounts on your Metabase can receive the data — they just won’t be able to click on a chart in their email to view it in Metabase.
If you want more control over the story, you could situate your questions and dashboards in a narrative context by embedding them in a web page. This could be in a blog, company wiki, or your web application.
For non-sensitive data, you can use a public embed. Metabase will provide you with HTML code for an iframe (an inline frame element) that you can just drop in your site - or anywhere that renders HTML.
If all you really need to do is just add some narration, you can even skip the embed. You could use text cards on a dashboard (which support Markdown) to frame the questions on your dashboard in a narrative context.
For sharing lots of different slices of that data:
Selectively grant access to collections
Here’s where we get into permissions. You can create questions and dashboards, and organize them in collections. You can organize your collections by department, data, or project, and set permissions on those collections.
Within those collections, people with edit access to the collection can pin key questions and dashboards to the top of those collections. If you pin a dashboard to the Our analytics collection (the “root” collection), that dashboard will appear on the home page.
Note that collections and permissions can also come in handy once people fill up your Metabase with questions and dashboards. See our guide to keeping your analytics organized.
Selectively grant access to tables and databases
If you need to restrict access to tables or even entire databases, you can also set permissions on databases.
Outside the organization
When you need to share data outside of your organization, the game changes. And how you share may depend on how far outside the organization people are. Are they contractors? Customers? Investors? Auditors?
For sharing lightweight data outside of your organization, you have a few options:
If the person doesn’t have an account on your Metabase, and if the data isn’t sensitive, you can send a public link to a question or dashboard. From a dashboard, you’ll click on the sharing icon (arrow pointing up and to the right) to get your public link.
The public link would look something like:
Public links are relatively secure (people would have to guess a long, alphanumeric code to chance upon that link), but they’re still public (i.e., that question or dashboard is visible to anyone who has that link). Viewers of public links will also be able to update the question’s filters (if any), so you can’t depend on filters to conceal data. You can disable a public link at any time. If you want to share that item again, Metabase will generate a different link to share (any previously generated links will remain invalid).
You can export data to CSV, XLSX and JSON file formats, and email those files to people or share the files on a drive.
For more sensitive data, or if you want to lock a parameter to filter the results, you’ll need to use a secure embed. In that case, you’d need to give your viewers access to the web app where you’re embedding the chart or dashboard (not your Metabase), so that you can sign the token they’ll need to view it with the parameters you’ve set. Learn more about embedding charts and dashboards with the open source edition of Metabase.
For more sensitive, customer-specific data, or for large amounts of data, you have a couple of option for sharing outside of your organization.
Full app embedding
For a more curated experience that still gives people the freedom to analyze the data on their own, you can embed the entire Metabase instance in your app, which allows you to set up multi-tenant, self-service analytics to share data with customers or vendors in your web app. When combined with data sandboxing, you can create custom access to both rows and columns of your tables, which allows people to explore the data via the action menu without being able to see any data they shouldn’t (like the records of another customer, for example).
If we’re talking about fundraising, acquisition, getting audited, litigation: data sharing can be invasive. If you’re looking to raise funding, you can present a curated set of dashboards that tell a tidy story, but these potential investors will also want to slice the data to vet your story from different angles. And the best way to share that kind of data is via a data room.
A data room is a virtual space created to provide privileged, read-only access to a significant amount of data. This data room could include all your data, or a bounded set of data with fairly low-level access. You can include interactive dashboards to give a custom tour of the data, but the idea with a data room is that people with access to it should be able to perform their own analysis.
To create a data room with Metabase, you have essentially two options: create a group in your existing Metabase, or set up a new Metabase instance.
The first option is simply to create a new group in your existing Metabase, and give that group access to the requested datasets - and only those datasets - as well as any relevant collections of dashboards and questions for that data. Effectively, that group’s permissions define the “dimensions” of that data room.
The second option entails setting up a new, standalone Metabase instance and connecting it to the relevant databases. Metabase is trivial to set up, so it’s not much more work than creating a group. Once it’s up, you’ll need to recreate any collections, dashboards, and questions that you’d want to include for your audience, in addition to giving the people you want to share the data with access to the raw tables. If you already have these collections and dashboards in your “mothership” Metabase instance, you could use the serialization feature to dump the application data relevant to the data room, and load those items into the data room instance.