{"version":3,"sources":["webpack:///./src/pages/docs/introduction.mdx"],"names":["_frontmatter","layoutProps","MDXLayout","DefaultLayout","MDXContent","components","props","mdxType","isMDXComponent"],"mappings":"0PAMaA,G,UAAe,S,iNAE5B,IAKMC,EAAc,CAClBD,gBAEIE,EAAYC,IACH,SAASC,EAAT,GAGZ,IAFDC,EAEC,EAFDA,WACGC,EACF,8BACD,OAAO,YAACJ,EAAD,eAAeD,EAAiBK,EAAhC,CAAuCD,WAAYA,EAAYE,QAAQ,cAC5E,iBAAQ,CACN,GAAM,2BADR,4BAGA,iVAIA,4EACA,sBAEE,iBAAQ,CACN,WAAc,MADhB,oDAKA,iBAAQ,CACN,WAAc,MADhB,+DAKA,iBAAQ,CACN,WAAc,MADhB,+BAKA,iBAAQ,CACN,WAAc,MADhB,gKAMA,iBAAQ,CACN,WAAc,MADhB,6IAMA,iBAAQ,CACN,WAAc,MADhB,sOAOA,iBAAQ,CACN,WAAc,MADhB,+DAKA,iBAAQ,CACN,WAAc,MADhB,mCAKF,iVAIA,gHACA,sBAEE,iBAAQ,CACN,WAAc,MADhB,yCAKA,iBAAQ,CACN,WAAc,MADhB,6DAKA,iBAAQ,CACN,WAAc,MADhB,8CAKA,iBAAQ,CACN,WAAc,MADhB,gDAKA,iBAAQ,CACN,WAAc,MADhB,2CAKF,6LAEA,qOAGA,oGAEE,gBAAO,CACL,KAAQ,wEACR,WAAc,KAFhB,0BAFF,W,+MAWJH,EAAWI,gBAAiB","file":"component---src-pages-docs-introduction-mdx-5fc8696668e03ffa071d.js","sourcesContent":["import * as React from 'react'\n  /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsx mdx */\n\nimport DefaultLayout from \"/Users/max/code/superset/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\n\nconst makeShortcode = name => function MDXDefaultShortcode(props) {\n  console.warn(\"Component \" + name + \" was not imported, exported, or provided by MDXProvider as global scope\");\n  return <div {...props} />;\n};\n\nconst layoutProps = {\n  _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n  components,\n  ...props\n}) {\n  return <MDXLayout {...layoutProps} {...props} components={components} mdxType=\"MDXLayout\">\n    <h2 {...{\n      \"id\": \"what-is-apache-superset\"\n    }}>{`What is Apache Superset?`}</h2>\n    <p>{`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.`}</p>\n    <p>{`Here's an overview of the key features of Superset:`}</p>\n    <ul>\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}>{`A rich set of data visualizations out of the box`}</li>\n\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}>{`An easy-to-use interface for exploring and visualizing data`}</li>\n\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}>{`Create and share dashboards`}</li>\n\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}>{`Enterprise-ready authentication with integration with major authentication providers (database,\nOpenID, LDAP, OAuth & REMOTE_USER through Flask AppBuilder)`}</li>\n\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}>{`An extensible, high-granularity security/permission model allowing intricate rules on who can\naccess individual features and the dataset`}</li>\n\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}>{`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`}</li>\n\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}>{`Integration with most SQL-speaking RDBMS through SQLAlchemy`}</li>\n\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}>{`Deep integration with Druid.io`}</li>\n\n    </ul>\n    <p>{`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.`}</p>\n    <p>{`Superset is also cloud-native in the sense that it is flexible and lets you choose the:`}</p>\n    <ul>\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}>{`web server (Gunicorn, Nginx, Apache),`}</li>\n\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}>{`metadata database engine (MySQL, Postgres, MariaDB, etc),`}</li>\n\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}>{`message queue (Redis, RabbitMQ, SQS, etc),`}</li>\n\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}>{`results backend (S3, Redis, Memcached, etc),`}</li>\n\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}>{`caching layer (Memcached, Redis, etc),`}</li>\n\n    </ul>\n    <p>{`Superset also works well with services like NewRelic, StatsD and DataDog, and has the ability to run\nanalytic workloads against most popular database technologies.`}</p>\n    <p>{`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.`}</p>\n    <p>{`You can find a partial list of industries and companies embracing Superset\n`}\n      <a {...{\n        \"href\": \"https://github.com/apache/incubator-superset/blob/master/INTHEWILD.md\",\n        \"parentName\": \"p\"\n      }}>{`on this page in GitHub`}</a>\n      {`.`}</p>\n\n  </MDXLayout>;\n}\n;\nMDXContent.isMDXComponent = true;\n      "],"sourceRoot":""}