(window.webpackJsonp=window.webpackJsonp||[]).push([[50],{"+yga":function(e,t,a){"use strict";a.r(t),a.d(t,"_frontmatter",(function(){return s})),a.d(t,"default",(function(){return p}));var n=a("k1TG"),i=a("8o2o"),r=(a("q1tI"),a("7ljp")),o=a("hhGP"),s=(a("qKvR"),{});void 0!==s&&s&&s===Object(s)&&Object.isExtensible(s)&&!s.hasOwnProperty("__filemeta")&&Object.defineProperty(s,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"src/pages/docs/Connecting to Databases/ui.mdx"}});var l={_frontmatter:s},c=o.a;function p(e){var t=e.components,a=Object(i.a)(e,["components"]);return Object(r.b)(c,Object(n.a)({},l,a,{components:t,mdxType:"MDXLayout"}),Object(r.b)("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."),Object(r.b)("p",null,Object(r.b)("img",{alt:"db-conn-docs",src:"https://user-images.githubusercontent.com/27827808/125499607-94e300aa-1c0f-4c60-b199-3f9de41060a3.gif"})),Object(r.b)("p",null,"There are now 3 steps when connecting to a database in the new UI:"),Object(r.b)("p",null,"Step 1: First the admin must inform superset what engine they want to connect to. This page is powered by the ",Object(r.b)("inlineCode",{parentName:"p"},"/available")," endpoint which pulls on the engines currently installed in your environment, so that only supported databases are shown."),Object(r.b)("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."),Object(r.b)("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."),Object(r.b)("p",null,"We hope this feature will help eliminate a huge bottleneck for users to get into the application and start crafting datasets."),Object(r.b)("h3",{id:"how-to-setup-up-preferred-database-options-and-images"},"How to setup up preferred database options and images"),Object(r.b)("p",null,"We added a new configuration option where the admin can define their preferred databases, in order:"),Object(r.b)("pre",null,Object(r.b)("code",Object(n.a)({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')),Object(r.b)("p",null,"For copyright reasons the logos for each database are not distributed with Superset."),Object(r.b)("h3",{id:"setting-images"},"Setting images"),Object(r.b)("ul",null,Object(r.b)("li",{parentName:"ul"},"To set the images of your preferred database, admins must create a mapping in the ",Object(r.b)("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)")),Object(r.b)("pre",null,Object(r.b)("code",Object(n.a)({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')),Object(r.b)("h3",{id:"how-to-add-new-database-engines-to-available-endpoint"},"How to add new database engines to available endpoint"),Object(r.b)("p",null,"Currently the new modal supports the following databases:"),Object(r.b)("ul",null,Object(r.b)("li",{parentName:"ul"},"Postgres"),Object(r.b)("li",{parentName:"ul"},"Redshift"),Object(r.b)("li",{parentName:"ul"},"MySQL"),Object(r.b)("li",{parentName:"ul"},"BigQuery")),Object(r.b)("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:"),Object(r.b)("ol",null,Object(r.b)("li",{parentName:"ol"},Object(r.b)("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. (",Object(r.b)("a",Object(n.a)({parentName:"li"},{href:"https://github.com/apache/superset/blob/accee507c0819cd0d7bcfb5a3e1199bc81eeebf2/superset/db_engine_specs/base.py#L1309-L1320"}),"see"),")."),Object(r.b)("li",{parentName:"ol"},Object(r.b)("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".'),Object(r.b)("li",{parentName:"ol"},Object(r.b)("inlineCode",{parentName:"li"},"sqlalchemy_uri_placeholder"),": a string that helps the user in case they want to type the URI directly."),Object(r.b)("li",{parentName:"ol"},Object(r.b)("inlineCode",{parentName:"li"},"encryption_parameters"),": parameters used to build the URI when the user opts for an encrypted connection. For Postgres this is ",Object(r.b)("inlineCode",{parentName:"li"},'{"sslmode": "require"}'),".")),Object(r.b)("p",null,"In addition, the DB engine spec must implement these class methods:"),Object(r.b)("ul",null,Object(r.b)("li",{parentName:"ul"},Object(r.b)("inlineCode",{parentName:"li"},"build_sqlalchemy_uri(cls, parameters, encrypted_extra)"),": this method receives the distinct parameters and builds the URI from them."),Object(r.b)("li",{parentName:"ul"},Object(r.b)("inlineCode",{parentName:"li"},"get_parameters_from_uri(cls, uri, encrypted_extra)"),": this method does the opposite, extracting the parameters from a given URI."),Object(r.b)("li",{parentName:"ul"},Object(r.b)("inlineCode",{parentName:"li"},"validate_parameters(cls, parameters)"),": this method is used for ",Object(r.b)("inlineCode",{parentName:"li"},"onBlur")," validation of the form. It should return a list of ",Object(r.b)("inlineCode",{parentName:"li"},"SupersetError")," indicating which parameters are missing, and which parameters are definitely incorrect (",Object(r.b)("a",Object(n.a)({parentName:"li"},{href:"https://github.com/apache/superset/blob/accee507c0819cd0d7bcfb5a3e1199bc81eeebf2/superset/db_engine_specs/base.py#L1404"}),"example"),").")),Object(r.b)("p",null,"For databases like MySQL and Postgres that use the standard format of ",Object(r.b)("inlineCode",{parentName:"p"},"engine+driver://user:password@host:port/dbname")," all you need to do is add the ",Object(r.b)("inlineCode",{parentName:"p"},"BasicParametersMixin")," to the DB engine spec, and then define the parameters 2-4 (",Object(r.b)("inlineCode",{parentName:"p"},"parameters_schema")," is already present in the mixin)."),Object(r.b)("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."))}void 0!==p&&p&&p===Object(p)&&Object.isExtensible(p)&&!p.hasOwnProperty("__filemeta")&&Object.defineProperty(p,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"src/pages/docs/Connecting to Databases/ui.mdx"}}),p.isMDXComponent=!0}}]);
//# sourceMappingURL=component---src-pages-docs-connecting-to-databases-ui-mdx-de24fce0dfa9063cc9fc.js.map