"use strict";(self.webpackChunkdocs_v_2=self.webpackChunkdocs_v_2||[]).push([[9594],{96617:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>d,contentTitle:()=>s,default:()=>h,frontMatter:()=>i,metadata:()=>l,toc:()=>u});var r=a(83117),n=(a(67294),a(3905)),o=a(51402);const i={title:"Creating Your First Dashboard",hide_title:!0,sidebar_position:1,version:1},s=void 0,l={unversionedId:"creating-charts-dashboards/creating-your-first-dashboard",id:"creating-charts-dashboards/creating-your-first-dashboard",title:"Creating Your First Dashboard",description:"Creating Your First Dashboard",source:"@site/docs/creating-charts-dashboards/creating-your-first-dashboard.mdx",sourceDirName:"creating-charts-dashboards",slug:"/creating-charts-dashboards/creating-your-first-dashboard",permalink:"/docs/creating-charts-dashboards/creating-your-first-dashboard",draft:!1,editUrl:"https://github.com/apache/superset/tree/master/docs/docs/creating-charts-dashboards/creating-your-first-dashboard.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Creating Your First Dashboard",hide_title:!0,sidebar_position:1,version:1},sidebar:"tutorialSidebar",previous:{title:"Querying across databases",permalink:"/docs/databases/meta-database"},next:{title:"Exploring Data in Superset",permalink:"/docs/creating-charts-dashboards/exploring-data"}},d={},u=[{value:"Creating Your First Dashboard",id:"creating-your-first-dashboard",level:2},{value:"Connecting to a new database",id:"connecting-to-a-new-database",level:3},{value:"Registering a new table",id:"registering-a-new-table",level:3},{value:"Customizing column properties",id:"customizing-column-properties",level:3},{value:"Superset semantic layer",id:"superset-semantic-layer",level:3},{value:"Creating charts in Explore view",id:"creating-charts-in-explore-view",level:3},{value:"Creating a slice and dashboard",id:"creating-a-slice-and-dashboard",level:3},{value:"Manage access to Dashboards",id:"manage-access-to-dashboards",level:3},{value:"Customizing dashboard",id:"customizing-dashboard",level:3}],c={toc:u},p="wrapper";function h(e){let{components:t,...a}=e;return(0,n.kt)(p,(0,r.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"creating-your-first-dashboard"},"Creating Your First Dashboard"),(0,n.kt)("p",null,"This section is focused on documentation for end-users who will be using Superset\nfor the data analysis and exploration workflow\n(data analysts, business analysts, data\nscientists, etc). In addition to this site, ",(0,n.kt)("a",{parentName:"p",href:"http://preset.io/"},"Preset.io")," maintains an updated set of end-user\ndocumentation at ",(0,n.kt)("a",{parentName:"p",href:"https://docs.preset.io/"},"docs.preset.io"),"."),(0,n.kt)("p",null,"This tutorial targets someone who wants to create charts and dashboards in Superset. We\u2019ll show you\nhow to connect Superset to a new database and configure a table in that database for analysis.\nYou\u2019ll also explore the data you\u2019ve exposed and add a visualization to a dashboard so that you get a\nfeel for the end-to-end user experience."),(0,n.kt)("h3",{id:"connecting-to-a-new-database"},"Connecting to a new database"),(0,n.kt)("p",null,"Superset itself doesn't have a storage layer to store your data but instead pairs with\nyour existing SQL-speaking database or data store."),(0,n.kt)("p",null,"First things first, we need to add the connection credentials to your database to be able\nto query and visualize data from it. If you're using Superset locally via\n",(0,n.kt)("a",{parentName:"p",href:"/docs/installation/installing-superset-using-docker-compose"},"Docker compose"),", you can\nskip this step because a Postgres database, named ",(0,n.kt)("strong",{parentName:"p"},"examples"),", is included and\npre-configured in Superset for you."),(0,n.kt)("p",null,"Under the ",(0,n.kt)("strong",{parentName:"p"},"+")," menu in the top right, select Data, and then the ",(0,n.kt)("em",{parentName:"p"},"Connect Database")," option:"),(0,n.kt)("img",{src:(0,o.Z)("/img/tutorial/tutorial_01_add_database_connection.png"),width:"600"})," "," ",(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,"Then select your database type in the resulting modal:"),(0,n.kt)("img",{src:(0,o.Z)("/img/tutorial/tutorial_02_select_database.png"),width:"600"})," "," ",(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,"Once you've selected a database, you can configure a number of advanced options in this window,\nor for the purposes of this walkthrough, you can click the link below all these fields:"),(0,n.kt)("img",{src:(0,o.Z)("/img/tutorial/tutorial_03a_database_connection_string_link.png"),width:"600"})," "," ",(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,"Once you've clicked that link you only need to specify two things (the database name and SQLAlchemy URI):"),(0,n.kt)("img",{src:(0,o.Z)("/img/tutorial/tutorial_03b_connection_string_details.png"),width:"600"})," "," ",(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,"As noted in the text below the form, you should refer to the SQLAlchemy documentation on\n",(0,n.kt)("a",{parentName:"p",href:"https://docs.sqlalchemy.org/en/12/core/engines.html#database-urls"},"creating new connection URIs"),"\nfor your target database."),(0,n.kt)("p",null,"Click the ",(0,n.kt)("strong",{parentName:"p"},"Test Connection")," button to confirm things work end to end. If the connection looks good, save the configuration\nby clicking the ",(0,n.kt)("strong",{parentName:"p"},"Connect")," button in the bottom right corner of the modal window:"),(0,n.kt)("p",null,"Congratulations, you've just added a new data source in Superset!"),(0,n.kt)("h3",{id:"registering-a-new-table"},"Registering a new table"),(0,n.kt)("p",null,"Now that you\u2019ve configured a data source, you can select specific tables (called ",(0,n.kt)("strong",{parentName:"p"},"Datasets")," in Superset)\nthat you want exposed in Superset for querying."),(0,n.kt)("p",null,"Navigate to ",(0,n.kt)("strong",{parentName:"p"},"Data \u2023 Datasets")," and select the ",(0,n.kt)("strong",{parentName:"p"},"+ Dataset")," button in the top right corner."),(0,n.kt)("img",{src:(0,o.Z)("/img/tutorial/tutorial_08_sources_tables.png")}),(0,n.kt)("p",null,"A modal window should pop up in front of you. Select your ",(0,n.kt)("strong",{parentName:"p"},"Database"),",\n",(0,n.kt)("strong",{parentName:"p"},"Schema"),", and ",(0,n.kt)("strong",{parentName:"p"},"Table")," using the drop downs that appear. In the following example,\nwe register the ",(0,n.kt)("strong",{parentName:"p"},"cleaned_sales_data")," table from the ",(0,n.kt)("strong",{parentName:"p"},"examples")," database."),(0,n.kt)("img",{src:(0,o.Z)("/img/tutorial/tutorial_09_add_new_table.png")}),(0,n.kt)("p",null,"To finish, click the ",(0,n.kt)("strong",{parentName:"p"},"Add")," button in the bottom right corner. You should now see your dataset in the list of datasets."),(0,n.kt)("h3",{id:"customizing-column-properties"},"Customizing column properties"),(0,n.kt)("p",null,"Now that you've registered your dataset, you can configure column properties\nfor how the column should be treated in the Explore workflow:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Is the column temporal? (should it be used for slicing & dicing in time series charts?)"),(0,n.kt)("li",{parentName:"ul"},"Should the column be filterable?"),(0,n.kt)("li",{parentName:"ul"},"Is the column dimensional?"),(0,n.kt)("li",{parentName:"ul"},"If it's a datetime column, how should Superset parse\nthe datetime format? (using the ",(0,n.kt)("a",{parentName:"li",href:"https://en.wikipedia.org/wiki/ISO_8601"},"ISO-8601 string pattern"),")")),(0,n.kt)("img",{src:(0,o.Z)("/img/tutorial/tutorial_column_properties.png")}),(0,n.kt)("h3",{id:"superset-semantic-layer"},"Superset semantic layer"),(0,n.kt)("p",null,"Superset has a thin semantic layer that adds many quality of life improvements for analysts.\nThe Superset semantic layer can store 2 types of computed data:"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Virtual metrics: you can write SQL queries that aggregate values\nfrom multiple column (e.g. ",(0,n.kt)("inlineCode",{parentName:"li"},"SUM(recovered) / SUM(confirmed)"),") and make them\navailable as columns for (e.g. ",(0,n.kt)("inlineCode",{parentName:"li"},"recovery_rate"),") visualization in Explore.\nAggregate functions are allowed and encouraged for metrics.")),(0,n.kt)("img",{src:(0,o.Z)("/img/tutorial/tutorial_sql_metric.png")}),(0,n.kt)("p",null,"You can also certify metrics if you'd like for your team in this view."),(0,n.kt)("ol",{start:2},(0,n.kt)("li",{parentName:"ol"},"Virtual calculated columns: you can write SQL queries that\ncustomize the appearance and behavior\nof a specific column (e.g. ",(0,n.kt)("inlineCode",{parentName:"li"},"CAST(recovery_rate) as float"),").\nAggregate functions aren't allowed in calculated columns.")),(0,n.kt)("img",{src:(0,o.Z)("/img/tutorial/tutorial_calculated_column.png")}),(0,n.kt)("h3",{id:"creating-charts-in-explore-view"},"Creating charts in Explore view"),(0,n.kt)("p",null,"Superset has 2 main interfaces for exploring data:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Explore"),": no-code viz builder. Select your dataset, select the chart,\ncustomize the appearance, and publish."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"SQL Lab"),": SQL IDE for cleaning, joining, and preparing data for Explore workflow")),(0,n.kt)("p",null,"We'll focus on the Explore view for creating charts right now.\nTo start the Explore workflow from the ",(0,n.kt)("strong",{parentName:"p"},"Datasets")," tab, start by clicking the name\nof the dataset that will be powering your chart."),(0,n.kt)("img",{src:(0,o.Z)("/img/tutorial/tutorial_launch_explore.png")}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,"You're now presented with a powerful workflow for exploring data and iterating on charts."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"The ",(0,n.kt)("strong",{parentName:"li"},"Dataset")," view on the left-hand side has a list of columns and metrics,\nscoped to the current dataset you selected."),(0,n.kt)("li",{parentName:"ul"},"The ",(0,n.kt)("strong",{parentName:"li"},"Data")," preview below the chart area also gives you helpful data context."),(0,n.kt)("li",{parentName:"ul"},"Using the ",(0,n.kt)("strong",{parentName:"li"},"Data")," tab and ",(0,n.kt)("strong",{parentName:"li"},"Customize")," tabs, you can change the visualization type,\nselect the temporal column, select the metric to group by, and customize\nthe aesthetics of the chart.")),(0,n.kt)("p",null,"As you customize your chart using drop-down menus, make sure to click the ",(0,n.kt)("strong",{parentName:"p"},"Run")," button\nto get visual feedback."),(0,n.kt)("img",{src:(0,o.Z)("/img/tutorial/tutorial_explore_run.jpg")}),(0,n.kt)("p",null,"In the following screenshot, we craft a grouped Time-series Bar Chart to visualize\nour quarterly sales data by product line just by clicking options in drop-down menus."),(0,n.kt)("img",{src:(0,o.Z)("/img/tutorial/tutorial_explore_settings.jpg")}),(0,n.kt)("h3",{id:"creating-a-slice-and-dashboard"},"Creating a slice and dashboard"),(0,n.kt)("p",null,"To save your chart, first click the ",(0,n.kt)("strong",{parentName:"p"},"Save")," button. You can either:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Save your chart and add it to an existing dashboard"),(0,n.kt)("li",{parentName:"ul"},"Save your chart and add it to a new dashboard")),(0,n.kt)("p",null,'In the following screenshot, we save the chart to a new "Superset Duper Sales Dashboard":'),(0,n.kt)("img",{src:(0,o.Z)("/img/tutorial/tutorial_save_slice.png")}),(0,n.kt)("p",null,"To publish, click ",(0,n.kt)("strong",{parentName:"p"},"Save and goto Dashboard"),"."),(0,n.kt)("p",null,"Behind the scenes, Superset will create a slice and store all the information needed\nto create your chart in its thin data layer\n(the query, chart type, options selected, name, etc)."),(0,n.kt)("img",{src:(0,o.Z)("/img/tutorial/tutorial_first_dashboard.png"),style:{width:"100%",maxWidth:"500px"}}),(0,n.kt)("p",null," To resize the chart, start by clicking the Edit Dashboard button in the top right corner."),(0,n.kt)("img",{src:(0,o.Z)("/img/tutorial/tutorial_edit_button.png"),width:"300"}),(0,n.kt)("p",null,"Then, click and drag the bottom right corner of the chart until the chart layout snaps\ninto a position you like onto the underlying grid."),(0,n.kt)("img",{src:(0,o.Z)("/img/tutorial/tutorial_chart_resize.png"),style:{width:"100%",maxWidth:"500px"}}),(0,n.kt)("p",null," Click ",(0,n.kt)("strong",{parentName:"p"},"Save")," to persist the changes."),(0,n.kt)("p",null,"Congrats! You\u2019ve successfully linked, analyzed, and visualized data in Superset. There are a wealth\nof other table configuration and visualization options, so please start exploring and creating\nslices and dashboards of your own"),(0,n.kt)("p",null,"\u05bf"),(0,n.kt)("h3",{id:"manage-access-to-dashboards"},"Manage access to Dashboards"),(0,n.kt)("p",null,"Access to dashboards is managed via owners (users that have edit permissions to the dashboard)"),(0,n.kt)("p",null,"Non-owner users access can be managed two different ways:"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Dataset permissions - if you add to the relevant role permissions to datasets it automatically grants implicit access to all dashboards that uses those permitted datasets"),(0,n.kt)("li",{parentName:"ol"},"Dashboard roles - if you enable ",(0,n.kt)("strong",{parentName:"li"},"DASHBOARD_RBAC")," ",(0,n.kt)("a",{parentName:"li",href:"https://superset.apache.org/docs/installation/configuring-superset#feature-flags"},"feature flag")," then you be able to manage which roles can access the dashboard",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Granting a role access to a dashboard will bypass dataset level checks. Having dashboard access implicitly grants read access to all the featured charts in the dashboard, and thereby also all the associated datasets."),(0,n.kt)("li",{parentName:"ul"},"If no roles are specified for a dashboard, regular ",(0,n.kt)("strong",{parentName:"li"},"Dataset permissions")," will apply.")))),(0,n.kt)("img",{src:(0,o.Z)("/img/tutorial/tutorial_dashboard_access.png")}),(0,n.kt)("h3",{id:"customizing-dashboard"},"Customizing dashboard"),(0,n.kt)("p",null,"The following URL parameters can be used to modify how the dashboard is rendered:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"standalone"),":",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"0")," (default): dashboard is displayed normally"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"1"),": Top Navigation is hidden"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"2"),": Top Navigation + title is hidden"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"3"),": Top Navigation + title + top level tabs are hidden"))),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"show_filters"),":",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"0"),": render dashboard without Filter Bar"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"1")," (default): render dashboard with Filter Bar if native filters are enabled"))),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"expand_filters"),":",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"(default): render dashboard with Filter Bar expanded if there are native filters"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"0"),": render dashboard with Filter Bar collapsed"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"1"),": render dashboard with Filter Bar expanded")))),(0,n.kt)("p",null,"For example, when running the local development build, the following will disable the\nTop Nav and remove the Filter Bar:\n",(0,n.kt)("inlineCode",{parentName:"p"},"http://localhost:8088/superset/dashboard/my-dashboard/?standalone=1&show_filters=0")))}h.isMDXComponent=!0},3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function s(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var l=r.createContext({}),d=function(e){var t=r.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},u=function(e){var t=d(e.components);return r.createElement(l.Provider,{value:t},e.children)},c="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),c=d(a),h=n,m=c["".concat(l,".").concat(h)]||c[h]||p[h]||o;return a?r.createElement(m,i(i({ref:t},u),{},{components:a})):r.createElement(m,i({ref:t},u))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[c]="string"==typeof e?e:n,i[1]=s;for(var d=2;d<o;d++)i[d]=a[d];return r.createElement.apply(null,i)}return r.createElement.apply(null,a)}h.displayName="MDXCreateElement"}}]);