"use strict";(self.webpackChunkdocs_v_2=self.webpackChunkdocs_v_2||[]).push([[1688],{95788:(e,t,n)=>{n.d(t,{Iu:()=>p,yg:()=>m});var a=n(11504);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},i=Object.keys(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),d=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=d(e.components);return a.createElement(l.Provider,{value:t},e.children)},c="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),c=d(n),h=r,m=c["".concat(l,".").concat(h)]||c[h]||u[h]||i;return n?a.createElement(m,o(o({ref:t},p),{},{components:n})):a.createElement(m,o({ref:t},p))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[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:r,o[1]=s;for(var d=2;d<i;d++)o[d]=n[d];return a.createElement.apply(null,o)}return a.createElement.apply(null,n)}h.displayName="MDXCreateElement"},88920:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>i,metadata:()=>s,toc:()=>d});var a=n(45072),r=(n(11504),n(95788));const i={title:"Using Database Connection UI",hide_title:!0,sidebar_position:3,version:1},o=void 0,s={unversionedId:"databases/db-connection-ui",id:"databases/db-connection-ui",title:"Using Database Connection UI",description:"Here is the documentation on how to leverage the new DB Connection UI. This will provide admins the ability to enhance the UX for users who want to connect to new databases.",source:"@site/docs/databases/db-connection-ui.mdx",sourceDirName:"databases",slug:"/databases/db-connection-ui",permalink:"/docs/databases/db-connection-ui",draft:!1,editUrl:"https://github.com/apache/superset/edit/master/docs/docs/databases/db-connection-ui.mdx",tags:[],version:"current",sidebarPosition:3,frontMatter:{title:"Using Database Connection UI",hide_title:!0,sidebar_position:3,version:1},sidebar:"tutorialSidebar",previous:{title:"Adding New Drivers in Docker",permalink:"/docs/databases/docker-add-drivers"},next:{title:"Amazon Athena",permalink:"/docs/databases/athena"}},l={},d=[{value:"How to setup up preferred database options and images",id:"how-to-setup-up-preferred-database-options-and-images",level:3},{value:"Setting images",id:"setting-images",level:3},{value:"How to add new database engines to available endpoint",id:"how-to-add-new-database-engines-to-available-endpoint",level:3}],p={toc:d},c="wrapper";function u(e){let{components:t,...n}=e;return(0,r.yg)(c,(0,a.c)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,r.yg)("p",null,"Here is the documentation on how to leverage the new DB Connection UI. This will provide admins the ability to enhance the UX for users who want to connect to new databases."),(0,r.yg)("p",null,(0,r.yg)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/27827808/125499607-94e300aa-1c0f-4c60-b199-3f9de41060a3.gif",alt:"db-conn-docs"})),(0,r.yg)("p",null,"There are now 3 steps when connecting to a database in the new UI:"),(0,r.yg)("p",null,"Step 1: First the admin must inform superset what engine they want to connect to. This page is powered by the ",(0,r.yg)("inlineCode",{parentName:"p"},"/available")," endpoint which pulls on the engines currently installed in your environment, so that only supported databases are shown."),(0,r.yg)("p",null,"Step 2: Next, the admin is prompted to enter database specific parameters. Depending on whether there is a dynamic form available for that specific engine, the admin will either see the new custom form or the legacy SQLAlchemy form. We currently have built dynamic forms for (Redshift, MySQL, Postgres, and BigQuery). The new form prompts the user for the parameters needed to connect (for example, username, password, host, port, etc.) and provides immediate feedback on errors."),(0,r.yg)("p",null,"Step 3: Finally, once the admin has connected to their DB using the dynamic form they have the opportunity to update any optional advanced settings."),(0,r.yg)("p",null,"We hope this feature will help eliminate a huge bottleneck for users to get into the application and start crafting datasets."),(0,r.yg)("h3",{id:"how-to-setup-up-preferred-database-options-and-images"},"How to setup up preferred database options and images"),(0,r.yg)("p",null,"We added a new configuration option where the admin can define their preferred databases, in order:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-python"},'# A list of preferred databases, in order. These databases will be\n# displayed prominently in the "Add Database" dialog. You should\n# use the "engine_name" attribute of the corresponding DB engine spec\n# in `superset/db_engine_specs/`.\nPREFERRED_DATABASES: list[str] = [\n    "PostgreSQL",\n    "Presto",\n    "MySQL",\n    "SQLite",\n]\n')),(0,r.yg)("p",null,"For copyright reasons the logos for each database are not distributed with Superset."),(0,r.yg)("h3",{id:"setting-images"},"Setting images"),(0,r.yg)("ul",null,(0,r.yg)("li",{parentName:"ul"},"To set the images of your preferred database, admins must create a mapping in the ",(0,r.yg)("inlineCode",{parentName:"li"},"superset_text.yml")," file with engine and location of the image. The image can be host locally inside your static/file directory or online (e.g. S3)")),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-python"},'DB_IMAGES:\n  postgresql: "path/to/image/postgres.jpg"\n  bigquery: "path/to/s3bucket/bigquery.jpg"\n  snowflake: "path/to/image/snowflake.jpg"\n')),(0,r.yg)("h3",{id:"how-to-add-new-database-engines-to-available-endpoint"},"How to add new database engines to available endpoint"),(0,r.yg)("p",null,"Currently the new modal supports the following databases:"),(0,r.yg)("ul",null,(0,r.yg)("li",{parentName:"ul"},"Postgres"),(0,r.yg)("li",{parentName:"ul"},"Redshift"),(0,r.yg)("li",{parentName:"ul"},"MySQL"),(0,r.yg)("li",{parentName:"ul"},"BigQuery")),(0,r.yg)("p",null,"When the user selects a database not in this list they will see the old dialog asking for the SQLAlchemy URI. New databases can be added gradually to the new flow. In order to support the rich configuration a DB engine spec needs to have the following attributes:"),(0,r.yg)("ol",null,(0,r.yg)("li",{parentName:"ol"},(0,r.yg)("inlineCode",{parentName:"li"},"parameters_schema"),": a Marshmallow schema defining the parameters needed to configure the database. For Postgres this includes username, password, host, port, etc. (",(0,r.yg)("a",{parentName:"li",href:"https://github.com/apache/superset/blob/accee507c0819cd0d7bcfb5a3e1199bc81eeebf2/superset/db_engine_specs/base.py#L1309-L1320"},"see"),")."),(0,r.yg)("li",{parentName:"ol"},(0,r.yg)("inlineCode",{parentName:"li"},"default_driver"),': the name of the recommended driver for the DB engine spec. Many SQLAlchemy dialects support multiple drivers, but usually one is the official recommendation. For Postgres we use "psycopg2".'),(0,r.yg)("li",{parentName:"ol"},(0,r.yg)("inlineCode",{parentName:"li"},"sqlalchemy_uri_placeholder"),": a string that helps the user in case they want to type the URI directly."),(0,r.yg)("li",{parentName:"ol"},(0,r.yg)("inlineCode",{parentName:"li"},"encryption_parameters"),": parameters used to build the URI when the user opts for an encrypted connection. For Postgres this is ",(0,r.yg)("inlineCode",{parentName:"li"},'{"sslmode": "require"}'),".")),(0,r.yg)("p",null,"In addition, the DB engine spec must implement these class methods:"),(0,r.yg)("ul",null,(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("inlineCode",{parentName:"li"},"build_sqlalchemy_uri(cls, parameters, encrypted_extra)"),": this method receives the distinct parameters and builds the URI from them."),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("inlineCode",{parentName:"li"},"get_parameters_from_uri(cls, uri, encrypted_extra)"),": this method does the opposite, extracting the parameters from a given URI."),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("inlineCode",{parentName:"li"},"validate_parameters(cls, parameters)"),": this method is used for ",(0,r.yg)("inlineCode",{parentName:"li"},"onBlur")," validation of the form. It should return a list of ",(0,r.yg)("inlineCode",{parentName:"li"},"SupersetError")," indicating which parameters are missing, and which parameters are definitely incorrect (",(0,r.yg)("a",{parentName:"li",href:"https://github.com/apache/superset/blob/accee507c0819cd0d7bcfb5a3e1199bc81eeebf2/superset/db_engine_specs/base.py#L1404"},"example"),").")),(0,r.yg)("p",null,"For databases like MySQL and Postgres that use the standard format of ",(0,r.yg)("inlineCode",{parentName:"p"},"engine+driver://user:password@host:port/dbname")," all you need to do is add the ",(0,r.yg)("inlineCode",{parentName:"p"},"BasicParametersMixin")," to the DB engine spec, and then define the parameters 2-4 (",(0,r.yg)("inlineCode",{parentName:"p"},"parameters_schema")," is already present in the mixin)."),(0,r.yg)("p",null,"For other databases you need to implement these methods yourself. The BigQuery DB engine spec is a good example of how to do that."))}u.isMDXComponent=!0}}]);