(window.webpackJsonp=window.webpackJsonp||[]).push([[58],{"8GLJ":function(e,t,a){"use strict";a.r(t),a.d(t,"_frontmatter",(function(){return l})),a.d(t,"default",(function(){return c}));var i=a("k1TG"),n=a("8o2o"),s=(a("q1tI"),a("7ljp")),r=a("hhGP"),l=(a("qKvR"),{});void 0!==l&&l&&l===Object(l)&&Object.isExtensible(l)&&!l.hasOwnProperty("__filemeta")&&Object.defineProperty(l,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"src/pages/docs/introduction.mdx"}});var o=r.a;function c(e){var t=e.components,a=Object(n.a)(e,["components"]);return Object(s.b)(o,Object(i.a)({},a,{components:t,mdxType:"MDXLayout"}),Object(s.b)("h2",{id:"what-is-apache-superset"},"What is Apache Superset?"),Object(s.b)("p",null,"Apache Superset (Incubating) is a modern, enterprise-ready business intelligence web application. It\nis fast, lightweight, intuitive, and loaded with options that make it easy for users of all skill\nsets to explore and visualize their data, from simple pie charts to highly detailed deck.gl\ngeospatial charts."),Object(s.b)("p",null,"Here's an overview of the key features of Superset:"),Object(s.b)("ul",null,Object(s.b)("li",{parentName:"ul"},"A rich set of data visualizations out of the box"),Object(s.b)("li",{parentName:"ul"},"An easy-to-use interface for exploring and visualizing data"),Object(s.b)("li",{parentName:"ul"},"Create and share dashboards"),Object(s.b)("li",{parentName:"ul"},"Enterprise-ready authentication with integration with major authentication providers (database,\nOpenID, LDAP, OAuth & REMOTE_USER through Flask AppBuilder)"),Object(s.b)("li",{parentName:"ul"},"An extensible, high-granularity security/permission model allowing intricate rules on who can\naccess individual features and the dataset"),Object(s.b)("li",{parentName:"ul"},"A simple semantic layer, allowing users to control how data sources are displayed in the UI by\ndefining which fields should show up in which drop-down and which aggregation and function metrics\nare made available to the user"),Object(s.b)("li",{parentName:"ul"},"Integration with most SQL-speaking RDBMS through SQLAlchemy"),Object(s.b)("li",{parentName:"ul"},"Deep integration with Druid.io")),Object(s.b)("p",null,"Superset is cloud-native and designed to be highly available. It was designed to scale out to large,\ndistributed environments and works very well inside containers. While you can easily test drive\nSuperset on a modest setup or simply on your laptop, there’s virtually no limit around scaling out\nthe platform."),Object(s.b)("p",null,"Superset is also cloud-native in the sense that it is flexible and lets you choose the:"),Object(s.b)("ul",null,Object(s.b)("li",{parentName:"ul"},"web server (Gunicorn, Nginx, Apache),"),Object(s.b)("li",{parentName:"ul"},"metadata database engine (MySQL, Postgres, MariaDB, etc),"),Object(s.b)("li",{parentName:"ul"},"message queue (Redis, RabbitMQ, SQS, etc),"),Object(s.b)("li",{parentName:"ul"},"results backend (S3, Redis, Memcached, etc),"),Object(s.b)("li",{parentName:"ul"},"caching layer (Memcached, Redis, etc),")),Object(s.b)("p",null,"Superset also works well with services like NewRelic, StatsD and DataDog, and has the ability to run\nanalytic workloads against most popular database technologies."),Object(s.b)("p",null,"Superset is currently run at scale at many companies. For example, Superset is run in Airbnb’s\nproduction environment inside Kubernetes and serves 600+ daily active users viewing over 100K charts\na day."),Object(s.b)("p",null,"You can find a partial list of industries and companies embracing Superset\n",Object(s.b)("a",{href:"https://github.com/apache/incubator-superset/blob/master/INTHEWILD.md",parentName:"p"},"on this page in GitHub"),"."))}void 0!==c&&c&&c===Object(c)&&Object.isExtensible(c)&&!c.hasOwnProperty("__filemeta")&&Object.defineProperty(c,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"src/pages/docs/introduction.mdx"}}),c.isMDXComponent=!0}}]);
//# sourceMappingURL=component---src-pages-docs-introduction-mdx-be7ce9008c1a53d2f3f8.js.map