Skip to content
Snippets Groups Projects
Unverified Commit 1c350ed5 authored by Console's avatar Console Committed by GitHub
Browse files

Docs 37 release new dashboard functionality 13237 (#13502)

parent 4be825a5
No related merge requests found
Showing
with 32 additions and 136 deletions
......@@ -18,13 +18,11 @@ This guide is for advanced users and those who will be setting up and maintainin
#### [Operations Guide](operations-guide/start.md)
This guide contains more detailed information about how to install Metabase for production use. It covers topics like SSL termination, deploying via Docker Containers vs. Jars, as well as the tradeoffs involved.
## Enterprise Edition
#### [Enterprise Features Guide](./enterprise-guide/start.md)
Here’s where to go for help using the features included in the Enterprise Edition of Metabase.
## For Developers
#### [Developers Guide](developers-guide.md)
......
......@@ -123,3 +123,8 @@ To see concrete examples of how to embed Metabase in applications under a number
## Premium embedding
If you'd like to embed Metabase dashboards or charts in your application without the "Powered by Metabase" attribution, you can purchase premium embedding from the Metabase store. [Find out more here](https://store.metabase.com/product/embedding).
To learn more about embedding, check out these articles:
- [How to use Metabase to deliver analytics to your customers](https://www.metabase.com/blog/external-facing-analytics/index.html).
- [How to embed Metabase in your app to deliver multi-tenant, self-service analytics](https://www.metabase.com/blog/embedding/index.html).
\ No newline at end of file
......@@ -11,7 +11,7 @@ Metabase is all about letting non-technical users get access to the their organi
It's important to keep in mind these goals of the Metabase project. Many times
proposals will be marked "Out of Scope" or otherwise deprioritized. This doesn't mean the proposal isn't useful, or that we wouldn't be interested in seeing it done as a side project or as an experimental branch. However, it does mean that we won't point the core team or contributors to it in the near term. Issues that are slightly out of scope will be kept open in case there is community support (and ideally contributions).
To get a sense for the end goals, make sure to read the [Zen of Metabase](../zen.md)
To get a sense for the end goals, make sure to read the [Zen of Metabase](https://github.com/metabase/metabase/blob/master/zen.md).
## Our product process:
......
# Overview
Typically, you'll want to evaluate the application on any database you have access to. If you want to expose the application to other users, you should carefully consider how you access your database. In addition as the data sizes grow, there will be a number of options in how you should setup your overall analytics infrastructure.
## Starting out
It is typical to point this to a production database of a small application (or a large application with a small number of users). This typically works for periods before launch or when the database is either static, or has a small number of users (like internal applications or low volume but high value paid applications). Eventually, as usage of the Query Server grows, and the load on the production database increases a couple of things happen
* Expensive queries can slow down the database for production users
* The occasional scans (like on first installation) the Query Server runs to keep its internal representations of your database sync'd might add significant load
* Any recurring queries you run might start to add significant load
* You might need to import third party data for analysis, which typically should not live on your main database
At some point, you should separate out your main application database and your analytics database. There are a number of ways to do this.
## Read Replica
Assuming you do not need to do a lot of transformation or ingest lots of third party data sources, this can be a good stopgap to setting up a complete data/analytics infrastructure. For MySQL or Postgres, just set up a read replica and make sure to not let production application servers hit it for normal queries.
## Dedicated analytics database
Typically once enough data is in the system and/or the transformation needs are complex enough, a dedicated analytics database is used. There are many options ranging from a normal general purpose database (MySQL, Postgres, SQL Server, etc), to a dedicated Analytics database (Vertica, Redshift, GreenPlum, Terredata, etc), the new generation of SQL on Hadoop databases (Spark, Presto) or NoSQL databases (Druid, Cassandra, etc).
It is rare that your applications database will have all the data you need and be structured in a way that lets you ask all of the questions you are interested in. Typically an application database will have a schema optimized for small reads and updates, while most analytics queries typically touch a large fraction of a table.
# Ingestion
## From other databases
If your database is small enough, then it is generally easy enough to dump the whole database and then ingest it into your data warehouse.
### Postgres
### MySQL
### Heroku
## Events
## Third party data
# Transformation
## Uniques
## Event Enrichment
## Denormalization
## Working backwards from Metrics Example
......@@ -6,6 +6,8 @@ You can get a license by signing up for a free trial of the Enterprise edition.
To get the Enterprise edition, you can either [download the latest .jar file](https://downloads.metabase.com/enterprise/latest/metabase.jar), or get the [latest Docker image](https://hub.docker.com/r/metabase/metabase-enterprise/) at `metabase/metabase-enterprise:latest`
If you don't want to host the Enterprise Edition yourself, you can have it hosted for you with [Metabase Cloud](https://www.metabase.com/start/hosted/index.html).
Once you have the Enterprise edition running, to activate all of its features go to the Admin Panel within Metabase, click on the Enterprise tab, click the "Activate a license" button, and then paste in your license token. The page should change to show you that Enterprise features are now active.
### Validating Your Enterprise Token
......
## Customizing drill-through
Out of the box, Metabase comes with some handy actions that you can access when you click on parts of a table or chart: you can filter, break out, zoom in, or x-ray things you click.
But the Enterprise Edition of Metabase includes a set of features which allow you to customize what happens when users click on cells in a table or parts of charts.
For example, you might have a high-level executive dashboard with a bar chart which shows your total revenue per product category, and what you’d like to do is allow your users to click on a bar in that chart to see a *different* dashboard with more detail about that product category. Or maybe you have a similar scenario, but you’d like to set things up so that clicking on a bar takes your users to a totally different app or site, like an internal company wiki page.
We’ll walk through how to do both of these things, first for a chart, then for a table. Here’s the chart and table we’ll be using in our examples.
![Example charts](./images/customizing-drill-through/example-charts.png)
### Customizing drill-through for a chart
To start, we’ll need a chart that's either in a dashboard or that's standalone. Our example chart is in a dashboard, and it displays the sum of revenue received from orders in each state of the US (it looks like Texas really loves Widgets and Gizmos).
Next, we’ll enter edit mode for our dashboard, then click the gear icon on our chart to open up the chart settings. If you’re using a standalone saved question, just click the gear next to the chart type to open up the chart settings.
Click on the `Drill-through` tab at the top and you’ll see two options for what should happen when someone clicks on this chart. The default is that it’ll open up the actions menu, but we want to override this with a custom link, so we’ll click that option. When we do, we see a new Link Template section.
![Settings](./images/customizing-drill-through/chart-link-template.png)
What we need to do here is to type in the full URL of where a user should go when they click on a bar in the chart. But the really powerful thing we can do is to use a variable in the URL which can insert the value of the clicked bar. For example, we could type a URL like this `https://www.google.com/search?q={% raw %}{{STATE}}{% endraw %}`.
The important part is the `{% raw %}{{STATE}}{% endraw %}` bit — what we’re doing here is referring to the `STATE` column in our query’s result (which we’re using for our x-axis in this case). So if a user was to click on the `TX` (Texas) bar in our chart, the value of the `STATE` column for that bar would be inserted into our URL, so it would look like this: `https://www.google.com/search?q=TX`. If you click on the blue `Columns` link below the input box here, you’ll see the full list of all the columns you can refer to. Your URL can use as many column variables you want; you can even refer to the same column multiple times in different parts of the URL.
Next we’ll click `Done`, then save our dashboard. Now when we click our chart, instead of seeing the actions menu, we’ll be taken to the URL that we entered above, with the value of the clicked bar inserted into the URL. These links will be opened in a new tab or window unless they link to another chart or dashboard within Metabase.
*Note:* One important thing to point out is that when we customize drill-through on a dashboard card, rather than on the standalone saved question, we’re only customizing that instance of the chart on that one dashboard.
### Linking to another Metabase dashboard or saved question
Now that you know how to create a custom link with variables, let's talk about how to use that to link to another dashboard or saved question in your Metabase instance.
Continuing with our example chart from above, let's say that we have another dashboard with lots more in-depth information and metrics about orders for all states. In order to filter all the charts in our dashboard by a single state, we've added a `Location` type filter which has been set to let us filter by State, so we can e.g. select `Delaware` from it to make all of the charts only show Delawarean data.
![Detail dashboard](./images/customizing-drill-through/detail-dashboard.png)
What's really cool now is that we can use a custom link on the bar chart in our first dashboard to automatically pick a value for the State filter in our detail dashboard based on which bar is clicked. To do that, we'll go back to the chart on our first dashboard and go to the `Drill-through` tab in its settings.
In the Link Template input box, we'll put in the full URL of the dashboard that we want to link to, with a variable in it to populate the dashboard's filter. Dashboard URLs in Metabase look like this: `http://YOUR-METABASE-LOCATION.com/dashboard/5`. When you make a selection for a filter on a dashboard, you'll notice some additional text gets added to the end of the URL, like this: `http://YOUR-METABASE-LOCATION.com/dashboard/5?state=DE` In this example, `state` is the name of a filter on our dashboard, and `DE` is the current value of the filter (DE for Delaware). So in our input box, we're going to enter a template that looks like that, but with our `{% raw %}{{STATE}}{% endraw %}` column variable in the spot where the filter's value goes: `http://YOUR-METABASE-LOCATION.com/dashboard/5?state={% raw %}{{STATE}}{% endraw %}`. Once we save our changes, whenever someone clicks on a bar in this chart, it will take them to our second dashboard with the State filter on that dashboard filled in with the State value of the bar that was clicked.
![Dashboard link template](./images/customizing-drill-through/dashboard-link-template.png)
Keep in mind that your link needs to use the name you've given to the filter, but with underscores in place of any spaces. So if your filter is called `Customer Name`, the part after the question mark in your link should look like `customer_name={% raw %}{{COLUMN}}{% endraw %}`.
If you want to link to a saved SQL question that has filter widgets in it, you'll follow the exact same process as for a dashboard. Your link template will just look more like this: `http://YOUR-METABASE-LOCATION.com/question/17?filter={% raw %}{{COLUMN}}{% endraw %}`. You can also have your link templates go to saved questions built with the graphical editor, but you can't currently pass any variable values to them to fill filters.
### Customizing drill-through for a column in a table
Customizing drill-through for a table is very similar to doing it for a chart. Usually what we’re trying to do with a table though is to make it so that clicking on a cell in a specific column will go to a custom destination. E.g., we might have a `Product ID` column, and we’d like to make it so that clicking on a specific product's ID will open up our product catalog web app to the page that has details for the product we clicked on.
Again, in our example our table visualization is in a dashboard, so we’ll start by entering edit mode for our dashboard and then clicking the settings gear button on our table. If you were doing this on a standalone question, you’d click the gear button next to the visualization dropdown.
From the `Columns` tab we'll find the `Product ID` column and click the gear next to it.
![Column settings](./images/customizing-drill-through/column-settings.png)
Then we'll find the `Display as link` setting. This dropdown will be slightly different depending on what kind of column you're customizing; for example, Email or URL columns will have additional options for how they should be displayed in the table. For our purposes, we'll open the dropdown and select the `Link` option.
![Link option](./images/customizing-drill-through/link-option.png)
We'll now see the same link template input box as with the chart example above. Just as before, we can use the double braces syntax, like `{% raw %}{{PRODUCT_ID}}{% endraw %}`, in our URL to refer to a column name to insert the clicked cell's value at that point in the URL.
![Link option](./images/customizing-drill-through/table-options-filled.png)
**Referencing multiple column values**
Note that you can refer to *any* column in the table here, not just the column whose drill-through behavior you're customizing. When you click on a cell, it will insert the value of all referenced columns *in that same row* into your URL. This could let us do things like make clicking on a product's *name* go to a custom destination, but reference the product's *ID* in the URL.
This comes in handy when linking to a dashboard or question with multiple filters: your link template could for example reference two values for two filters in the dashboard you're linking to, like this so, `http://YOUR-METABASE-LOCATION.com/dashboard/5?name={% raw %}{{NAME}}{% endraw %}&id={% raw %}{{ID}}{% endraw %}`, where `name` and `id` are the filters. Note the ampersand `&` between the two filters in the link; you can string together any number of filters in your link templates by putting an ampersand between them.
**Customizing link text**
You can also optionally customize what text should be displayed in each cell of this column. You can also use the double braces variable syntax here. The way we've used this in the example above is to refer to the value of our `Product ID` column in a sentence that makes it clearer what will happen when the cell is clicked. So `Look up {% raw %}{{PRODUCT_ID}}{% endraw %} in our catalog` gets turned into `Look up Awesome Concrete Shoes in our catalog` in the corresponding cell.
---
## Next: Copying contents of one Metabase instance to another
Learn how to use [serialization](serialization.md) to create and load data dumps of the contents of a Metabase instance.
For customizing what happens when users click on a dashboard card, see [interactive dashboards](../users-guide/interactive-dashboards.md).
\ No newline at end of file
......@@ -90,6 +90,15 @@ Currently we use HTTP cookies to authenticate embedded Metabase users. A limitat
When signing JWTs for either SSO (i.e., in full-app embedding) or standalone question/dashboard embedding, you should always include an expiration time `exp` property appropriate for your application. For SSO it can be very short (e.g., 1 minute) as the token is immediately used to create a session. For embedding it can be short if there are no parameters you expect the user to change, otherwise it should be as long as you expect the user to view and change parameters.
## Learn More
Check out these articles:
- [How to use Metabase to deliver analytics to your customers](https://www.metabase.com/blog/external-facing-analytics/index.html).
- [How to embed Metabase in your app to deliver multi-tenant, self-service analytics](https://www.metabase.com/blog/embedding/index.html).
---
## Next: white labeling
......
docs/enterprise-guide/images/customizing-drill-through/chart-link-template.png

102 KiB

docs/enterprise-guide/images/customizing-drill-through/column-settings.png

172 KiB

docs/enterprise-guide/images/customizing-drill-through/detail-dashboard.png

117 KiB

docs/enterprise-guide/images/customizing-drill-through/example-charts.png

105 KiB

docs/enterprise-guide/images/customizing-drill-through/link-option.png

148 KiB

docs/enterprise-guide/images/customizing-drill-through/table-options-filled.png

189 KiB

......@@ -55,8 +55,9 @@ The `--on-error` flag allows you to specify whether the load process should keep
Both of these flags are optional.
---
## That's it!
To learn more, check out [Serialization: preloading dashboards in a new Metabase instance](https://www.metabase.com/blog/serialization/index.html).
Still need help? Feel free to reach out to us at [support@metabase.com](mailto:support@metabase.com).
......@@ -77,3 +77,5 @@ In three parts:
3. **People with SQL query access can still run the snippet if they know its name, regardless if they have permissions to the snippet's folder**. They wouldn't be able to view or edit the snippet, but they could include it in a query if they knew its name, e.g, `{% raw %}{{snippet: Example snippet I don't have permissions to but can still use }}{% endraw %}`.
Because of how snippet folder permissions work, we recommend that you consider snippet folder permissions as an additional tool for snippet organization, not as method of preventing access to the SQL code those snippets contain. Use folder permissions to keep the snippet sidebar tidy by exposing teams to folders relevant to their analytical domain, and restrict editing permissions to key snippets in your organization to keep important SQL code accurate and safe from bugs introduced by unvetted edits.
Learn more about [SQL snippets](https://www.metabase.com/blog/sql-snippets/index.html).
......@@ -8,8 +8,6 @@ The Enterprise Edition of Metabase provides added functionality and solutions fo
* [Sandboxing data based on user attributes](data-sandboxes.md)
* [Embedding the entire Metabase app in your own web app](full-app-embedding.md)
* [Customizing how Metabase looks with white labeling](whitelabeling.md)
* [Customizing drill-through for charts and tables](customizing-drill-through.md)
* [Copying contents of one Metabase instance to another (serialization)](serialization.md)
* [Using the audit logs](audit.md)
* [Organizing SQL snippets with folders and permissions](sql-snippets.md)
......@@ -16,7 +16,9 @@ You can customize the colors that Metabase uses throughout the app:
* **Accent colors:** these are the colors that are used for some icons, secondary buttons, elements of the graphical query builder, and chart colors.
* **Additional chart colors:** as the name implies, these are additional colors that are included in the charting options to give your lines, bars, and pie slices some extra pizazz.
To learn more, check out this article on [branding your Metabase instance](https://www.metabase.com/blog/white-label/index.html).
---
## Next: customizing drill-through
Find out how you can [customize drill-through](customizing-drill-through.md) when users click on a chart to go to a custom destination.
## Next: Copying contents of one Metabase instance to another
Learn how to use [serialization](serialization.md) to create and load data dumps of the contents of a Metabase instance.
......@@ -2,4 +2,4 @@
If you are using a Metabase version earlier than 0.33, you will need to either write a SQL query that contains joins, or have your Metabase administrator set up foreign keys (they can read more about that [here](../../administration-guide/03-metadata-editing.md)).
If you are using Metabase 0.33 or above, you can perform joins using the Notebook editor. Note that you will need to choose a field to join on, or link, the two tables together. For instance, if you want to combine a Customer table with an Order table, you might select the ID field in the Customer table and link it to the customer_id field in the order table.
If you are using Metabase 0.33 or above, you can [perform joins using the Notebook editor](https://www.metabase.com/blog/joining-tables/index.html).
# Operations Guide
This guide contains detailed information about how to install and configure Metabase for production use.
This guide contains detailed information about how to install and configure Metabase for production use.
If you'd prefer we take care of the details of running your Metabase instance for you, check out our hosted offering, [Metabase Cloud](https://www.metabase.com/start/hosted/index.html).
**Covered in this guide:**
......@@ -20,3 +22,5 @@ This guide contains detailed information about how to install and configure Meta
* [Configuring Logging](log-configuration.md)
* [How to setup monitoring via JMX](jmx-monitoring.md)
* [A word on Java versions](java-versions.md)
For scaling best practices, check out [Metabase at Scale](https://www.metabase.com/blog/scaling-metabase/index.html).
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment