Skip to content
Snippets Groups Projects
Unverified Commit 71520bcc authored by Jeff Bruemmer's avatar Jeff Bruemmer Committed by GitHub
Browse files

prettier formatting (#49551)

parent 632e1386
No related branches found
No related tags found
No related merge requests found
Showing
with 212 additions and 206 deletions
......@@ -49,7 +49,6 @@ Current partner drivers:
- [Ocient](https://github.com/Xeograph/metabase-ocient-driver)
- [Starburst (compatible with Trino)](https://github.com/starburstdata/metabase-driver)
Partner drivers are available to Cloud customers out-of-the-box.
If you have interest in becoming a partner, please fill the [partner form](https://www.metabase.com/partners/join) and we will get in touch.
......@@ -60,21 +59,21 @@ If you have interest in becoming a partner, please fill the [partner form](https
Anyone can build a community driver. These are the currently known third-party database drivers for Metabase.
| Database | GitHub Stars | Last release (_if available_) |
|----------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------|
| [CSV](https://github.com/Markenson/csv-metabase-driver) | ![GitHub stars](https://img.shields.io/github/stars/Markenson/csv-metabase-driver) | ![GitHub (Pre-)Release Date](https://img.shields.io/github/release-date-pre/Markenson/csv-metabase-driver) |
| [Cube.js](https://github.com/lili-data/metabase-cubejs-driver) | ![GitHub stars](https://img.shields.io/github/stars/lili-data/metabase-cubejs-driver) | ![GitHub (Pre-)Release Date](https://img.shields.io/github/release-date-pre/lili-data/metabase-cubejs-driver) |
| [Databend](https://github.com/databendcloud/metabase-databend-driver) | ![GitHub stars](https://img.shields.io/github/stars/databendcloud/metabase-databend-driver) | ![GitHub (Pre-)Release Date](https://img.shields.io/github/release-date-pre/databendcloud/metabase-databend-driver) |
| [DB2](https://github.com/damienchambe/metabase-db2-driver) | ![GitHub stars](https://img.shields.io/github/stars/damienchambe/metabase-db2-driver) | ![Github (Pre-)Release Date](https://img.shields.io/github/release-date-pre/damienchambe/metabase-db2-driver) |
| [Dremio](https://github.com/Baoqi/metabase-dremio-driver) | ![GitHub stars](https://img.shields.io/github/stars/Baoqi/metabase-dremio-driver) | ![GitHub (Pre-)Release Date](https://img.shields.io/github/release-date-pre/Baoqi/metabase-dremio-driver) |
| [Firebird](https://github.com/evosec/metabase-firebird-driver) | ![GitHub stars](https://img.shields.io/github/stars/evosec/metabase-firebird-driver) | ![GitHub (Pre-)Release Date](https://img.shields.io/github/release-date-pre/evosec/metabase-firebird-driver) |
| [GreptimeDB](https://github.com/greptimeteam/greptimedb-metabase-driver) | ![GitHub stars](https://img.shields.io/github/stars/greptimeteam/greptimedb-metabase-driver) | ![GitHub (Pre-)Release Date](https://img.shields.io/github/release-date-pre/greptimeteam/greptimedb-metabase-driver) |
| [Hydra](https://www.hydra.so/blog-posts/2022-09-28-metabase-and-hydra) | Hydra connections use the official [Postgres driver](../databases/connections/postgresql.md). | Not applicable. |
| [Impala](https://github.com/brenoae/metabase-impala-driver) | ![GitHub stars](https://img.shields.io/github/stars/brenoae/metabase-impala-driver) | ![GitHub (Pre-)Release Date](https://img.shields.io/github/release-date-pre/brenoae/metabase-impala-driver) |
| [Neo4j](https://github.com/StronkMan/metabase-neo4j-driver) | ![GitHub stars](https://img.shields.io/github/stars/StronkMan/metabase-neo4j-driver) | ![GitHub (Pre-)Release Date](https://img.shields.io/github/release-date-pre/StronkMan/metabase-neo4j-driver) |
| [Netsuite SuiteAnalytics Connect](https://github.com/ericcj/metabase-netsuite-driver) | ![GitHub stars](https://img.shields.io/github/stars/ericcj/metabase-netsuite-driver) | ![GitHub (Pre-)Release Date](https://img.shields.io/github/release-date-pre/ericcj/metabase-netsuite-driver) |
| [Peaka](https://github.com/peakacom/metabase-driver) | ![GitHub stars](https://img.shields.io/github/stars/peakacom/metabase-driver) | ![GitHub (Pre-)Release Date](https://img.shields.io/github/release-date-pre/peakacom/metabase-driver) |
| [Teradata](https://github.com/swisscom-bigdata/metabase-teradata-driver) | ![GitHub stars](https://img.shields.io/github/stars/swisscom-bigdata/metabase-teradata-driver) | ![GitHub (Pre-)Release Date](https://img.shields.io/github/release-date-pre/swisscom-bigdata/metabase-teradata-driver) |
| Database | GitHub Stars | Last release (_if available_) |
| ------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| [CSV](https://github.com/Markenson/csv-metabase-driver) | ![GitHub stars](https://img.shields.io/github/stars/Markenson/csv-metabase-driver) | ![GitHub (Pre-)Release Date](https://img.shields.io/github/release-date-pre/Markenson/csv-metabase-driver) |
| [Cube.js](https://github.com/lili-data/metabase-cubejs-driver) | ![GitHub stars](https://img.shields.io/github/stars/lili-data/metabase-cubejs-driver) | ![GitHub (Pre-)Release Date](https://img.shields.io/github/release-date-pre/lili-data/metabase-cubejs-driver) |
| [Databend](https://github.com/databendcloud/metabase-databend-driver) | ![GitHub stars](https://img.shields.io/github/stars/databendcloud/metabase-databend-driver) | ![GitHub (Pre-)Release Date](https://img.shields.io/github/release-date-pre/databendcloud/metabase-databend-driver) |
| [DB2](https://github.com/damienchambe/metabase-db2-driver) | ![GitHub stars](https://img.shields.io/github/stars/damienchambe/metabase-db2-driver) | ![Github (Pre-)Release Date](https://img.shields.io/github/release-date-pre/damienchambe/metabase-db2-driver) |
| [Dremio](https://github.com/Baoqi/metabase-dremio-driver) | ![GitHub stars](https://img.shields.io/github/stars/Baoqi/metabase-dremio-driver) | ![GitHub (Pre-)Release Date](https://img.shields.io/github/release-date-pre/Baoqi/metabase-dremio-driver) |
| [Firebird](https://github.com/evosec/metabase-firebird-driver) | ![GitHub stars](https://img.shields.io/github/stars/evosec/metabase-firebird-driver) | ![GitHub (Pre-)Release Date](https://img.shields.io/github/release-date-pre/evosec/metabase-firebird-driver) |
| [GreptimeDB](https://github.com/greptimeteam/greptimedb-metabase-driver) | ![GitHub stars](https://img.shields.io/github/stars/greptimeteam/greptimedb-metabase-driver) | ![GitHub (Pre-)Release Date](https://img.shields.io/github/release-date-pre/greptimeteam/greptimedb-metabase-driver) |
| [Hydra](https://www.hydra.so/blog-posts/2022-09-28-metabase-and-hydra) | Hydra connections use the official [Postgres driver](../databases/connections/postgresql.md). | Not applicable. |
| [Impala](https://github.com/brenoae/metabase-impala-driver) | ![GitHub stars](https://img.shields.io/github/stars/brenoae/metabase-impala-driver) | ![GitHub (Pre-)Release Date](https://img.shields.io/github/release-date-pre/brenoae/metabase-impala-driver) |
| [Neo4j](https://github.com/StronkMan/metabase-neo4j-driver) | ![GitHub stars](https://img.shields.io/github/stars/StronkMan/metabase-neo4j-driver) | ![GitHub (Pre-)Release Date](https://img.shields.io/github/release-date-pre/StronkMan/metabase-neo4j-driver) |
| [Netsuite SuiteAnalytics Connect](https://github.com/ericcj/metabase-netsuite-driver) | ![GitHub stars](https://img.shields.io/github/stars/ericcj/metabase-netsuite-driver) | ![GitHub (Pre-)Release Date](https://img.shields.io/github/release-date-pre/ericcj/metabase-netsuite-driver) |
| [Peaka](https://github.com/peakacom/metabase-driver) | ![GitHub stars](https://img.shields.io/github/stars/peakacom/metabase-driver) | ![GitHub (Pre-)Release Date](https://img.shields.io/github/release-date-pre/peakacom/metabase-driver) |
| [Teradata](https://github.com/swisscom-bigdata/metabase-teradata-driver) | ![GitHub stars](https://img.shields.io/github/stars/swisscom-bigdata/metabase-teradata-driver) | ![GitHub (Pre-)Release Date](https://img.shields.io/github/release-date-pre/swisscom-bigdata/metabase-teradata-driver) |
If you don't see a driver for your database, try looking in the comments of the [issue related to the database](https://github.com/metabase/metabase/labels/Database%2F). You might also find more drivers by searching on GitHub for "Metabase driver".
......
......@@ -7,7 +7,8 @@ title: Developing with Visual Studio Code
## Debugging
First, install the following extension:
* [Debugger for Firefox](https://marketplace.visualstudio.com/items?itemName=firefox-devtools.vscode-firefox-debug)
- [Debugger for Firefox](https://marketplace.visualstudio.com/items?itemName=firefox-devtools.vscode-firefox-debug)
_Note_: Debugger for Chrome has been deprecated. You can safely delete it as Visual Studio Code now has [a bundled JavaScript Debugger](https://github.com/microsoft/vscode-js-debug) that covers the same functionality.
......@@ -15,8 +16,8 @@ Before starting the debugging session, make sure that Metabase is built and runn
To begin debugging Metabase, switch to the Debug view (shortcut: `Ctrl+Shift+D`) and then select one of the two launch configurations from the drop-down at the top:
* Debug with Firefox, or
* Debug with Chrome
- Debug with Firefox, or
- Debug with Chrome
After that, begin the debugging session by choosing menu _Run_, _Start Debugging_ (shortcut: `F5`).
......@@ -30,15 +31,16 @@ For more details, please follow the complete VS Code guide on [Developing inside
Requirements:
* [Visual Studio Code](https://code.visualstudio.com/) (obviously)
* [Docker](https://www.docker.com/)
* [Remote - Containers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) for VS Code
- [Visual Studio Code](https://code.visualstudio.com/) (obviously)
- [Docker](https://www.docker.com/)
- [Remote - Containers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) for VS Code
_Important_: Ensure that Docker is running properly and it can be used to download an image and launch a container, e.g. by running:
```
$ docker run hello-world
```
If everything goes well, you should see the following message:
```
......
......@@ -37,17 +37,17 @@ If you'd like to share your data with the good people of the internet, admins ca
## Comparison of embedding types
| Action | [Embedding SDK](./sdk/introduction.md) | [Interactive](./interactive-embedding.md) | [Static](./static-embedding.md) | [Public](../questions/sharing/public-links.md) |
| ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ | ----------------------------------------- | ------------------------------- | ---------------------------------------------- |
| Display charts and dashboards | ✅ | ✅ | ✅ | ✅ |
| Display interactive [filter widgets](https://www.metabase.com/glossary/filter_widget) | ✅ | ✅ | ✅ | ✅ |
| Restrict data with [locked filters](./static-embedding-parameters.md#restricting-data-in-a-static-embed-with-locked-parameters) | ❌ | ❌ | ✅ | ❌ |
| Restrict data with [sandboxes](../permissions/data-sandboxes.md) | ✅ | ✅ | ❌ | ❌ |
| Use the [drill-through menu](https://www.metabase.com/learn/questions/drill-through) | ✅ | ✅ | ❌ | ❌ |
| Self-serve via [query builder](https://www.metabase.com/glossary/query_builder) | ✅ | ✅ | ❌ | ❌ |
| View usage of embeds with [usage analytics](../usage-and-performance-tools/usage-analytics.md) | ✅ | ✅ | ❌ | ❌ |
| [Actions on dashboards](../dashboards/actions.md) | ✅ | ✅ | ❌ | ❌ |
| Embed individual Metabase components | ✅ | ❌ | ❌ | ❌ |
| Manage access and interactivity per component | ✅ | ❌ | ❌ | ❌ |
| ------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------- | ----------------------------------------- | ------------------------------- | ---------------------------------------------- |
| Display charts and dashboards | ✅ | ✅ | ✅ | ✅ |
| Display interactive [filter widgets](https://www.metabase.com/glossary/filter_widget) | ✅ | ✅ | ✅ | ✅ |
| Restrict data with [locked filters](./static-embedding-parameters.md#restricting-data-in-a-static-embed-with-locked-parameters) | ❌ | ❌ | ✅ | ❌ |
| Restrict data with [sandboxes](../permissions/data-sandboxes.md) | ✅ | ✅ | ❌ | ❌ |
| Use the [drill-through menu](https://www.metabase.com/learn/questions/drill-through) | ✅ | ✅ | ❌ | ❌ |
| Self-serve via [query builder](https://www.metabase.com/glossary/query_builder) | ✅ | ✅ | ❌ | ❌ |
| View usage of embeds with [usage analytics](../usage-and-performance-tools/usage-analytics.md) | ✅ | ✅ | ❌ | ❌ |
| [Actions on dashboards](../dashboards/actions.md) | ✅ | ✅ | ❌ | ❌ |
| Embed individual Metabase components | ✅ | ❌ | ❌ | ❌ |
| Manage access and interactivity per component | ✅ | ❌ | ❌ | ❌ |
## Switching from static to interactive embedding
......
......@@ -10,161 +10,161 @@ Here's an example that includes the various styling options available:
```js
const theme = {
// Specify a font to use from the set of fonts supported by Metabase.
// You can set the font to "Custom" to use the custom font
// configured in your Metabase instance.
fontFamily: "Lato",
// Specify a font to use from the set of fonts supported by Metabase.
// You can set the font to "Custom" to use the custom font
// configured in your Metabase instance.
fontFamily: "Lato",
// Override the base font size for every component.
// This does not usually need to be set, as the components
// inherit the font size from the parent container, such as the body.
fontSize: "16px",
// Override the base font size for every component.
// This does not usually need to be set, as the components
// inherit the font size from the parent container, such as the body.
fontSize: "16px",
// Override the base line height for every component.
lineHeight: 1.5,
// Override the base line height for every component.
lineHeight: 1.5,
// Match your application's color scheme
colors: {
// The primary color of your application
brand: "#9B5966",
// Match your application's color scheme
colors: {
// The primary color of your application
brand: "#9B5966",
// The color of text that is most prominent
"text-primary": "#4C5773",
// The color of text that is most prominent
"text-primary": "#4C5773",
// The color of text that is less prominent
"text-secondary": "#696E7B",
// The color of text that is less prominent
"text-secondary": "#696E7B",
// The color of text that is least prominent
"text-tertiary": "#949AAB",
// The color of text that is least prominent
"text-tertiary": "#949AAB",
// Default background color
background: "#FFFFFF",
// Default background color
background: "#FFFFFF",
// Slightly darker background color used for hover and accented elements
"background-hover": "#F9FBFC",
// Slightly darker background color used for hover and accented elements
"background-hover": "#F9FBFC",
// Color used for borders
border: "#EEECEC",
// Color used for borders
border: "#EEECEC",
// Color used for filters context
filter: "#7172AD",
// Color used for filters context
filter: "#7172AD",
// Color used for aggregations and breakouts context
summarize: "#88BF4D",
// Color used for aggregations and breakouts context
summarize: "#88BF4D",
// Color used to indicate successful actions and positive values/trends
positive: "#BADC58",
// Color used to indicate successful actions and positive values/trends
positive: "#BADC58",
// Color used to indicate dangerous actions and negative values/trends
negative: "#FF7979",
// Color used to indicate dangerous actions and negative values/trends
negative: "#FF7979",
/** Color used for popover shadows */
shadow: "rgba(0,0,0,0.08)",
/** Color used for popover shadows */
shadow: "rgba(0,0,0,0.08)",
// Overrides the chart colors. Supports up to 8 colors
// Limitation: this does not affect charts with custom series color
charts: [
// can either be a hex code
"#9B59B6",
// Overrides the chart colors. Supports up to 8 colors
// Limitation: this does not affect charts with custom series color
charts: [
// can either be a hex code
"#9B59B6",
// or a color object. tint and shade represents lighter and darker variations
// only base color is required, while tint and shade are optional
{base: "#E74C3C", tint: "#EE6B56", shade: "#CB4436"},
],
},
// or a color object. tint and shade represents lighter and darker variations
// only base color is required, while tint and shade are optional
{ base: "#E74C3C", tint: "#EE6B56", shade: "#CB4436" },
],
},
components: {
// Dashboard
dashboard: {
// Background color for all dashboards
backgroundColor: "#2F3640",
components: {
// Dashboard
dashboard: {
// Background color for all dashboards
backgroundColor: "#2F3640",
card: {
// Background color for all dashboard cards
backgroundColor: "#2D2D30",
card: {
// Background color for all dashboard cards
backgroundColor: "#2D2D30",
// Apply a border color instead of shadow for dashboard cards.
// Unset by default.
border: "1px solid #EEECEC",
},
},
// Apply a border color instead of shadow for dashboard cards.
// Unset by default.
border: "1px solid #EEECEC",
},
},
// Question
question: {
// Background color for all questions
backgroundColor: "#2D2D30",
},
// Question
question: {
// Background color for all questions
backgroundColor: "#2D2D30",
},
// Data table
table: {
cell: {
// Text color of cells, defaults to `text-primary`
textColor: "#4C5773",
// Data table
table: {
cell: {
// Text color of cells, defaults to `text-primary`
textColor: "#4C5773",
// Default background color of cells, defaults to `background`
backgroundColor: "#FFFFFF",
// Default background color of cells, defaults to `background`
backgroundColor: "#FFFFFF",
// Font size of cell values, defaults to ~12.5px
fontSize: "12.5px",
},
// Font size of cell values, defaults to ~12.5px
fontSize: "12.5px",
},
idColumn: {
// Text color of ID column, defaults to `brand`
textColor: "#9B5966",
idColumn: {
// Text color of ID column, defaults to `brand`
textColor: "#9B5966",
// Background color of ID column, defaults to a lighter shade of `brand`
backgroundColor: "#F5E9EB",
},
},
// Background color of ID column, defaults to a lighter shade of `brand`
backgroundColor: "#F5E9EB",
},
},
// Number chart
number: {
// Value displayed on number charts.
// This also applies to the primary value in trend charts.
value: {
fontSize: "24px",
lineHeight: "21px",
},
},
// Number chart
number: {
// Value displayed on number charts.
// This also applies to the primary value in trend charts.
value: {
fontSize: "24px",
lineHeight: "21px",
},
},
// Cartesian chart
cartesian: {
// Padding around the cartesian charts.
// Uses CSS's `padding` property format.
padding: "4px 8px",
},
// Cartesian chart
cartesian: {
// Padding around the cartesian charts.
// Uses CSS's `padding` property format.
padding: "4px 8px",
},
// Pivot table
pivotTable: {
cell: {
// Font size of cell values, defaults to ~12px
fontSize: "12px",
},
// Pivot row toggle to expand or collapse row
rowToggle: {
textColor: "#FFFFFF",
backgroundColor: "#95A5A6",
},
},
// Pivot table
pivotTable: {
cell: {
// Font size of cell values, defaults to ~12px
fontSize: "12px",
},
// Pivot row toggle to expand or collapse row
rowToggle: {
textColor: "#FFFFFF",
backgroundColor: "#95A5A6",
},
},
collectionBrowser: {
breadcrumbs: {
expandButton: {
textColor: "#8118F4",
backgroundColor: "#767D7C",
hoverTextColor: "#CE8C8C",
hoverBackgroundColor: "#69264B",
},
},
collectionBrowser: {
breadcrumbs: {
expandButton: {
textColor: "#8118F4",
backgroundColor: "#767D7C",
hoverTextColor: "#CE8C8C",
hoverBackgroundColor: "#69264B",
},
},
},
// Popover are used in components such as click actions in interactive questions.
popover: {
// z-index of the popover. Useful for embedding components in a modal. defaults to 4.
zIndex: 4,
},
// Popover are used in components such as click actions in interactive questions.
popover: {
// z-index of the popover. Useful for embedding components in a modal. defaults to 4.
zIndex: 4,
},
},
};
```
......
......@@ -23,7 +23,7 @@ This example sets up an endpoint in an app, `/sso/metabase`, that creates a toke
```typescript
const express = require("express");
const cors = require("cors");
const session = require("express-session")
const session = require("express-session");
const jwt = require("jsonwebtoken");
const fetch = require("node-fetch");
......
......@@ -63,6 +63,7 @@ const DynamicAnalytics = dynamic(
},
);
```
## Handling authentication
If you authenticate with Metabase using JWT, you can create a Route handler that signs people in to Metabase.
......
......@@ -70,7 +70,7 @@ export default function App() {
## Question props
| Prop | Type | Description |
|--------------------|----------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ------------------ | -------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| questionId | `number \| string` | (required) The ID of the question. This is either:<br>- The numerical ID when accessing a question link, e.g., `http://localhost:3000/question/1-my-question` where the ID is `1`.<br>- The `entity_id` key of the question object. You can find a question's entity ID in the info panel when viewing a question. |
| plugins | `{ mapQuestionClickActions: Function } \| null` | Additional mapper function to override or add drill-down menu. |
| height | `number \| string` | (optional) A number or string specifying a CSS size value that specifies the height of the component |
......
......@@ -180,4 +180,3 @@ In your app, you'll see an embedded `InteractiveQuestion` component.
![Embedded Metabase components](../images/embedded-components.png)
Try changing some of the `theme` options in the [client app](https://github.com/metabase/metabase-nodejs-react-sdk-embedding-sample/blob/main/client/src/App.js) to style the components.
......@@ -48,10 +48,10 @@ To create a static embed:
1. Go to the question or dashboard that you want to embed in your website.
2. Click on the **sharing icon**.
3. Select **Embed**.
5. Select **Static embedding**.
6. Optional: [customize the appearance of the embed](./static-embedding-parameters.md#customizing-the-appearance-of-a-static-embed)
7. Optional: [Add parameters to the embed](./static-embedding-parameters.md).
8. Click **Publish**.
4. Select **Static embedding**.
5. Optional: [customize the appearance of the embed](./static-embedding-parameters.md#customizing-the-appearance-of-a-static-embed)
6. Optional: [Add parameters to the embed](./static-embedding-parameters.md).
7. Click **Publish**.
![Preview](./images/04-preview.png)
......@@ -103,7 +103,7 @@ If you change the [parameters](./static-embedding-parameters.md) of your embedde
1. After making your changes, copy the code Metabase generates.
1. Click **Publish** again.
3. [Update the code](#adding-the-embedding-url-to-your-website) on your server so that it matches the code generated by Metabase.
1. [Update the code](#adding-the-embedding-url-to-your-website) on your server so that it matches the code generated by Metabase.
## Disabling embedding for a question or dashboard
......
......@@ -44,4 +44,4 @@ If you [delete the uploaded table](../databases/uploads.md#deleting-tables-creat
## Further reading
- [Enabling uploads](../databases/uploads.md)
\ No newline at end of file
- [Enabling uploads](../databases/uploads.md)
......@@ -20,21 +20,21 @@ Templates: you can leave "Production" selected, or choose any other option that
Settings: type a unique **DB instance identifier** for your database. You'll need the username and master password to configure the environment variables in Metabase.
![RDS Templates Section](images/RDSPostgresSettings.png)
![RDS Templates Section](images/RDSPostgresSettings.png)
Instance size: the sizing of the RDS instance depends on the number of Metabase instances that will be connected to this database, the number of simultaneous users who are using Metabase, and the number of questions, dashboards, and configurations that are saved. To start, a `t3.small` is a good choice.
![RDS Instance size](images/RDSInstanceSize.png)
![RDS Instance size](images/RDSInstanceSize.png)
Availability & Durability: on production deployments, you **should** be using a Multi-AZ (Availability Zone) cluster, as this will ensure that the database does not goes down in case there is an issue on a single availability zone.
![RDS MultiAZ](images/RDSMultiAZ.png)
![RDS MultiAZ](images/RDSMultiAZ.png)
Connectivity:
- Ensure that you are deploying the database in the same VPC as the one you deployed the Metabase instance/s, otherwise they won't be able to see each other.
- Create a **VPC security group**, as you will need to grant access from the Metabase instance/s to the database on the port that listens for connections.
![RDS VPC Security Groups](images/RDSVPCSecurityGroup.png)
![RDS VPC Security Groups](images/RDSVPCSecurityGroup.png)
Additional configuration:
......@@ -73,4 +73,4 @@ On the edit page, you need to delete the IP address that appears as default, the
## Add the RDS instance as the application database with environment variables
After having finished all the previous steps, go to the your Metabase deployment and add the RDS instance as the Application Database with [Environment variables](../configuring-metabase/environment-variables.md).
\ No newline at end of file
After having finished all the previous steps, go to the your Metabase deployment and add the RDS instance as the Application Database with [Environment variables](../configuring-metabase/environment-variables.md).
......@@ -49,4 +49,4 @@ See [Upgrading Metabase](upgrading-metabase.md)
## Connect with a Metabase Expert
If you’d like more technical resources to set up your data stack with Metabase, connect with a [Metabase Expert](https://www.metabase.com/partners/).
\ No newline at end of file
If you’d like more technical resources to set up your data stack with Metabase, connect with a [Metabase Expert](https://www.metabase.com/partners/).
......@@ -16,7 +16,7 @@ On the resource group page, click on the **+ Add** button in the top bar to crea
![Create a Resource Group](images/AZResource_group_Add.png)
Click **Next** until you see the **Create** button, then click it.
Click **Next** until you see the **Create** button, then click it.
When selecting the region for your Metabase, you should consider the location of your users and your data warehouse, as well as the infrastructure costs and privacy laws that might restrict cross-border data transfers.
......@@ -58,7 +58,7 @@ On the next screen, select or enter the following:
- **Data Source**: can be left as `None`.
- **Location**: the same one you used for your Resource Group and VNET.
- **Version**: use the latest one you can.
- **Compute + Storage**: you can re-dimension your database, but you must select the `General Purpose` tier, as it's the only tier that provides a Private Link.
- **Compute + Storage**: you can re-dimension your database, but you must select the `General Purpose` tier, as it's the only tier that provides a Private Link.
Then choose an admin username and password of your choice.
......@@ -73,16 +73,17 @@ On the left menu, click on **Private endpoint connection** which is situated und
![Azure Database for PostgreSQL](images/AZPostgreSQLMain.png)
Now click on the button of the top bar with a plus sign that says **Private endpoint**. In the page that opens:
1) Provide a name for this link (any name that describes what you are trying to do is fine, like `metabase_link`). Select the region where the database lives, click **Next**.
2) On the **Resource** section of the configuration, ensure that **Resource type** is set to `Microsoft.DBforPostgreSQL/servers` which will enable you to select in the dropdown below the server created in the previous step, and leave **Target sub-resource** with the default value
3) On the **Configuration** section, the only value that needs to be changed is the **Subnet** one, where you need to select the **private** subnet that you created on the first step of this guide, and leave everything else as it is.
1. Provide a name for this link (any name that describes what you are trying to do is fine, like `metabase_link`). Select the region where the database lives, click **Next**.
2. On the **Resource** section of the configuration, ensure that **Resource type** is set to `Microsoft.DBforPostgreSQL/servers` which will enable you to select in the dropdown below the server created in the previous step, and leave **Target sub-resource** with the default value
3. On the **Configuration** section, the only value that needs to be changed is the **Subnet** one, where you need to select the **private** subnet that you created on the first step of this guide, and leave everything else as it is.
![Azure PrivateLink config](images/AZPrivateLink.png)
Now go to the last step and click **Create**. Once the endpoint is created, you will need do two things before proceeding:
1) In the page of database server you just created go to the database **Connection Security** item and **deny all public network access**.
2) In the page of the VNET you created in the previous step, go to **Connected devices** setting and you should see a device connected to the network. Take note of the IP address, as you'll need it in Step 5 (this is the IP address that the network has given to the database server).
1. In the page of database server you just created go to the database **Connection Security** item and **deny all public network access**.
2. In the page of the VNET you created in the previous step, go to **Connected devices** setting and you should see a device connected to the network. Take note of the IP address, as you'll need it in Step 5 (this is the IP address that the network has given to the database server).
## Step 5: Create web application (deploy Metabase)
......@@ -90,6 +91,7 @@ At last, the step where all the magic comes together: go to your resource group
![Azure web app](images/AZMarketplaceWebApp.png)
Now set up the following values on the page (resource group should be the same as in the first step):
- **Name**: The name must be unique, as the subdomain is shared across all Azure deployments.
- **Publish**: Docker Container.
- **Operating System**: Linux.
......@@ -103,7 +105,7 @@ Now go to the next step where you will select:
- **Image source**: DockerHub.
- **Access Type**: Public.
- **Image and tag**: metabase/metabase:latest (or choose any other docker image tag of your preference, like our Enterprise Edition). To find the latest version, check our [Community Edition Dockerhub repository](https://hub.docker.com/r/metabase/metabase/tags?page=1&ordering=last_updated) and also our [Enterprise Edition Dockerhub Repository](https://hub.docker.com/r/metabase/metabase-enterprise/tags?page=1&ordering=last_updated).
- **Startup command**: Leave this field empty.
- **Startup command**: Leave this field empty.
Click **Next** until you get to the last section, then click **Create**, and wait while your application initializes.
......@@ -127,17 +129,18 @@ postgresql://databasePrivateIPAddress:port/postgres?user=user@name_of_your_datab
For example, if your values are:
1) **database private IP address**: 10.0.2.4
2) **database port**: 5432 (in the case of Postgres, MySQL/MariaDB default port is 3306)
3) **name of the database server**: metabase-app-database
4) **username of the database**: metabase
5) **password**: Password1!
1. **database private IP address**: 10.0.2.4
2. **database port**: 5432 (in the case of Postgres, MySQL/MariaDB default port is 3306)
3. **name of the database server**: metabase-app-database
4. **username of the database**: metabase
5. **password**: Password1!
then your connection string would be:
```
postgresql://10.0.2.4:5432/postgres?user=metabase%40metabase-app-database&password=Password1!&ssl=true&sslmode=require
```
Note: the "@" character has been replaced for "%40", as the "@" will no longer work in versions > 43
Click **Save** and the instance will restart.
......@@ -148,7 +151,7 @@ Once it finishes, you should be able to visit your Metabase at the URL shown in
### How to enable Health checks
Enabling health checking in Metabase is a good practice. Go to your **web app** -> **Monitoring** -> **Health Check** -> **Enable health check**, and include in the path `/api/health`.
Enabling health checking in Metabase is a good practice. Go to your **web app** -> **Monitoring** -> **Health Check** -> **Enable health check**, and include in the path `/api/health`.
### How to upgrade
......@@ -156,7 +159,7 @@ Go to the Metabase web app you created and click on **Deployment** -> **Deployme
Change the version of the container to the new version in the **Full Image Name and Tag** text field under **Registry settings**, and click on **Save**. Available versions of the Metabase Docker image can be found on [Docker Hub](https://hub.docker.com/r/metabase/metabase/tags?page=1&ordering=last_updated).
**Important**: always ensure you have backed up the Metabase application database before upgrading, *especially* when doing so between major versions. Metabase also doesn't officially support downgrading versions.
**Important**: always ensure you have backed up the Metabase application database before upgrading, _especially_ when doing so between major versions. Metabase also doesn't officially support downgrading versions.
### How to see the logs
......@@ -194,4 +197,4 @@ In the example above the connection string would be
postgresql://10.0.2.4:5432/metabase?user=metabase@metabase-app-database&password=Password1!&ssl=true&sslmode=require
```
If you have trouble connecting, refer to the [postgres configuration instructions](../installation-and-operation/configuring-application-database.md#postgresql) as you may run into a problem with an `@` symbol in the username portion of the connection string. Using a combination of `MB_DB_CONNECTION_URI` with separate `MB_DB_USER` and `MB_DB_PASSWORD` fields also works.
If you have trouble connecting, refer to the [postgres configuration instructions](../installation-and-operation/configuring-application-database.md#postgresql) as you may run into a problem with an `@` symbol in the username portion of the connection string. Using a combination of `MB_DB_CONNECTION_URI` with separate `MB_DB_USER` and `MB_DB_PASSWORD` fields also works.
......@@ -65,7 +65,7 @@ Return to RDS and select the **Snapshots** option on the left of the page. You s
Select that snapshot and click on **Actions** > **Restore Snapshot**.
From this step on, you can follow the same steps as the [Configuring RDS for Metabase](./creating-RDS-database-on-AWS.md).
From this step on, you can follow the same steps as the [Configuring RDS for Metabase](./creating-RDS-database-on-AWS.md).
## Upgrade your Elastic Beanstalk deployment
......
......@@ -145,7 +145,7 @@ See [export parameters in CLI commands](#export-options) or [export parameters i
Questions can be found in the `cards` directory of a collection directory. Here's an example card YAML file for a question written with SQL that uses a field filter and has an area chart visualization.
> To preserve a native query's multi-line format, remove trailing whitespace from native queries. If your native query has trailing whitespace, YAML will convert your query to a single string literal (which only affects presentation, not functionality).
> To preserve a native query's multi-line format, remove trailing whitespace from native queries. If your native query has trailing whitespace, YAML will convert your query to a single string literal (which only affects presentation, not functionality).
```yml
name: Products by week
......
......@@ -50,6 +50,6 @@ We collect anonymous Metabase usage data to improve the product. We don't collec
Metabase's CLI.
***
---
If you’d like more technical resources to set up your data stack with Metabase, connect with a [Metabase Expert](https://www.metabase.com/partners/).
......@@ -15,4 +15,4 @@ We try our best to make sure Metabase works in as many browsers as possible, but
Metabase may run perfectly well on older versions of these browsers or on specific browsers not listed above, but your mileage may vary. In particular, we ended support for IE11 in Metabase 0.40: it mostly still works, but you may see some unexpected behavior.
We recommend you use the most up-to-date browser you can.
\ No newline at end of file
We recommend you use the most up-to-date browser you can.
......@@ -11,11 +11,11 @@ Metabase offers a couple controls for administrators who prefer to increase the
export MB_PASSWORD_COMPLEXITY=strong
export MB_PASSWORD_LENGTH=10
The settings above can be used independently, so it's fine to use only one or the other. By default Metabase use complexity = `normal` and a password length of 6. The following options are available for complexity choice:
The settings above can be used independently, so it's fine to use only one or the other. By default Metabase use complexity = `normal` and a password length of 6. The following options are available for complexity choice:
* `weak` = no character constraints
* `normal` = at least 1 digit
* `strong` = minimum 8 characters w/ 2 lowercase, 2 uppercase, 1 digit, and 1 special character
- `weak` = no character constraints
- `normal` = at least 1 digit
- `strong` = minimum 8 characters w/ 2 lowercase, 2 uppercase, 1 digit, and 1 special character
By default, Metabase also prevents users from setting passwords that are in a list of common passwords (like `qwerty123` and
`passw0rd`). Changing the complexity requirement to `weak` disables this behavior.
......@@ -64,9 +64,9 @@ If you want to send the user group membership to Metabase, then you need to add
1. To the right of "Attributes & Claims", click on "Edit."
2. Click "Add a group claim."
3 On the menu that appears for "Which groups associated with the user should be returned in the claim?", select "All groups."
4. Click on Save.
5. Then add the group mapping on the Metabase SAML configuration.
3 On the menu that appears for "Which groups associated with the user should be returned in the claim?", select "All groups."
3. Click on Save.
4. Then add the group mapping on the Metabase SAML configuration.
## Further reading
......
......@@ -10,10 +10,11 @@ redirect_from:
1. Set up a [custom SAML app](https://support.google.com/a/answer/6087519) in your [Google admin console](https://admin.google.com).
2. As you follow Google's instructions, you'll need to:
- [Save information about Google for Metabase](#saving-google-idp-info-for-metabase).
- [Provide Google info to Metabase](#filling-out-the-metabase-saml-form).
- [Provide Metabase info to Google ](#filling-out-service-provider-details).
- [Set up attribute mappings in Google](#setting-up-attribute-mappings).
- [Save information about Google for Metabase](#saving-google-idp-info-for-metabase).
- [Provide Google info to Metabase](#filling-out-the-metabase-saml-form).
- [Provide Metabase info to Google ](#filling-out-service-provider-details).
- [Set up attribute mappings in Google](#setting-up-attribute-mappings).
See [authenticating with SAML](./authenticating-with-saml.md) for general SAML info.
......@@ -30,10 +31,11 @@ On the **Google Identity Provider details** page:
1. From your Google **IdP metadata**, locate the **issuer**.
- The **issuer** looks like this: `https://accounts.google.com/o/saml2/`.
2. Go to your Metabase SAML form (**Admin settings** > **Authentication** > **SAML**).
2. Put the **issuer** in the Metabase **SAML Identity Provider Issuer** field.
3. Put the **SSO URL** in the Metabase **SAML Identity Provider URL** field.
4. Paste the **certificate** in the Metabase **SAML Identity Provider Certificate** field.
- Make sure to include any header and footer comments (like `---BEGIN CERTIFICATE---`).
3. Put the **issuer** in the Metabase **SAML Identity Provider Issuer** field.
4. Put the **SSO URL** in the Metabase **SAML Identity Provider URL** field.
5. Paste the **certificate** in the Metabase **SAML Identity Provider Certificate** field.
- Make sure to include any header and footer comments (like `---BEGIN CERTIFICATE---`).
## Filling out service provider details
......
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