mirror of
https://github.com/apache/superset.git
synced 2026-04-21 00:54:44 +00:00
* setup docusaurus
* rename
* add introduction content
* chore(docsV2): move content from docs to docsV2 (#17714)
* add FAQs and contribution pages
* chore: add api, security, and roadmap pages, include swaggerui in dependency for api page
* chore: move api page header below imports
* chore: change API page info alert to use built in Infima class instead of custom class
Co-authored-by: Corbin Robb <corbin@Corbins-MacBook-Pro.local>
* chore(docs-v2): moving more markdown content to new documentation site (#17736)
* chore: move markdown content and images for docs installation directory to docs-v2
* chore: move docs miscellaneous directory content to docs-v2
* chore(docs-v2): move over connecting to databases content and rename some files to .mdx
Co-authored-by: Corbin Robb <corbin@Corbins-MacBook-Pro.local>
* Update styling and logo (#17990)
* update styling
* update colors
* chore(docs-v2): remove blog and tutorial and update some styling (#17929)
* add superset logo and favicon, change styles to better match current docs, add prettierrc
* change file types to mdx
* Add simple superset dark mode freindly logo
* clean up default pages - blog and tutorial docs
Co-authored-by: Corbin Robb <corbin@Corbins-MacBook-Pro.local>
* Chore: moving charts and dashboard to docusaurus (#18036)
* add contributing add creating charts and dashboards
* delete extra images
* update rat-excludes
* Port homepage (#18115)
* Port community page (#18128)
* chore: add seo redirects for Docs v@ (#18092)
* fix: handle null values in time-series table (#18039)
* cleanup column_type_mappings (#17569)
Signed-off-by: Đặng Minh Dũng <dungdm93@live.com>
* important change to MakeFile (#18037)
* Update superset-e2e.yml (#18041)
* Revert "Update superset-e2e.yml (#18041)" (#18051)
This reverts commit b5652739c9.
* feat: Trino Authentications (#17593)
* feat: support Trino Authentications
Signed-off-by: Đặng Minh Dũng <dungdm93@live.com>
* docs: Trino Authentications
Signed-off-by: Đặng Minh Dũng <dungdm93@live.com>
* chore(supeset.utils.core): move all database utils to database utils module (#18058)
* chore(plugin-chart-echarts): add types to controls (#18059)
* fix(generator): more cleanup to plugin framework (#18027)
* fix(generator): more cleanup to plugin framework
* fix typo and package name
* add docs
* fix typo
* Update superset-frontend/webpack.config.js
Co-authored-by: Kamil Gabryjelski <kamil.gabryjelski@gmail.com>
* fix generator reference
* add steps to tutorial and fix package version
* refine docs/readme
Co-authored-by: Kamil Gabryjelski <kamil.gabryjelski@gmail.com>
* feat(advanced analytics): support groupby in resample (#18045)
* fix(dashboard): scope of nativefilter not update (#18048)
* fix(generator): add lockfile and fix styling issues (#18073)
* fix(generator): add lockfile and fix styling issues
* fix margins and remove redundant scroll
* update tutorial
* refactor(sql_lab): SQL Lab Persistent Saved State (#17771)
* a lot of console logs
* testing
* test
* added saved_query to remoteId
* created useEffect so that title properly changes in modal
* Update superset-frontend/src/SqlLab/actions/sqlLab.js
Co-authored-by: Lyndsi Kay Williams <55605634+lyndsiWilliams@users.noreply.github.com>
Co-authored-by: Lyndsi Kay Williams <55605634+lyndsiWilliams@users.noreply.github.com>
* refactor(example_data): replace the way the birth_names data is loaded to DB (#18060)
* refactor: replace the way the birth_names data is loaded to DB
* fix failed unit test
* fix failed unit test
* fix failed tests
* fix pass wrong flag of support datetime type
* remove unused fixture
* feat: add chart description in info tooltip (#17207)
* feat: add chart list description
* fix: text overflow
* fix: text-overflow with line-height
* Correction of proper names format in README (#18087)
* chore: added SEO routes
* fix can't use examples helpers on non app context based environment (#18086)
* chore: split CLI into multiple files (#18082)
* chore: split CLI into multiple files
* Update tests
* Who fixes the fixtures?
* Add subcommands dynamically
* Rebase
* fix misspelling (#18097)
* refactor: sqleditorleftbar to functional (#17807)
* Working on converting sqleditorleftbar to functional component
* Creating draft PR to address bug
* Still working on solving re rendering bug
* infinite rerender fix
* Creating draft PR to address bug
* Cleaning up in preparation for push
* Made changes suggested by Elizabeth
* Fixed issues as per Lindsey's comment
Co-authored-by: Arash <arash.afghahi@gmail.com>
* fix rat excludes and headers
* fix(docs): fix path of image for "Create New Chart" (#18089)
* Migrate Checkbox story to tsx - see #18100 (#18101)
Looks good!
* refactor: migrate RowCountLabel to TypeScript & added story (#18105)
* enable superbook for explore component
* migrate RowCountLabel to TypeScript
* add storybook for RowCountLabel
* fix: logging warning on dataframe (don't use python's warnings) (#18111)
* fix: logging warning on dataframe (don't use python's warnings)
* lint
* update changelog and updating for 1.4.0 (#18083)
* feat: Adds a key-value endpoint to store charts form data (#17882)
* feat: Adds a key-value endpoint to store charts form data
* Fixes linting problems
* Removes the query_params from the endpoints
* Refactors the commands
* Removes unused imports
* Changes the parameters to use dataclass
* Adds more access tests
* Gets the first dataset while testing
* Adds unit tests for the check_access function
* Changes the can_access check
* Always check for dataset access
* fix(explore): fix chart embed code modal glitch (#17843)
* feat(plugin-chart-echarts): support non-timeseries x-axis (#17917)
* feat(plugin-chart-echarts): support non-timeseries x-axis
* fix tests
* change formula return type from Date to number
* add x_axis test coverage
* rename func and improve coverage
* add x-axis control to bar chart
* remove redundant console.log
* fix description
* make x-axis control mandatory
* 🙃
* fix x-axis formatter
* fix showValues
* fix implicit rDTTM_ALIAS references in postProcessing
* replace TIME_COLUMN with DTTM_ALIAS
* fix remaining implicit indexes
* fix: Disable filtering on wide result sets (#18021)
* fix: handle null values in time-series table (#18039)
* cleanup column_type_mappings (#17569)
Signed-off-by: Đặng Minh Dũng <dungdm93@live.com>
* important change to MakeFile (#18037)
* add missing is_timeseries to pivot op
Co-authored-by: Erik Ritter <erik.ritter@airbnb.com>
Co-authored-by: Grace Guo <grace.guo@airbnb.com>
Co-authored-by: Đặng Minh Dũng <dungdm93@live.com>
Co-authored-by: AAfghahi <48933336+AAfghahi@users.noreply.github.com>
* feat(country-map): added new countries in country-chart-map (#18081)
* chore: migrating storybook jsx to typescript #18100 (#18133)
* Migrating storybook jsx to typescript #18100
* Migrating storybook jsx to typescript
Co-authored-by: Jayakrishnan Karolil <jayakrishnan.karolil@nielsen.com>
* feat(annotation): add toast feedback to annotation templates (#18116)
* feat(dashboard): add toast feedback to dashboard actions (#18114)
* feat(explore): more toast feedback on user actions in Explore (#18108)
* feat(explore): add toasts feedback when user copies chart url
* Show toast message when updating chart properties
* Change toast type to success when saving chart
* Use success toast from props
* Fix tests
* Use withToasts instead of dispatch
* Use PropertiesModalProps instead of any
* Docs: fix typo (#18125)
* fix: undefined error when adding extra sequential color scheme (#18152)
* feat: allow assets to be managed externally (#18093)
* feat: allow assets to be managed externally
* Use server_default
* chore: use pkg_resources for cleaner config (#18130)
* refactor: Moves the Explore form_data endpoint (#18151)
* refactor: Moves the Explore form_data endpoint
* Removes unused imports
* Fixes openapi schema error
* Fixes typo
* Renames and UPDATING.md
Co-authored-by: Grace Guo <grace.guo@airbnb.com>
Co-authored-by: Đặng Minh Dũng <dungdm93@live.com>
Co-authored-by: AAfghahi <48933336+AAfghahi@users.noreply.github.com>
Co-authored-by: Hugh A. Miles II <hughmil3s@gmail.com>
Co-authored-by: ofekisr <35701650+ofekisr@users.noreply.github.com>
Co-authored-by: Ville Brofeldt <33317356+villebro@users.noreply.github.com>
Co-authored-by: Kamil Gabryjelski <kamil.gabryjelski@gmail.com>
Co-authored-by: Yongjie Zhao <yongjie.zhao@gmail.com>
Co-authored-by: Stephen Liu <750188453@qq.com>
Co-authored-by: Lyndsi Kay Williams <55605634+lyndsiWilliams@users.noreply.github.com>
Co-authored-by: Adam Dobrawy <ad-m@users.noreply.github.com>
Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>
Co-authored-by: Emily Wu <86927881+em0227@users.noreply.github.com>
Co-authored-by: Josue Lugaro <82119536+JosueLugaro@users.noreply.github.com>
Co-authored-by: Arash <arash.afghahi@gmail.com>
Co-authored-by: Ville Brofeldt <ville.v.brofeldt@gmail.com>
Co-authored-by: Daniel Vaz Gaspar <danielvazgaspar@gmail.com>
Co-authored-by: Elizabeth Thompson <eschutho@gmail.com>
Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>
Co-authored-by: Erik Ritter <erik.ritter@airbnb.com>
Co-authored-by: Hammad-Raza <hammadraza42@hotmail.com>
Co-authored-by: jayakrishnankk <kk.jayakrishnan@gmail.com>
Co-authored-by: Jayakrishnan Karolil <jayakrishnan.karolil@nielsen.com>
Co-authored-by: Farid Rener <proteusvacuum@users.noreply.github.com>
* remove unneeded requirement
Co-authored-by: Corbin Robb <31329271+corbinrobb@users.noreply.github.com>
Co-authored-by: Corbin Robb <corbin@Corbins-MacBook-Pro.local>
Co-authored-by: Daniel W <61300812+The-hyphen-user@users.noreply.github.com>
Co-authored-by: Geido <60598000+geido@users.noreply.github.com>
Co-authored-by: Srini Kadamati <skadamat@gmail.com>
Co-authored-by: Grace Guo <grace.guo@airbnb.com>
Co-authored-by: Đặng Minh Dũng <dungdm93@live.com>
Co-authored-by: AAfghahi <48933336+AAfghahi@users.noreply.github.com>
Co-authored-by: ofekisr <35701650+ofekisr@users.noreply.github.com>
Co-authored-by: Ville Brofeldt <33317356+villebro@users.noreply.github.com>
Co-authored-by: Kamil Gabryjelski <kamil.gabryjelski@gmail.com>
Co-authored-by: Yongjie Zhao <yongjie.zhao@gmail.com>
Co-authored-by: Stephen Liu <750188453@qq.com>
Co-authored-by: Lyndsi Kay Williams <55605634+lyndsiWilliams@users.noreply.github.com>
Co-authored-by: Adam Dobrawy <ad-m@users.noreply.github.com>
Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>
Co-authored-by: Emily Wu <86927881+em0227@users.noreply.github.com>
Co-authored-by: Josue Lugaro <82119536+JosueLugaro@users.noreply.github.com>
Co-authored-by: Arash <arash.afghahi@gmail.com>
Co-authored-by: Ville Brofeldt <ville.v.brofeldt@gmail.com>
Co-authored-by: Daniel Vaz Gaspar <danielvazgaspar@gmail.com>
Co-authored-by: Elizabeth Thompson <eschutho@gmail.com>
Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>
Co-authored-by: Erik Ritter <erik.ritter@airbnb.com>
Co-authored-by: Hammad-Raza <hammadraza42@hotmail.com>
Co-authored-by: jayakrishnankk <kk.jayakrishnan@gmail.com>
Co-authored-by: Jayakrishnan Karolil <jayakrishnan.karolil@nielsen.com>
Co-authored-by: Farid Rener <proteusvacuum@users.noreply.github.com>
192 lines
8.2 KiB
Plaintext
192 lines
8.2 KiB
Plaintext
---
|
||
title: Creating Your First Dashboard
|
||
hide_title: true
|
||
sidebar_position: 1
|
||
version: 1
|
||
---
|
||
|
||
import useBaseUrl from "@docusaurus/useBaseUrl";
|
||
|
||
## Creating Your First Dashboard
|
||
|
||
This section is focused on documentation for end-users who will be using Superset
|
||
for the data analysis and exploration workflow
|
||
(data analysts, business analysts, data
|
||
scientists, etc). In addition to this site, [Preset.io](http://preset.io/) maintains an updated set of end-user
|
||
documentation at [docs.preset.io](https://docs.preset.io/).
|
||
|
||
This tutorial targets someone who wants to create charts and dashboards in Superset. We’ll show you
|
||
how to connect Superset to a new database and configure a table in that database for analysis.
|
||
You’ll also explore the data you’ve exposed and add a visualization to a dashboard so that you get a
|
||
feel for the end-to-end user experience.
|
||
|
||
### Connecting to a new database
|
||
|
||
Superset itself doesn't have a storage layer to store your data but instead pairs with
|
||
your existing SQL-speaking database or data store.
|
||
|
||
First things first, we need to add the connection credentials to your database to be able
|
||
to query and visualize data from it. If you're using Superset locally via
|
||
[Docker compose](/docs/installation/installing-superset-using-docker-compose), you can
|
||
skip this step because a Postgres database, named **examples**, is included and
|
||
pre-configured in Superset for you.
|
||
|
||
Under the **Data** menu, select the _Databases_ option:
|
||
|
||
<img src={useBaseUrl("/img/tutorial/tutorial_01_sources_database.png" )} />{" "} <br/><br/>
|
||
|
||
Next, click the green **+ Database** button in the top right corner:
|
||
|
||
<img src={useBaseUrl("/img/tutorial/tutorial_02_add_database.png" )} />{" "} <br/><br/>
|
||
|
||
You can configure a number of advanced options in this window, but for this walkthrough you only
|
||
need to specify two things (the database name and SQLAlchemy URI):
|
||
|
||
<img src={useBaseUrl("/img/tutorial/tutorial_03_database_name.png" )} />
|
||
|
||
As noted in the text below
|
||
the URI, you should refer to the SQLAlchemy documentation on
|
||
[creating new connection URIs](https://docs.sqlalchemy.org/en/12/core/engines.html#database-urls)
|
||
for your target database.
|
||
|
||
Click the **Test Connection** button to confirm things work end to end. If the connection looks good, save the configuration
|
||
by clicking the **Add** button in the bottom right corner of the modal window:
|
||
|
||
<img src={useBaseUrl("/img/tutorial/tutorial_04_add_button.png" )} />
|
||
|
||
Congratulations, you've just added a new data source in Superset!
|
||
|
||
### Registering a new table
|
||
|
||
Now that you’ve configured a data source, you can select specific tables (called **Datasets** in Superset)
|
||
that you want exposed in Superset for querying.
|
||
|
||
Navigate to **Data ‣ Datasets** and select the **+ Dataset** button in the top right corner.
|
||
|
||
<img src={useBaseUrl("/img/tutorial/tutorial_08_sources_tables.png" )} />
|
||
|
||
A modal window should pop up in front of you. Select your **Database**,
|
||
**Schema**, and **Table** using the drop downs that appear. In the following example,
|
||
we register the **cleaned_sales_data** table from the **examples** database.
|
||
|
||
<img src={useBaseUrl("/img/tutorial/tutorial_09_add_new_table.png" )} />
|
||
|
||
To finish, click the **Add** button in the bottom right corner. You should now see your dataset in the list of datasets.
|
||
|
||
### Customizing column properties
|
||
|
||
Now that you've registered your dataset, you can configure column properties
|
||
for how the column should be treated in the Explore workflow:
|
||
|
||
- Is the column temporal? (should it be used for slicing & dicing in time series charts?)
|
||
- Should the column be filterable?
|
||
- Is the column dimensional?
|
||
- If it's a datetime column, how should Superset parse
|
||
the datetime format? (using the [ISO-8601 string pattern](https://en.wikipedia.org/wiki/ISO_8601))
|
||
|
||
<img src={useBaseUrl("/img/tutorial/tutorial_column_properties.png" )} />
|
||
|
||
### Superset semantic layer
|
||
|
||
Superset has a thin semantic layer that adds many quality of life improvements for analysts.
|
||
The Superset semantic layer can store 2 types of computed data:
|
||
|
||
1. Virtual metrics: you can write SQL queries that aggregate values
|
||
from multiple column (e.g. `SUM(recovered) / SUM(confirmed)`) and make them
|
||
available as columns for (e.g. `recovery_rate`) visualization in Explore.
|
||
Agggregate functions are allowed and encouraged for metrics.
|
||
|
||
<img src={useBaseUrl("/img/tutorial/tutorial_sql_metric.png" )} />
|
||
|
||
You can also certify metrics if you'd like for your team in this view.
|
||
|
||
2. Virtual calculated columns: you can write SQL queries that
|
||
customize the appearance and behavior
|
||
of a specific column (e.g. `CAST(recovery_rate) as float`).
|
||
Aggregate functions aren't allowed in calculated columns.
|
||
|
||
<img src={useBaseUrl("/img/tutorial/tutorial_calculated_column.png" )} />
|
||
|
||
### Creating charts in Explore view
|
||
|
||
Superset has 2 main interfaces for exploring data:
|
||
|
||
- **Explore**: no-code viz builder. Select your dataset, select the chart,
|
||
customize the appearance, and publish.
|
||
- **SQL Lab**: SQL IDE for cleaning, joining, and preparing data for Explore workflow
|
||
|
||
We'll focus on the Explore view for creating charts right now.
|
||
To start the Explore workflow from the **Datasets** tab, start by clicking the name
|
||
of the dataset that will be powering your chart.
|
||
|
||
<img src={useBaseUrl("/img/tutorial/tutorial_launch_explore.png" )} /><br/><br/>
|
||
|
||
You're now presented with a powerful workflow for exploring data and iterating on charts.
|
||
|
||
- The **Dataset** view on the left-hand side has a list of columns and metrics,
|
||
scoped to the current dataset you selected.
|
||
- The **Data** preview below the chart area also gives you helpful data context.
|
||
- Using the **Data** tab and **Customize** tabs, you can change the visualization type,
|
||
select the temporal column, select the metric to group by, and customize
|
||
the aesthetics of the chart.
|
||
|
||
As you customize your chart using drop-down menus, make sure to click the **Run** button
|
||
to get visual feedback.
|
||
|
||
<img src={useBaseUrl("/img/tutorial/tutorial_explore_run.jpg" )} />
|
||
|
||
In the following screenshot, we craft a grouped Time-series Bar Chart to visualize
|
||
our quarterly sales data by product line just be clicking options in drop-down menus.
|
||
|
||
<img src={useBaseUrl("/img/tutorial/tutorial_explore_settings.jpg" )} />
|
||
|
||
### Creating a slice and dashboard
|
||
|
||
To save your chart, first click the **Save** button. You can either:
|
||
|
||
- Save your chart and add it to an existing dashboard
|
||
- Save your chart and add it to a new dashboard
|
||
|
||
In the following screenshot, we save the chart to a new "Superset Duper Sales Dashboard":
|
||
|
||
<img src={useBaseUrl("/img/tutorial/tutorial_save_slice.png" )} />
|
||
|
||
To publish, click **Save and goto Dashboard**.
|
||
|
||
Behind the scenes, Superset will create a slice and store all the information needed
|
||
to create your chart in its thin data layer
|
||
(the query, chart type, options selected, name, etc).
|
||
|
||
<img src={useBaseUrl("/img/tutorial/tutorial_first_dashboard.png" )} />
|
||
|
||
To resize the chart, start by clicking the pencil button in the top right corner.
|
||
|
||
<img src={useBaseUrl("/img/tutorial/tutorial_pencil_edit.png" )} />
|
||
|
||
Then, click and drag the bottom right corner of the chart until the chart layout snaps
|
||
into a position you like onto the underlying grid.
|
||
|
||
<img src={useBaseUrl("/img/tutorial/tutorial_chart_resize.png" )} />
|
||
|
||
Click **Save** to persist the changes.
|
||
|
||
Congrats! You’ve successfully linked, analyzed, and visualized data in Superset. There are a wealth
|
||
of other table configuration and visualization options, so please start exploring and creating
|
||
slices and dashboards of your own
|
||
|
||
ֿ
|
||
### Manage access to Dashboards
|
||
|
||
|
||
Access to dashboards is managed via owners (users that have edit permissions to the dashboard)
|
||
|
||
Non-owner users access can be managed two different ways:
|
||
|
||
1. Dataset permissions - if you add to the relevant role permissions to datasets it automatically grants implict access to all dashboards that uses those permitted datasets
|
||
2. Dashboard roles - if you enable **DASHBOARD_RBAC** feature flag then you be able to manage which roles can access the dashboard
|
||
- Having dashboard access implicitly grants read access to the associated datasets, therefore
|
||
all charts will load their data even if feature flag is turned on and no roles assigned
|
||
to roles the access will fallback to **Dataset permissions**
|
||
|
||
<img src={useBaseUrl("/img/tutorial/tutorial_dashboard_access.png" )} />
|