"use strict";(self.webpackChunkdocs_v_2=self.webpackChunkdocs_v_2||[]).push([[7116],{95788:(e,t,a)=>{a.d(t,{Iu:()=>u,yg:()=>h});var n=a(11504);function r(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 n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}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){r(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 l(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},o=Object.keys(e);for(n=0;n<o.length;n++)a=o[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)a=o[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var s=n.createContext({}),d=function(e){var t=n.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},u=function(e){var t=d(e.components);return n.createElement(s.Provider,{value:t},e.children)},g="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},p=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),g=d(a),p=r,h=g["".concat(s,".").concat(p)]||g[p]||c[p]||o;return a?n.createElement(h,i(i({ref:t},u),{},{components:a})):n.createElement(h,i({ref:t},u))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,i=new Array(o);i[0]=p;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[g]="string"==typeof e?e:r,i[1]=l;for(var d=2;d<o;d++)i[d]=a[d];return n.createElement.apply(null,i)}return n.createElement.apply(null,a)}p.displayName="MDXCreateElement"},72252:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>d,contentTitle:()=>l,default:()=>p,frontMatter:()=>i,metadata:()=>s,toc:()=>u});var n=a(45072),r=(a(11504),a(95788)),o=a(70964);const i={title:"Creating Your First Dashboard",hide_title:!0,sidebar_position:1,version:1},l=void 0,s={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/edit/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:"Docker builds, images and tags",permalink:"/docs/installation/docker"},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}],g={toc:u},c="wrapper";function p(e){let{components:t,...a}=e;return(0,r.yg)(c,(0,n.c)({},g,a,{components:t,mdxType:"MDXLayout"}),(0,r.yg)("h2",{id:"creating-your-first-dashboard"},"Creating Your First Dashboard"),(0,r.yg)("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,r.yg)("a",{parentName:"p",href:"http://preset.io/"},"Preset.io")," maintains an updated set of end-user\ndocumentation at ",(0,r.yg)("a",{parentName:"p",href:"https://docs.preset.io/"},"docs.preset.io"),"."),(0,r.yg)("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,r.yg)("h3",{id:"connecting-to-a-new-database"},"Connecting to a new database"),(0,r.yg)("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,r.yg)("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,r.yg)("a",{parentName:"p",href:"/docs/installation/installing-superset-using-docker-compose"},"Docker compose"),", you can\nskip this step because a Postgres database, named ",(0,r.yg)("strong",{parentName:"p"},"examples"),", is included and\npre-configured in Superset for you."),(0,r.yg)("p",null,"Under the ",(0,r.yg)("strong",{parentName:"p"},"+")," menu in the top right, select Data, and then the ",(0,r.yg)("em",{parentName:"p"},"Connect Database")," option:"),(0,r.yg)("img",{src:(0,o.c)("/img/tutorial/tutorial_01_add_database_connection.png"),width:"600"})," "," ",(0,r.yg)("br",null),(0,r.yg)("br",null),(0,r.yg)("p",null,"Then select your database type in the resulting modal:"),(0,r.yg)("img",{src:(0,o.c)("/img/tutorial/tutorial_02_select_database.png"),width:"600"})," "," ",(0,r.yg)("br",null),(0,r.yg)("br",null),(0,r.yg)("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,r.yg)("img",{src:(0,o.c)("/img/tutorial/tutorial_03a_database_connection_string_link.png"),width:"600"})," "," ",(0,r.yg)("br",null),(0,r.yg)("br",null),(0,r.yg)("p",null,"Once you've clicked that link you only need to specify two things (the database name and SQLAlchemy URI):"),(0,r.yg)("img",{src:(0,o.c)("/img/tutorial/tutorial_03b_connection_string_details.png"),width:"600"})," "," ",(0,r.yg)("br",null),(0,r.yg)("br",null),(0,r.yg)("p",null,"As noted in the text below the form, you should refer to the SQLAlchemy documentation on\n",(0,r.yg)("a",{parentName:"p",href:"https://docs.sqlalchemy.org/en/12/core/engines.html#database-urls"},"creating new connection URIs"),"\nfor your target database."),(0,r.yg)("p",null,"Click the ",(0,r.yg)("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,r.yg)("strong",{parentName:"p"},"Connect")," button in the bottom right corner of the modal window:"),(0,r.yg)("p",null,"Congratulations, you've just added a new data source in Superset!"),(0,r.yg)("h3",{id:"registering-a-new-table"},"Registering a new table"),(0,r.yg)("p",null,"Now that you\u2019ve configured a data source, you can select specific tables (called ",(0,r.yg)("strong",{parentName:"p"},"Datasets")," in Superset)\nthat you want exposed in Superset for querying."),(0,r.yg)("p",null,"Navigate to ",(0,r.yg)("strong",{parentName:"p"},"Data \u2023 Datasets")," and select the ",(0,r.yg)("strong",{parentName:"p"},"+ Dataset")," button in the top right corner."),(0,r.yg)("img",{src:(0,o.c)("/img/tutorial/tutorial_08_sources_tables.png")}),(0,r.yg)("p",null,"A modal window should pop up in front of you. Select your ",(0,r.yg)("strong",{parentName:"p"},"Database"),",\n",(0,r.yg)("strong",{parentName:"p"},"Schema"),", and ",(0,r.yg)("strong",{parentName:"p"},"Table")," using the drop downs that appear. In the following example,\nwe register the ",(0,r.yg)("strong",{parentName:"p"},"cleaned_sales_data")," table from the ",(0,r.yg)("strong",{parentName:"p"},"examples")," database."),(0,r.yg)("img",{src:(0,o.c)("/img/tutorial/tutorial_09_add_new_table.png")}),(0,r.yg)("p",null,"To finish, click the ",(0,r.yg)("strong",{parentName:"p"},"Add")," button in the bottom right corner. You should now see your dataset in the list of datasets."),(0,r.yg)("h3",{id:"customizing-column-properties"},"Customizing column properties"),(0,r.yg)("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,r.yg)("ul",null,(0,r.yg)("li",{parentName:"ul"},"Is the column temporal? (should it be used for slicing & dicing in time series charts?)"),(0,r.yg)("li",{parentName:"ul"},"Should the column be filterable?"),(0,r.yg)("li",{parentName:"ul"},"Is the column dimensional?"),(0,r.yg)("li",{parentName:"ul"},"If it's a datetime column, how should Superset parse\nthe datetime format? (using the ",(0,r.yg)("a",{parentName:"li",href:"https://en.wikipedia.org/wiki/ISO_8601"},"ISO-8601 string pattern"),")")),(0,r.yg)("img",{src:(0,o.c)("/img/tutorial/tutorial_column_properties.png")}),(0,r.yg)("h3",{id:"superset-semantic-layer"},"Superset semantic layer"),(0,r.yg)("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,r.yg)("ol",null,(0,r.yg)("li",{parentName:"ol"},"Virtual metrics: you can write SQL queries that aggregate values\nfrom multiple column (e.g. ",(0,r.yg)("inlineCode",{parentName:"li"},"SUM(recovered) / SUM(confirmed)"),") and make them\navailable as columns for (e.g. ",(0,r.yg)("inlineCode",{parentName:"li"},"recovery_rate"),") visualization in Explore.\nAggregate functions are allowed and encouraged for metrics.")),(0,r.yg)("img",{src:(0,o.c)("/img/tutorial/tutorial_sql_metric.png")}),(0,r.yg)("p",null,"You can also certify metrics if you'd like for your team in this view."),(0,r.yg)("ol",{start:2},(0,r.yg)("li",{parentName:"ol"},"Virtual calculated columns: you can write SQL queries that\ncustomize the appearance and behavior\nof a specific column (e.g. ",(0,r.yg)("inlineCode",{parentName:"li"},"CAST(recovery_rate) as float"),").\nAggregate functions aren't allowed in calculated columns.")),(0,r.yg)("img",{src:(0,o.c)("/img/tutorial/tutorial_calculated_column.png")}),(0,r.yg)("h3",{id:"creating-charts-in-explore-view"},"Creating charts in Explore view"),(0,r.yg)("p",null,"Superset has 2 main interfaces for exploring data:"),(0,r.yg)("ul",null,(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("strong",{parentName:"li"},"Explore"),": no-code viz builder. Select your dataset, select the chart,\ncustomize the appearance, and publish."),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("strong",{parentName:"li"},"SQL Lab"),": SQL IDE for cleaning, joining, and preparing data for Explore workflow")),(0,r.yg)("p",null,"We'll focus on the Explore view for creating charts right now.\nTo start the Explore workflow from the ",(0,r.yg)("strong",{parentName:"p"},"Datasets")," tab, start by clicking the name\nof the dataset that will be powering your chart."),(0,r.yg)("img",{src:(0,o.c)("/img/tutorial/tutorial_launch_explore.png")}),(0,r.yg)("br",null),(0,r.yg)("br",null),(0,r.yg)("p",null,"You're now presented with a powerful workflow for exploring data and iterating on charts."),(0,r.yg)("ul",null,(0,r.yg)("li",{parentName:"ul"},"The ",(0,r.yg)("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,r.yg)("li",{parentName:"ul"},"The ",(0,r.yg)("strong",{parentName:"li"},"Data")," preview below the chart area also gives you helpful data context."),(0,r.yg)("li",{parentName:"ul"},"Using the ",(0,r.yg)("strong",{parentName:"li"},"Data")," tab and ",(0,r.yg)("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,r.yg)("p",null,"As you customize your chart using drop-down menus, make sure to click the ",(0,r.yg)("strong",{parentName:"p"},"Run")," button\nto get visual feedback."),(0,r.yg)("img",{src:(0,o.c)("/img/tutorial/tutorial_explore_run.jpg")}),(0,r.yg)("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,r.yg)("img",{src:(0,o.c)("/img/tutorial/tutorial_explore_settings.jpg")}),(0,r.yg)("h3",{id:"creating-a-slice-and-dashboard"},"Creating a slice and dashboard"),(0,r.yg)("p",null,"To save your chart, first click the ",(0,r.yg)("strong",{parentName:"p"},"Save")," button. You can either:"),(0,r.yg)("ul",null,(0,r.yg)("li",{parentName:"ul"},"Save your chart and add it to an existing dashboard"),(0,r.yg)("li",{parentName:"ul"},"Save your chart and add it to a new dashboard")),(0,r.yg)("p",null,'In the following screenshot, we save the chart to a new "Superset Duper Sales Dashboard":'),(0,r.yg)("img",{src:(0,o.c)("/img/tutorial/tutorial_save_slice.png")}),(0,r.yg)("p",null,"To publish, click ",(0,r.yg)("strong",{parentName:"p"},"Save and goto Dashboard"),"."),(0,r.yg)("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,r.yg)("img",{src:(0,o.c)("/img/tutorial/tutorial_first_dashboard.png"),style:{width:"100%",maxWidth:"500px"}}),(0,r.yg)("p",null," To resize the chart, start by clicking the Edit Dashboard button in the top right corner."),(0,r.yg)("img",{src:(0,o.c)("/img/tutorial/tutorial_edit_button.png"),width:"300"}),(0,r.yg)("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,r.yg)("img",{src:(0,o.c)("/img/tutorial/tutorial_chart_resize.png"),style:{width:"100%",maxWidth:"500px"}}),(0,r.yg)("p",null," Click ",(0,r.yg)("strong",{parentName:"p"},"Save")," to persist the changes."),(0,r.yg)("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,r.yg)("p",null,"\u05bf"),(0,r.yg)("h3",{id:"manage-access-to-dashboards"},"Manage access to Dashboards"),(0,r.yg)("p",null,"Access to dashboards is managed via owners (users that have edit permissions to the dashboard)"),(0,r.yg)("p",null,"Non-owner users access can be managed two different ways:"),(0,r.yg)("ol",null,(0,r.yg)("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,r.yg)("li",{parentName:"ol"},"Dashboard roles - if you enable ",(0,r.yg)("strong",{parentName:"li"},"DASHBOARD_RBAC")," ",(0,r.yg)("a",{parentName:"li",href:"/docs/installation/configuring-superset#feature-flags"},"feature flag")," then you be able to manage which roles can access the dashboard",(0,r.yg)("ul",{parentName:"li"},(0,r.yg)("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,r.yg)("li",{parentName:"ul"},"If no roles are specified for a dashboard, regular ",(0,r.yg)("strong",{parentName:"li"},"Dataset permissions")," will apply.")))),(0,r.yg)("img",{src:(0,o.c)("/img/tutorial/tutorial_dashboard_access.png")}),(0,r.yg)("h3",{id:"customizing-dashboard"},"Customizing dashboard"),(0,r.yg)("p",null,"The following URL parameters can be used to modify how the dashboard is rendered:"),(0,r.yg)("ul",null,(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("inlineCode",{parentName:"li"},"standalone"),":",(0,r.yg)("ul",{parentName:"li"},(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("inlineCode",{parentName:"li"},"0")," (default): dashboard is displayed normally"),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("inlineCode",{parentName:"li"},"1"),": Top Navigation is hidden"),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("inlineCode",{parentName:"li"},"2"),": Top Navigation + title is hidden"),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("inlineCode",{parentName:"li"},"3"),": Top Navigation + title + top level tabs are hidden"))),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("inlineCode",{parentName:"li"},"show_filters"),":",(0,r.yg)("ul",{parentName:"li"},(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("inlineCode",{parentName:"li"},"0"),": render dashboard without Filter Bar"),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("inlineCode",{parentName:"li"},"1")," (default): render dashboard with Filter Bar if native filters are enabled"))),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("inlineCode",{parentName:"li"},"expand_filters"),":",(0,r.yg)("ul",{parentName:"li"},(0,r.yg)("li",{parentName:"ul"},"(default): render dashboard with Filter Bar expanded if there are native filters"),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("inlineCode",{parentName:"li"},"0"),": render dashboard with Filter Bar collapsed"),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("inlineCode",{parentName:"li"},"1"),": render dashboard with Filter Bar expanded")))),(0,r.yg)("p",null,"For example, when running the local development build, the following will disable the\nTop Nav and remove the Filter Bar:\n",(0,r.yg)("inlineCode",{parentName:"p"},"http://localhost:8088/superset/dashboard/my-dashboard/?standalone=1&show_filters=0")))}p.isMDXComponent=!0}}]);