From 04451766e7591ed0498022d55e5d3dcf4a63071b Mon Sep 17 00:00:00 2001 From: Claude Code Date: Wed, 13 May 2026 18:08:46 -0700 Subject: [PATCH] fix(docs): tighten onBrokenLinks to throw and fix surfaced broken links MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Previously docusaurus.config.ts had `onBrokenLinks: 'warn'`, so broken internal links produced advisory warnings during build but didn't gate merges. Tightening to `throw` surfaces every broken internal route at build time. Three classes of issue fell out: 1. Stale `/docs/...` and `/docs/6.0.0/...` references in the 6.0.0 versioned snapshot. The user-facing docs section was renamed `docs` → `user-docs` (routeBasePath) at some point after 6.0.0 was cut, but the snapshot's links still pointed at the old prefix. The live site redirects /docs/* → /user-docs/* at runtime, but Docusaurus's onBrokenLinks checker doesn't honor redirects. Bulk-rewrote /docs/* → /user-docs/* across the snapshot (and one /docs/api → /developer-docs/api). 2. Bare-relative MDX links like `[Label](./mcp)` (no .md/.mdx extension). Docusaurus renders an absolute href in SSR HTML, so static crawlers see correct links — BUT React Router's `` component on the client side resolves the bare path relative to the current URL on click, so when the page URL has a trailing slash (e.g. /extensions/overview/), `./mcp` becomes /extensions/overview/mcp (404). This is exactly the broken-flow a user reported on /developer-docs/extensions/overview/. Added the `.md`/`.mdx` extension to all 44 such links across 17 files; this makes Docusaurus resolve them to the canonical doc URL at the level, so SPA navigation works regardless of trailing slash. 3. Miscellaneous content fixes: - 4 `/configuration/feature-flags` references in 6.0.0 snapshot pointed at a page that doesn't exist in that version (the dedicated feature-flags page was added later). Repointed to the `#feature-flags` anchor inside `configuring-superset.mdx`. - 3 references to `superset-core/src/superset_core/rest_api/decorators.py` in extensions docs were rendered as relative URLs, resolving to /developer-docs/extensions/superset-core/... (404). Converted to absolute GitHub URLs. - 1 `/storybook/?path=...` link in extensions/components/index.mdx pointed at a non-existent route. Repointed to the existing `/developer-docs/testing/storybook` page that explains how to run Storybook locally. - 4 unclosed-paren markdown links in 6.0.0 installation-methods.mdx (pre-existing source bugs). Build now passes with `onBrokenLinks: 'throw'`. Note that `onBrokenAnchors` is still `'warn'` (default); a separate effort should tighten that and fix the surviving anchor warnings (currently ~60 instances of `/community#superset-community-calendar`). --- .../contributing/code-review.md | 2 +- .../contributing/issue-reporting.md | 4 +- docs/developer_docs/contributing/overview.md | 6 +- .../contributing/release-process.md | 2 +- .../contributing/submitting-pr.md | 4 +- .../developer_docs/extensions/architecture.md | 8 +- .../extensions/components/index.mdx | 4 +- .../extensions/contribution-types.md | 6 +- .../developer_docs/extensions/dependencies.md | 6 +- docs/developer_docs/extensions/development.md | 2 +- .../extensions/extension-points/editors.md | 2 +- .../extensions/extension-points/sqllab.md | 4 +- docs/developer_docs/extensions/mcp.md | 4 +- docs/developer_docs/extensions/overview.md | 20 ++-- docs/developer_docs/extensions/quick-start.md | 14 +-- docs/developer_docs/extensions/security.md | 2 +- .../frontend/component-style-guidelines.md | 2 +- docs/developer_docs/testing/overview.md | 8 +- docs/docusaurus.config.ts | 2 +- .../configuration/alerts-reports.mdx | 8 +- .../version-6.0.0/configuration/cache.mdx | 4 +- .../configuration/configuring-superset.mdx | 6 +- .../version-6.0.0/configuration/databases.mdx | 108 +++++++++--------- .../configuration/networking-settings.mdx | 2 +- .../configuration/sql-templating.mdx | 2 +- .../version-6.0.0/configuration/timezones.mdx | 2 +- .../contributing/contributing.mdx | 2 +- .../contributing/development.mdx | 4 +- .../version-6.0.0/contributing/guidelines.mdx | 2 +- docs/versioned_docs/version-6.0.0/faq.mdx | 14 +-- .../installation/architecture.mdx | 12 +- .../installation/docker-compose.mdx | 2 +- .../installation/installation-methods.mdx | 10 +- .../version-6.0.0/installation/kubernetes.mdx | 4 +- docs/versioned_docs/version-6.0.0/intro.md | 2 +- .../version-6.0.0/quickstart.mdx | 12 +- .../creating-your-first-dashboard.mdx | 4 +- 37 files changed, 151 insertions(+), 151 deletions(-) diff --git a/docs/developer_docs/contributing/code-review.md b/docs/developer_docs/contributing/code-review.md index a6a0ea29d74..3f1f9280942 100644 --- a/docs/developer_docs/contributing/code-review.md +++ b/docs/developer_docs/contributing/code-review.md @@ -336,4 +336,4 @@ stats.sort_stats('cumulative').print_stats(10) - [Best Practices for Code Review](https://smartbear.com/learn/code-review/best-practices-for-peer-code-review/) - [The Art of Readable Code](https://www.oreilly.com/library/view/the-art-of/9781449318482/) -Next: [Reporting issues effectively](./issue-reporting) +Next: [Reporting issues effectively](./issue-reporting.md) diff --git a/docs/developer_docs/contributing/issue-reporting.md b/docs/developer_docs/contributing/issue-reporting.md index de6d3e96c96..3bf1de8dc90 100644 --- a/docs/developer_docs/contributing/issue-reporting.md +++ b/docs/developer_docs/contributing/issue-reporting.md @@ -413,6 +413,6 @@ Consider: - **Feature Request**: Use feature request template - **Question**: Use GitHub Discussions - **Configuration Help**: Ask in Slack -- **Development Help**: See [Contributing Guide](./overview) +- **Development Help**: See [Contributing Guide](./overview.md) -Next: [Understanding the release process](./release-process) +Next: [Understanding the release process](./release-process.md) diff --git a/docs/developer_docs/contributing/overview.md b/docs/developer_docs/contributing/overview.md index 46958ea6249..b4d3bab085b 100644 --- a/docs/developer_docs/contributing/overview.md +++ b/docs/developer_docs/contributing/overview.md @@ -158,9 +158,9 @@ Security team members should also follow these general expectations: Ready to contribute? Here's how to get started: -1. **[Set up your environment](./development-setup)** - Get Superset running locally +1. **[Set up your environment](./development-setup.md)** - Get Superset running locally 2. **[Find something to work on](#types-of-contributions)** - Pick an issue or feature -3. **[Submit your contribution](./submitting-pr)** - Create a pull request -4. **[Follow guidelines](./guidelines)** - Ensure code quality +3. **[Submit your contribution](./submitting-pr.md)** - Create a pull request +4. **[Follow guidelines](./guidelines.md)** - Ensure code quality Welcome to the Apache Superset community! 🚀 diff --git a/docs/developer_docs/contributing/release-process.md b/docs/developer_docs/contributing/release-process.md index 32d375b2943..c0664cb0140 100644 --- a/docs/developer_docs/contributing/release-process.md +++ b/docs/developer_docs/contributing/release-process.md @@ -466,4 +466,4 @@ Credit: - [Release Scripts](https://github.com/apache/superset/tree/master/scripts/release) - [Superset Repository Scripts](https://github.com/apache/superset/tree/master/scripts) -Next: Return to [Contributing Overview](./overview) +Next: Return to [Contributing Overview](./overview.md) diff --git a/docs/developer_docs/contributing/submitting-pr.md b/docs/developer_docs/contributing/submitting-pr.md index 18479ae1cb8..42b12a46ea6 100644 --- a/docs/developer_docs/contributing/submitting-pr.md +++ b/docs/developer_docs/contributing/submitting-pr.md @@ -31,7 +31,7 @@ Learn how to create and submit high-quality pull requests to Apache Superset. ### Prerequisites - [ ] Development environment is set up - [ ] You've forked and cloned the repository -- [ ] You've read the [contributing overview](./overview) +- [ ] You've read the [contributing overview](./overview.md) - [ ] You've found or created an issue to work on ### PR Readiness Checklist @@ -318,4 +318,4 @@ git push origin master - **GitHub**: Tag @apache/superset-committers for attention - **Mailing List**: dev@superset.apache.org -Next: [Understanding code review process](./code-review) +Next: [Understanding code review process](./code-review.md) diff --git a/docs/developer_docs/extensions/architecture.md b/docs/developer_docs/extensions/architecture.md index 2dd642fd997..4a445703129 100644 --- a/docs/developer_docs/extensions/architecture.md +++ b/docs/developer_docs/extensions/architecture.md @@ -233,7 +233,7 @@ This architecture provides several key benefits: Now that you understand the architecture, explore: -- **[Dependencies](./dependencies)** - Managing dependencies and understanding API stability -- **[Quick Start](./quick-start)** - Build your first extension -- **[Contribution Types](./contribution-types)** - What kinds of extensions you can build -- **[Development](./development)** - Project structure, APIs, and development workflow +- **[Dependencies](./dependencies.md)** - Managing dependencies and understanding API stability +- **[Quick Start](./quick-start.md)** - Build your first extension +- **[Contribution Types](./contribution-types.md)** - What kinds of extensions you can build +- **[Development](./development.md)** - Project structure, APIs, and development workflow diff --git a/docs/developer_docs/extensions/components/index.mdx b/docs/developer_docs/extensions/components/index.mdx index d4b4eaa5921..0786fd0c801 100644 --- a/docs/developer_docs/extensions/components/index.mdx +++ b/docs/developer_docs/extensions/components/index.mdx @@ -29,7 +29,7 @@ These UI components are available to Superset extension developers through the ` ## Available Components -- [Alert](./alert) +- [Alert](./alert.mdx) ## Usage @@ -90,4 +90,4 @@ InteractiveMyComponent.argTypes = { ## Interactive Documentation -For interactive examples with controls, visit the [Storybook](/storybook/?path=/docs/extension-components--docs). +For interactive examples with controls, run Storybook locally — see the [Storybook documentation](/developer-docs/testing/storybook). diff --git a/docs/developer_docs/extensions/contribution-types.md b/docs/developer_docs/extensions/contribution-types.md index 6e66aa8a67c..5033806df59 100644 --- a/docs/developer_docs/extensions/contribution-types.md +++ b/docs/developer_docs/extensions/contribution-types.md @@ -146,7 +146,7 @@ class MyExtensionAPI(RestApi): from .api import MyExtensionAPI ``` -**Note**: The [`@api`](superset-core/src/superset_core/rest_api/decorators.py) decorator automatically detects context and generates appropriate paths: +**Note**: The [`@api`](https://github.com/apache/superset/blob/master/superset-core/src/superset_core/rest_api/decorators.py) decorator automatically detects context and generates appropriate paths: - **Extension context**: `/extensions/{publisher}/{name}/` with ID prefixed as `extensions.{publisher}.{name}.{id}` - **Host context**: `/api/v1/` with original ID @@ -193,7 +193,7 @@ def get_summary() -> dict: return {"status": "success", "result": {"queries_today": 42}} ``` -See [MCP Integration](./mcp) for implementation details. +See [MCP Integration](./mcp.md) for implementation details. ### MCP Prompts @@ -223,7 +223,7 @@ async def analysis_guide(ctx: Context) -> str: """ ``` -See [MCP Integration](./mcp) for implementation details. +See [MCP Integration](./mcp.md) for implementation details. ### Semantic Layers diff --git a/docs/developer_docs/extensions/dependencies.md b/docs/developer_docs/extensions/dependencies.md index 8fb9e61e988..a061028f8d7 100644 --- a/docs/developer_docs/extensions/dependencies.md +++ b/docs/developer_docs/extensions/dependencies.md @@ -161,6 +161,6 @@ Until then, monitor the Superset release notes and test your extensions with eac ## Next Steps -- **[Architecture](./architecture)** - Understand the extension system design -- **[Development](./development)** - Learn about APIs and development workflow -- **[Quick Start](./quick-start)** - Build your first extension +- **[Architecture](./architecture.md)** - Understand the extension system design +- **[Development](./development.md)** - Learn about APIs and development workflow +- **[Quick Start](./quick-start.md)** - Build your first extension diff --git a/docs/developer_docs/extensions/development.md b/docs/developer_docs/extensions/development.md index 838db2f1c76..939b1f2d846 100644 --- a/docs/developer_docs/extensions/development.md +++ b/docs/developer_docs/extensions/development.md @@ -252,7 +252,7 @@ class DatasetReferencesAPI(RestApi): ### Automatic Context Detection -The [`@api`](superset-core/src/superset_core/rest_api/decorators.py) decorator automatically detects whether it's being used in host or extension code: +The [`@api`](https://github.com/apache/superset/blob/master/superset-core/src/superset_core/rest_api/decorators.py) decorator automatically detects whether it's being used in host or extension code: - **Extension APIs**: Registered under `/extensions/{publisher}/{name}/` with IDs prefixed as `extensions.{publisher}.{name}.{id}` - **Host APIs**: Registered under `/api/v1/` with original IDs diff --git a/docs/developer_docs/extensions/extension-points/editors.md b/docs/developer_docs/extensions/extension-points/editors.md index 7eec293d8bd..a2d05cc5204 100644 --- a/docs/developer_docs/extensions/extension-points/editors.md +++ b/docs/developer_docs/extensions/extension-points/editors.md @@ -217,6 +217,6 @@ const disposable = handle.registerCompletionProvider(provider); ## Next Steps -- **[SQL Lab Extension Points](./sqllab)** - Learn about other SQL Lab customizations +- **[SQL Lab Extension Points](./sqllab.md)** - Learn about other SQL Lab customizations - **[Contribution Types](../contribution-types)** - Explore other contribution types - **[Development](../development)** - Set up your development environment diff --git a/docs/developer_docs/extensions/extension-points/sqllab.md b/docs/developer_docs/extensions/extension-points/sqllab.md index fd31f7b22b6..ef613cf12f0 100644 --- a/docs/developer_docs/extensions/extension-points/sqllab.md +++ b/docs/developer_docs/extensions/extension-points/sqllab.md @@ -51,7 +51,7 @@ SQL Lab provides 4 extension points where extensions can contribute custom UI co | **Right Sidebar** | `sqllab.rightSidebar` | ✓ | — | Custom panels (AI assistants, query analysis) | | **Panels** | `sqllab.panels` | ✓ | ✓ | Custom tabs + toolbar actions (data profiling) | -\*Editor views are contributed via [Editor Contributions](./editors), not standard view contributions. +\*Editor views are contributed via [Editor Contributions](./editors.md), not standard view contributions. ## Customization Types @@ -78,7 +78,7 @@ Extensions can add toolbar actions to **Left Sidebar**, **Editor**, and **Panels ### Custom Editors -Extensions can replace the default SQL editor with custom implementations (Monaco, CodeMirror, etc.). See [Editor Contributions](./editors) for details. +Extensions can replace the default SQL editor with custom implementations (Monaco, CodeMirror, etc.). See [Editor Contributions](./editors.md) for details. ## Examples diff --git a/docs/developer_docs/extensions/mcp.md b/docs/developer_docs/extensions/mcp.md index 4ba74e3540a..5fa7e6b41a0 100644 --- a/docs/developer_docs/extensions/mcp.md +++ b/docs/developer_docs/extensions/mcp.md @@ -455,5 +455,5 @@ async def metrics_guide(ctx: Context) -> str: ## Next Steps -- **[Development](./development)** - Project structure, APIs, and dev workflow -- **[Security](./security)** - Security best practices for extensions +- **[Development](./development.md)** - Project structure, APIs, and dev workflow +- **[Security](./security.md)** - Security best practices for extensions diff --git a/docs/developer_docs/extensions/overview.md b/docs/developer_docs/extensions/overview.md index c5ef59f428b..faee8c4c487 100644 --- a/docs/developer_docs/extensions/overview.md +++ b/docs/developer_docs/extensions/overview.md @@ -47,13 +47,13 @@ Extension developers have access to pre-built UI components via `@apache-superse ## Next Steps -- **[Quick Start](./quick-start)** - Build your first extension with a complete walkthrough -- **[Architecture](./architecture)** - Design principles and system overview -- **[Dependencies](./dependencies)** - Managing dependencies and understanding API stability -- **[Contribution Types](./contribution-types)** - Available extension points -- **[Development](./development)** - Project structure, APIs, and development workflow -- **[Deployment](./deployment)** - Packaging and deploying extensions -- **[MCP Integration](./mcp)** - Adding AI agent capabilities using extensions -- **[Security](./security)** - Security considerations and best practices -- **[Tasks](./tasks)** - Framework for creating and managing long running tasks -- **[Community Extensions](./registry)** - Browse extensions shared by the community +- **[Quick Start](./quick-start.md)** - Build your first extension with a complete walkthrough +- **[Architecture](./architecture.md)** - Design principles and system overview +- **[Dependencies](./dependencies.md)** - Managing dependencies and understanding API stability +- **[Contribution Types](./contribution-types.md)** - Available extension points +- **[Development](./development.md)** - Project structure, APIs, and development workflow +- **[Deployment](./deployment.md)** - Packaging and deploying extensions +- **[MCP Integration](./mcp.md)** - Adding AI agent capabilities using extensions +- **[Security](./security.md)** - Security considerations and best practices +- **[Tasks](./tasks.md)** - Framework for creating and managing long running tasks +- **[Community Extensions](./registry.md)** - Browse extensions shared by the community diff --git a/docs/developer_docs/extensions/quick-start.md b/docs/developer_docs/extensions/quick-start.md index f2c4388b8a5..818b68c3573 100644 --- a/docs/developer_docs/extensions/quick-start.md +++ b/docs/developer_docs/extensions/quick-start.md @@ -168,7 +168,7 @@ class HelloWorldAPI(RestApi): **Key points:** -- Uses [`@api`](superset-core/src/superset_core/rest_api/decorators.py) decorator with automatic context detection +- Uses [`@api`](https://github.com/apache/superset/blob/master/superset-core/src/superset_core/rest_api/decorators.py) decorator with automatic context detection - Extends `RestApi` from `superset_core.rest_api.api` - Uses Flask-AppBuilder decorators (`@expose`, `@protect`, `@safe`) - Returns responses using `self.response(status_code, result=data)` @@ -184,7 +184,7 @@ Replace the generated print statement with API import to trigger registration: from .api import HelloWorldAPI # noqa: F401 ``` -The [`@api`](superset-core/src/superset_core/rest_api/decorators.py) decorator automatically detects extension context and registers your API with proper namespacing. +The [`@api`](https://github.com/apache/superset/blob/master/superset-core/src/superset_core/rest_api/decorators.py) decorator automatically detects extension context and registers your API with proper namespacing. ## Step 5: Create Frontend Component @@ -496,7 +496,7 @@ Superset will extract and validate the extension metadata, load the assets, regi Here's what happens when your extension loads: 1. **Superset starts**: Reads `manifest.json` from the `.supx` bundle and loads the backend entrypoint -2. **Backend registration**: `entrypoint.py` imports your API class, triggering the [`@api`](superset-core/src/superset_core/rest_api/decorators.py) decorator to register it automatically +2. **Backend registration**: `entrypoint.py` imports your API class, triggering the [`@api`](https://github.com/apache/superset/blob/master/superset-core/src/superset_core/rest_api/decorators.py) decorator to register it automatically 3. **Frontend loads**: When SQL Lab opens, Superset fetches the remote entry file 4. **Module Federation**: Webpack loads your extension module and resolves `@apache-superset/core` to `window.superset` 5. **Registration**: The module executes at load time, calling `views.registerView` to register your panel @@ -509,9 +509,9 @@ Here's what happens when your extension loads: Now that you have a working extension, explore: -- **[Development](./development)** - Project structure, APIs, and development workflow -- **[Contribution Types](./contribution-types)** - Other contribution points beyond panels -- **[Deployment](./deployment)** - Packaging and deploying your extension -- **[Security](./security)** - Security best practices for extensions +- **[Development](./development.md)** - Project structure, APIs, and development workflow +- **[Contribution Types](./contribution-types.md)** - Other contribution points beyond panels +- **[Deployment](./deployment.md)** - Packaging and deploying your extension +- **[Security](./security.md)** - Security best practices for extensions For a complete real-world example, examine the query insights extension in the Superset codebase. diff --git a/docs/developer_docs/extensions/security.md b/docs/developer_docs/extensions/security.md index 102ad0c2855..8c905326939 100644 --- a/docs/developer_docs/extensions/security.md +++ b/docs/developer_docs/extensions/security.md @@ -28,7 +28,7 @@ By default, extensions are disabled and must be explicitly enabled by setting th For external extensions, administrators are responsible for evaluating and verifying the security of any extensions they choose to install, just as they would when installing third-party NPM or PyPI packages. At this stage, all extensions run in the same context as the host application, without additional sandboxing. This means that external extensions can impact the security and performance of a Superset environment in the same way as any other installed dependency. -We plan to introduce an optional sandboxed execution model for extensions in the future (as part of an additional SIP). Until then, administrators should exercise caution and follow best practices when selecting and deploying third-party extensions. A directory of community extensions is available in the [Community Extensions](./registry) page. Note that these extensions are not vetted by the Apache Superset project—administrators must evaluate each extension before installation. +We plan to introduce an optional sandboxed execution model for extensions in the future (as part of an additional SIP). Until then, administrators should exercise caution and follow best practices when selecting and deploying third-party extensions. A directory of community extensions is available in the [Community Extensions](./registry.md) page. Note that these extensions are not vetted by the Apache Superset project—administrators must evaluate each extension before installation. **Any performance or security vulnerabilities introduced by external extensions should be reported directly to the extension author, not as Superset vulnerabilities.** diff --git a/docs/developer_docs/guidelines/frontend/component-style-guidelines.md b/docs/developer_docs/guidelines/frontend/component-style-guidelines.md index faf1b179e75..76e5e7915de 100644 --- a/docs/developer_docs/guidelines/frontend/component-style-guidelines.md +++ b/docs/developer_docs/guidelines/frontend/component-style-guidelines.md @@ -31,7 +31,7 @@ This guide is intended primarily for reusable components. Whenever possible, all ## General Guidelines - We use [Ant Design](https://ant.design/) as our component library. Do not build a new component if Ant Design provides one but rather instead extend or customize what the library provides -- Always style your component using Emotion and always prefer the theme variables whenever applicable. See: [Emotion Styling Guidelines and Best Practices](./emotion-styling-guidelines) +- Always style your component using Emotion and always prefer the theme variables whenever applicable. See: [Emotion Styling Guidelines and Best Practices](./emotion-styling-guidelines.md) - All components should be made to be reusable whenever possible - All components should follow the structure and best practices as detailed below diff --git a/docs/developer_docs/testing/overview.md b/docs/developer_docs/testing/overview.md index 856b3990ae9..0fc04399958 100644 --- a/docs/developer_docs/testing/overview.md +++ b/docs/developer_docs/testing/overview.md @@ -37,16 +37,16 @@ Superset embraces a testing pyramid approach: ## Testing Documentation ### Frontend Testing -- **[Frontend Testing](./frontend-testing)** - Jest, React Testing Library, and component testing strategies +- **[Frontend Testing](./frontend-testing.md)** - Jest, React Testing Library, and component testing strategies ### Backend Testing -- **[Backend Testing](./backend-testing)** - pytest, database testing, and API testing patterns +- **[Backend Testing](./backend-testing.md)** - pytest, database testing, and API testing patterns ### End-to-End Testing -- **[E2E Testing](./e2e-testing)** - Playwright testing for complete user workflows +- **[E2E Testing](./e2e-testing.md)** - Playwright testing for complete user workflows ### CI/CD Integration -- **[CI/CD](./ci-cd)** - Continuous integration, automated testing, and deployment pipelines +- **[CI/CD](./ci-cd.md)** - Continuous integration, automated testing, and deployment pipelines ## Testing Tools & Frameworks diff --git a/docs/docusaurus.config.ts b/docs/docusaurus.config.ts index babacfe43d8..5a6c5b023c7 100644 --- a/docs/docusaurus.config.ts +++ b/docs/docusaurus.config.ts @@ -254,7 +254,7 @@ const config: Config = { 'Apache Superset is a modern data exploration and visualization platform', url: 'https://superset.apache.org', baseUrl: '/', - onBrokenLinks: 'warn', + onBrokenLinks: 'throw', markdown: { mermaid: true, hooks: { diff --git a/docs/versioned_docs/version-6.0.0/configuration/alerts-reports.mdx b/docs/versioned_docs/version-6.0.0/configuration/alerts-reports.mdx index a989bc63b8d..3bd6e334903 100644 --- a/docs/versioned_docs/version-6.0.0/configuration/alerts-reports.mdx +++ b/docs/versioned_docs/version-6.0.0/configuration/alerts-reports.mdx @@ -20,12 +20,12 @@ Alerts and reports are disabled by default. To turn them on, you need to do some #### In your `superset_config.py` or `superset_config_docker.py` -- `"ALERT_REPORTS"` [feature flag](/docs/6.0.0/configuration/configuring-superset#feature-flags) must be turned to True. +- `"ALERT_REPORTS"` [feature flag](/user-docs/6.0.0/configuration/configuring-superset#feature-flags) must be turned to True. - `beat_schedule` in CeleryConfig must contain schedule for `reports.scheduler`. - At least one of those must be configured, depending on what you want to use: - emails: `SMTP_*` settings - Slack messages: `SLACK_API_TOKEN` -- Users can customize the email subject by including date code placeholders, which will automatically be replaced with the corresponding UTC date when the email is sent. To enable this functionality, activate the `"DATE_FORMAT_IN_EMAIL_SUBJECT"` [feature flag](/docs/6.0.0/configuration/configuring-superset#feature-flags). This enables date formatting in email subjects, preventing all reporting emails from being grouped into the same thread (optional for the reporting feature). +- Users can customize the email subject by including date code placeholders, which will automatically be replaced with the corresponding UTC date when the email is sent. To enable this functionality, activate the `"DATE_FORMAT_IN_EMAIL_SUBJECT"` [feature flag](/user-docs/6.0.0/configuration/configuring-superset#feature-flags). This enables date formatting in email subjects, preventing all reporting emails from being grouped into the same thread (optional for the reporting feature). - Use date codes from [strftime.org](https://strftime.org/) to create the email subject. - If no date code is provided, the original string will be used as the email subject. @@ -38,7 +38,7 @@ Screenshots will be taken but no messages actually sent as long as `ALERT_REPORT - You must install a headless browser, for taking screenshots of the charts and dashboards. Only Firefox and Chrome are currently supported. > If you choose Chrome, you must also change the value of `WEBDRIVER_TYPE` to `"chrome"` in your `superset_config.py`. -Note: All the components required (Firefox headless browser, Redis, Postgres db, celery worker and celery beat) are present in the *dev* docker image if you are following [Installing Superset Locally](/docs/6.0.0/installation/docker-compose/). +Note: All the components required (Firefox headless browser, Redis, Postgres db, celery worker and celery beat) are present in the *dev* docker image if you are following [Installing Superset Locally](/user-docs/6.0.0/installation/docker-compose/). All you need to do is add the required config variables described in this guide (See `Detailed Config`). If you are running a non-dev docker image, e.g., a stable release like `apache/superset:3.1.0`, that image does not include a headless browser. Only the `superset_worker` container needs this headless browser to browse to the target chart or dashboard. @@ -70,7 +70,7 @@ Note: when you configure an alert or a report, the Slack channel list takes chan ### Kubernetes-specific - You must have a `celery beat` pod running. If you're using the chart included in the GitHub repository under [helm/superset](https://github.com/apache/superset/tree/master/helm/superset), you need to put `supersetCeleryBeat.enabled = true` in your values override. -- You can see the dedicated docs about [Kubernetes installation](/docs/6.0.0/installation/kubernetes) for more details. +- You can see the dedicated docs about [Kubernetes installation](/user-docs/6.0.0/installation/kubernetes) for more details. ### Docker Compose specific diff --git a/docs/versioned_docs/version-6.0.0/configuration/cache.mdx b/docs/versioned_docs/version-6.0.0/configuration/cache.mdx index 2f60785c5ed..eb778377bb8 100644 --- a/docs/versioned_docs/version-6.0.0/configuration/cache.mdx +++ b/docs/versioned_docs/version-6.0.0/configuration/cache.mdx @@ -78,11 +78,11 @@ Caching for SQL Lab query results is used when async queries are enabled and is Note that this configuration does not use a flask-caching dictionary for its configuration, but instead requires a cachelib object. -See [Async Queries via Celery](/docs/6.0.0/configuration/async-queries-celery) for details. +See [Async Queries via Celery](/user-docs/6.0.0/configuration/async-queries-celery) for details. ## Caching Thumbnails -This is an optional feature that can be turned on by activating its [feature flag](/docs/6.0.0/configuration/configuring-superset#feature-flags) on config: +This is an optional feature that can be turned on by activating its [feature flag](/user-docs/6.0.0/configuration/configuring-superset#feature-flags) on config: ``` FEATURE_FLAGS = { diff --git a/docs/versioned_docs/version-6.0.0/configuration/configuring-superset.mdx b/docs/versioned_docs/version-6.0.0/configuration/configuring-superset.mdx index a61d05ecfe4..0919ed24c1a 100644 --- a/docs/versioned_docs/version-6.0.0/configuration/configuring-superset.mdx +++ b/docs/versioned_docs/version-6.0.0/configuration/configuring-superset.mdx @@ -37,7 +37,7 @@ ENV SUPERSET_CONFIG_PATH /app/superset_config.py ``` Docker compose deployments handle application configuration differently using specific conventions. -Refer to the [docker compose tips & configuration](/docs/6.0.0/installation/docker-compose#docker-compose-tips--configuration) +Refer to the [docker compose tips & configuration](/user-docs/6.0.0/installation/docker-compose#docker-compose-tips--configuration) for details. The following is an example of just a few of the parameters you can set in your `superset_config.py` file: @@ -254,7 +254,7 @@ flask --app "superset.app:create_app(superset_app_root='/analytics')" ### Docker builds -The [docker compose](/docs/6.0.0/installation/docker-compose#configuring-further) developer +The [docker compose](/user-docs/6.0.0/installation/docker-compose#configuring-further) developer configuration includes an additional environmental variable, [`SUPERSET_APP_ROOT`](https://github.com/apache/superset/blob/master/docker/.env), to simplify the process of setting up a non-default root path across the services. @@ -449,4 +449,4 @@ FEATURE_FLAGS = { } ``` -A current list of feature flags can be found in the [Feature Flags](/docs/6.0.0/configuration/feature-flags) documentation. +A current list of feature flags can be found in the [Feature Flags](/user-docs/6.0.0/configuration/configuring-superset#feature-flags) documentation. diff --git a/docs/versioned_docs/version-6.0.0/configuration/databases.mdx b/docs/versioned_docs/version-6.0.0/configuration/databases.mdx index 5c344c70223..928856b2fed 100644 --- a/docs/versioned_docs/version-6.0.0/configuration/databases.mdx +++ b/docs/versioned_docs/version-6.0.0/configuration/databases.mdx @@ -14,7 +14,7 @@ in your environment. You’ll need to install the required packages for the database you want to use as your metadata database as well as the packages needed to connect to the databases you want to access through Superset. For information about setting up Superset's metadata database, please refer to -installation documentations ([Docker Compose](/docs/6.0.0/installation/docker-compose), [Kubernetes](/docs/6.0.0/installation/kubernetes)) +installation documentations ([Docker Compose](/user-docs/6.0.0/installation/docker-compose), [Kubernetes](/user-docs/6.0.0/installation/kubernetes)) ::: This documentation tries to keep pointer to the different drivers for commonly used database @@ -26,7 +26,7 @@ Superset requires a Python [DB-API database driver](https://peps.python.org/pep- and a [SQLAlchemy dialect](https://docs.sqlalchemy.org/en/20/dialects/) to be installed for each database engine you want to connect to. -You can read more [here](/docs/6.0.0/configuration/databases#installing-drivers-in-docker-images) about how to +You can read more [here](/user-docs/6.0.0/configuration/databases#installing-drivers-in-docker-images) about how to install new database drivers into your Superset configuration. ### Supported Databases and Dependencies @@ -37,53 +37,53 @@ are compatible with Superset. |
Database
| PyPI package | Connection String | | --------------------------------------------------------- | ---------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | -| [AWS Athena](/docs/6.0.0/configuration/databases#aws-athena) | `pip install pyathena[pandas]` , `pip install PyAthenaJDBC` | `awsathena+rest://{access_key_id}:{access_key}@athena.{region}.amazonaws.com/{schema}?s3_staging_dir={s3_staging_dir}&...` | -| [AWS DynamoDB](/docs/6.0.0/configuration/databases#aws-dynamodb) | `pip install pydynamodb` | `dynamodb://{access_key_id}:{secret_access_key}@dynamodb.{region_name}.amazonaws.com?connector=superset` | -| [AWS Redshift](/docs/6.0.0/configuration/databases#aws-redshift) | `pip install sqlalchemy-redshift` | `redshift+psycopg2://:@:5439/` | -| [Apache Doris](/docs/6.0.0/configuration/databases#apache-doris) | `pip install pydoris` | `doris://:@:/.` | -| [Apache Drill](/docs/6.0.0/configuration/databases#apache-drill) | `pip install sqlalchemy-drill` | `drill+sadrill://:@:/`, often useful: `?use_ssl=True/False` | -| [Apache Druid](/docs/6.0.0/configuration/databases#apache-druid) | `pip install pydruid` | `druid://:@:/druid/v2/sql` | -| [Apache Hive](/docs/6.0.0/configuration/databases#hive) | `pip install pyhive` | `hive://hive@{hostname}:{port}/{database}` | -| [Apache Impala](/docs/6.0.0/configuration/databases#apache-impala) | `pip install impyla` | `impala://{hostname}:{port}/{database}` | -| [Apache Kylin](/docs/6.0.0/configuration/databases#apache-kylin) | `pip install kylinpy` | `kylin://:@:/?=&=` | -| [Apache Pinot](/docs/6.0.0/configuration/databases#apache-pinot) | `pip install pinotdb` | `pinot://BROKER:5436/query?server=http://CONTROLLER:5983/` | -| [Apache Solr](/docs/6.0.0/configuration/databases#apache-solr) | `pip install sqlalchemy-solr` | `solr://{username}:{password}@{hostname}:{port}/{server_path}/{collection}` | -| [Apache Spark SQL](/docs/6.0.0/configuration/databases#apache-spark-sql) | `pip install pyhive` | `hive://hive@{hostname}:{port}/{database}` | -| [Ascend.io](/docs/6.0.0/configuration/databases#ascendio) | `pip install impyla` | `ascend://{username}:{password}@{hostname}:{port}/{database}?auth_mechanism=PLAIN;use_ssl=true` | -| [Azure MS SQL](/docs/6.0.0/configuration/databases#sql-server) | `pip install pymssql` | `mssql+pymssql://UserName@presetSQL:TestPassword@presetSQL.database.windows.net:1433/TestSchema` | -| [ClickHouse](/docs/6.0.0/configuration/databases#clickhouse) | `pip install clickhouse-connect` | `clickhousedb://{username}:{password}@{hostname}:{port}/{database}` | -| [CockroachDB](/docs/6.0.0/configuration/databases#cockroachdb) | `pip install cockroachdb` | `cockroachdb://root@{hostname}:{port}/{database}?sslmode=disable` | -| [Couchbase](/docs/6.0.0/configuration/databases#couchbase) | `pip install couchbase-sqlalchemy` | `couchbase://{username}:{password}@{hostname}:{port}?truststorepath={ssl certificate path}` | -| [CrateDB](/docs/6.0.0/configuration/databases#cratedb) | `pip install sqlalchemy-cratedb` | `crate://{username}:{password}@{hostname}:{port}`, often useful: `?ssl=true/false` or `?schema=testdrive`. | -| [Denodo](/docs/6.0.0/configuration/databases#denodo) | `pip install denodo-sqlalchemy` | `denodo://{username}:{password}@{hostname}:{port}/{database}` | -| [Dremio](/docs/6.0.0/configuration/databases#dremio) | `pip install sqlalchemy_dremio` |`dremio+flight://{username}:{password}@{host}:32010`, often useful: `?UseEncryption=true/false`. For Legacy ODBC: `dremio+pyodbc://{username}:{password}@{host}:31010` | -| [Elasticsearch](/docs/6.0.0/configuration/databases#elasticsearch) | `pip install elasticsearch-dbapi` | `elasticsearch+http://{user}:{password}@{host}:9200/` | -| [Exasol](/docs/6.0.0/configuration/databases#exasol) | `pip install sqlalchemy-exasol` | `exa+pyodbc://{username}:{password}@{hostname}:{port}/my_schema?CONNECTIONLCALL=en_US.UTF-8&driver=EXAODBC` | -| [Google BigQuery](/docs/6.0.0/configuration/databases#google-bigquery) | `pip install sqlalchemy-bigquery` | `bigquery://{project_id}` | -| [Google Sheets](/docs/6.0.0/configuration/databases#google-sheets) | `pip install shillelagh[gsheetsapi]` | `gsheets://` | -| [Firebolt](/docs/6.0.0/configuration/databases#firebolt) | `pip install firebolt-sqlalchemy` | `firebolt://{client_id}:{client_secret}@{database}/{engine_name}?account_name={name}` | -| [Hologres](/docs/6.0.0/configuration/databases#hologres) | `pip install psycopg2` | `postgresql+psycopg2://:@/` | -| [IBM Db2](/docs/6.0.0/configuration/databases#ibm-db2) | `pip install ibm_db_sa` | `db2+ibm_db://` | -| [IBM Netezza Performance Server](/docs/6.0.0/configuration/databases#ibm-netezza-performance-server) | `pip install nzalchemy` | `netezza+nzpy://:@/` | -| [MySQL](/docs/6.0.0/configuration/databases#mysql) | `pip install mysqlclient` | `mysql://:@/` | -| [OceanBase](/docs/6.0.0/configuration/databases#oceanbase) | `pip install oceanbase_py` | `oceanbase://:@/` | -| [Oracle](/docs/6.0.0/configuration/databases#oracle) | `pip install cx_Oracle` | `oracle://:@:` | -| [Parseable](/docs/6.0.0/configuration/databases#parseable) | `pip install sqlalchemy-parseable` | `parseable://:@/` | -| [PostgreSQL](/docs/6.0.0/configuration/databases#postgres) | `pip install psycopg2` | `postgresql://:@/` | -| [Presto](/docs/6.0.0/configuration/databases#presto) | `pip install pyhive` | `presto://{username}:{password}@{hostname}:{port}/{database}` | -| [SAP Hana](/docs/6.0.0/configuration/databases#hana) | `pip install hdbcli sqlalchemy-hana` or `pip install apache_superset[hana]` | `hana://{username}:{password}@{host}:{port}` | -| [SingleStore](/docs/6.0.0/configuration/databases#singlestore) | `pip install sqlalchemy-singlestoredb` | `singlestoredb://{username}:{password}@{host}:{port}/{database}` | -| [StarRocks](/docs/6.0.0/configuration/databases#starrocks) | `pip install starrocks` | `starrocks://:@:/.` | -| [Snowflake](/docs/6.0.0/configuration/databases#snowflake) | `pip install snowflake-sqlalchemy` | `snowflake://{user}:{password}@{account}.{region}/{database}?role={role}&warehouse={warehouse}` | +| [AWS Athena](/user-docs/6.0.0/configuration/databases#aws-athena) | `pip install pyathena[pandas]` , `pip install PyAthenaJDBC` | `awsathena+rest://{access_key_id}:{access_key}@athena.{region}.amazonaws.com/{schema}?s3_staging_dir={s3_staging_dir}&...` | +| [AWS DynamoDB](/user-docs/6.0.0/configuration/databases#aws-dynamodb) | `pip install pydynamodb` | `dynamodb://{access_key_id}:{secret_access_key}@dynamodb.{region_name}.amazonaws.com?connector=superset` | +| [AWS Redshift](/user-docs/6.0.0/configuration/databases#aws-redshift) | `pip install sqlalchemy-redshift` | `redshift+psycopg2://:@:5439/` | +| [Apache Doris](/user-docs/6.0.0/configuration/databases#apache-doris) | `pip install pydoris` | `doris://:@:/.` | +| [Apache Drill](/user-docs/6.0.0/configuration/databases#apache-drill) | `pip install sqlalchemy-drill` | `drill+sadrill://:@:/`, often useful: `?use_ssl=True/False` | +| [Apache Druid](/user-docs/6.0.0/configuration/databases#apache-druid) | `pip install pydruid` | `druid://:@:/druid/v2/sql` | +| [Apache Hive](/user-docs/6.0.0/configuration/databases#hive) | `pip install pyhive` | `hive://hive@{hostname}:{port}/{database}` | +| [Apache Impala](/user-docs/6.0.0/configuration/databases#apache-impala) | `pip install impyla` | `impala://{hostname}:{port}/{database}` | +| [Apache Kylin](/user-docs/6.0.0/configuration/databases#apache-kylin) | `pip install kylinpy` | `kylin://:@:/?=&=` | +| [Apache Pinot](/user-docs/6.0.0/configuration/databases#apache-pinot) | `pip install pinotdb` | `pinot://BROKER:5436/query?server=http://CONTROLLER:5983/` | +| [Apache Solr](/user-docs/6.0.0/configuration/databases#apache-solr) | `pip install sqlalchemy-solr` | `solr://{username}:{password}@{hostname}:{port}/{server_path}/{collection}` | +| [Apache Spark SQL](/user-docs/6.0.0/configuration/databases#apache-spark-sql) | `pip install pyhive` | `hive://hive@{hostname}:{port}/{database}` | +| [Ascend.io](/user-docs/6.0.0/configuration/databases#ascendio) | `pip install impyla` | `ascend://{username}:{password}@{hostname}:{port}/{database}?auth_mechanism=PLAIN;use_ssl=true` | +| [Azure MS SQL](/user-docs/6.0.0/configuration/databases#sql-server) | `pip install pymssql` | `mssql+pymssql://UserName@presetSQL:TestPassword@presetSQL.database.windows.net:1433/TestSchema` | +| [ClickHouse](/user-docs/6.0.0/configuration/databases#clickhouse) | `pip install clickhouse-connect` | `clickhousedb://{username}:{password}@{hostname}:{port}/{database}` | +| [CockroachDB](/user-docs/6.0.0/configuration/databases#cockroachdb) | `pip install cockroachdb` | `cockroachdb://root@{hostname}:{port}/{database}?sslmode=disable` | +| [Couchbase](/user-docs/6.0.0/configuration/databases#couchbase) | `pip install couchbase-sqlalchemy` | `couchbase://{username}:{password}@{hostname}:{port}?truststorepath={ssl certificate path}` | +| [CrateDB](/user-docs/6.0.0/configuration/databases#cratedb) | `pip install sqlalchemy-cratedb` | `crate://{username}:{password}@{hostname}:{port}`, often useful: `?ssl=true/false` or `?schema=testdrive`. | +| [Denodo](/user-docs/6.0.0/configuration/databases#denodo) | `pip install denodo-sqlalchemy` | `denodo://{username}:{password}@{hostname}:{port}/{database}` | +| [Dremio](/user-docs/6.0.0/configuration/databases#dremio) | `pip install sqlalchemy_dremio` |`dremio+flight://{username}:{password}@{host}:32010`, often useful: `?UseEncryption=true/false`. For Legacy ODBC: `dremio+pyodbc://{username}:{password}@{host}:31010` | +| [Elasticsearch](/user-docs/6.0.0/configuration/databases#elasticsearch) | `pip install elasticsearch-dbapi` | `elasticsearch+http://{user}:{password}@{host}:9200/` | +| [Exasol](/user-docs/6.0.0/configuration/databases#exasol) | `pip install sqlalchemy-exasol` | `exa+pyodbc://{username}:{password}@{hostname}:{port}/my_schema?CONNECTIONLCALL=en_US.UTF-8&driver=EXAODBC` | +| [Google BigQuery](/user-docs/6.0.0/configuration/databases#google-bigquery) | `pip install sqlalchemy-bigquery` | `bigquery://{project_id}` | +| [Google Sheets](/user-docs/6.0.0/configuration/databases#google-sheets) | `pip install shillelagh[gsheetsapi]` | `gsheets://` | +| [Firebolt](/user-docs/6.0.0/configuration/databases#firebolt) | `pip install firebolt-sqlalchemy` | `firebolt://{client_id}:{client_secret}@{database}/{engine_name}?account_name={name}` | +| [Hologres](/user-docs/6.0.0/configuration/databases#hologres) | `pip install psycopg2` | `postgresql+psycopg2://:@/` | +| [IBM Db2](/user-docs/6.0.0/configuration/databases#ibm-db2) | `pip install ibm_db_sa` | `db2+ibm_db://` | +| [IBM Netezza Performance Server](/user-docs/6.0.0/configuration/databases#ibm-netezza-performance-server) | `pip install nzalchemy` | `netezza+nzpy://:@/` | +| [MySQL](/user-docs/6.0.0/configuration/databases#mysql) | `pip install mysqlclient` | `mysql://:@/` | +| [OceanBase](/user-docs/6.0.0/configuration/databases#oceanbase) | `pip install oceanbase_py` | `oceanbase://:@/` | +| [Oracle](/user-docs/6.0.0/configuration/databases#oracle) | `pip install cx_Oracle` | `oracle://:@:` | +| [Parseable](/user-docs/6.0.0/configuration/databases#parseable) | `pip install sqlalchemy-parseable` | `parseable://:@/` | +| [PostgreSQL](/user-docs/6.0.0/configuration/databases#postgres) | `pip install psycopg2` | `postgresql://:@/` | +| [Presto](/user-docs/6.0.0/configuration/databases#presto) | `pip install pyhive` | `presto://{username}:{password}@{hostname}:{port}/{database}` | +| [SAP Hana](/user-docs/6.0.0/configuration/databases#hana) | `pip install hdbcli sqlalchemy-hana` or `pip install apache_superset[hana]` | `hana://{username}:{password}@{host}:{port}` | +| [SingleStore](/user-docs/6.0.0/configuration/databases#singlestore) | `pip install sqlalchemy-singlestoredb` | `singlestoredb://{username}:{password}@{host}:{port}/{database}` | +| [StarRocks](/user-docs/6.0.0/configuration/databases#starrocks) | `pip install starrocks` | `starrocks://:@:/.` | +| [Snowflake](/user-docs/6.0.0/configuration/databases#snowflake) | `pip install snowflake-sqlalchemy` | `snowflake://{user}:{password}@{account}.{region}/{database}?role={role}&warehouse={warehouse}` | | SQLite | No additional library needed | `sqlite://path/to/file.db?check_same_thread=false` | -| [SQL Server](/docs/6.0.0/configuration/databases#sql-server) | `pip install pymssql` | `mssql+pymssql://:@:/` | -| [TDengine](/docs/6.0.0/configuration/databases#tdengine) | `pip install taospy` `pip install taos-ws-py` | `taosws://:@:` | -| [Teradata](/docs/6.0.0/configuration/databases#teradata) | `pip install teradatasqlalchemy` | `teradatasql://{user}:{password}@{host}` | -| [TimescaleDB](/docs/6.0.0/configuration/databases#timescaledb) | `pip install psycopg2` | `postgresql://:@:/` | -| [Trino](/docs/6.0.0/configuration/databases#trino) | `pip install trino` | `trino://{username}:{password}@{hostname}:{port}/{catalog}` | -| [Vertica](/docs/6.0.0/configuration/databases#vertica) | `pip install sqlalchemy-vertica-python` | `vertica+vertica_python://:@/` | -| [YDB](/docs/6.0.0/configuration/databases#ydb) | `pip install ydb-sqlalchemy` | `ydb://{host}:{port}/{database_name}` | -| [YugabyteDB](/docs/6.0.0/configuration/databases#yugabytedb) | `pip install psycopg2` | `postgresql://:@/` | +| [SQL Server](/user-docs/6.0.0/configuration/databases#sql-server) | `pip install pymssql` | `mssql+pymssql://:@:/` | +| [TDengine](/user-docs/6.0.0/configuration/databases#tdengine) | `pip install taospy` `pip install taos-ws-py` | `taosws://:@:` | +| [Teradata](/user-docs/6.0.0/configuration/databases#teradata) | `pip install teradatasqlalchemy` | `teradatasql://{user}:{password}@{host}` | +| [TimescaleDB](/user-docs/6.0.0/configuration/databases#timescaledb) | `pip install psycopg2` | `postgresql://:@:/` | +| [Trino](/user-docs/6.0.0/configuration/databases#trino) | `pip install trino` | `trino://{username}:{password}@{hostname}:{port}/{catalog}` | +| [Vertica](/user-docs/6.0.0/configuration/databases#vertica) | `pip install sqlalchemy-vertica-python` | `vertica+vertica_python://:@/` | +| [YDB](/user-docs/6.0.0/configuration/databases#ydb) | `pip install ydb-sqlalchemy` | `ydb://{host}:{port}/{database_name}` | +| [YugabyteDB](/user-docs/6.0.0/configuration/databases#yugabytedb) | `pip install psycopg2` | `postgresql://:@/` | --- @@ -109,7 +109,7 @@ The connector library installation process is the same for all additional librar #### 1. Determine the driver you need -Consult the [list of database drivers](/docs/6.0.0/configuration/databases) +Consult the [list of database drivers](/user-docs/6.0.0/configuration/databases) and find the PyPI package needed to connect to your database. In this example, we're connecting to a MySQL database, so we'll need the `mysqlclient` connector library. @@ -165,11 +165,11 @@ to your database via the Superset web UI. As an admin user, go to Settings -> Data: Database Connections and click the +DATABASE button. From there, follow the steps on the -[Using Database Connection UI page](/docs/6.0.0/configuration/databases#connecting-through-the-ui). +[Using Database Connection UI page](/user-docs/6.0.0/configuration/databases#connecting-through-the-ui). Consult the page for your specific database type in the Superset documentation to determine the connection string and any other parameters you need to input. For instance, -on the [MySQL page](/docs/6.0.0/configuration/databases#mysql), we see that the connection string +on the [MySQL page](/user-docs/6.0.0/configuration/databases#mysql), we see that the connection string to a local MySQL database differs depending on whether the setup is running on Linux or Mac. Click the “Test Connection” button, which should result in a popup message saying, @@ -407,7 +407,7 @@ this: crate://:@.cratedb.net:4200/?ssl=true ``` -Follow the steps [here](/docs/6.0.0/configuration/databases#installing-database-drivers) +Follow the steps [here](/user-docs/6.0.0/configuration/databases#installing-database-drivers) to install the CrateDB connector package when setting up Superset locally using Docker Compose. @@ -782,7 +782,7 @@ The recommended connector library for BigQuery is ##### Install BigQuery Driver -Follow the steps [here](/docs/6.0.0/configuration/databases#installing-drivers-in-docker-images) about how to +Follow the steps [here](/user-docs/6.0.0/configuration/databases#installing-drivers-in-docker-images) about how to install new database drivers when setting up Superset locally via docker compose. ```bash @@ -1177,7 +1177,7 @@ risingwave://root@{hostname}:{port}/{database}?sslmode=disable ##### Install Snowflake Driver -Follow the steps [here](/docs/6.0.0/configuration/databases#installing-database-drivers) about how to +Follow the steps [here](/user-docs/6.0.0/configuration/databases#installing-database-drivers) about how to install new database drivers when setting up Superset locally via docker compose. ```bash diff --git a/docs/versioned_docs/version-6.0.0/configuration/networking-settings.mdx b/docs/versioned_docs/version-6.0.0/configuration/networking-settings.mdx index d26d87382a3..abdea435e0d 100644 --- a/docs/versioned_docs/version-6.0.0/configuration/networking-settings.mdx +++ b/docs/versioned_docs/version-6.0.0/configuration/networking-settings.mdx @@ -51,7 +51,7 @@ Restart Superset for this configuration change to take effect. #### Making a Dashboard Public -1. Add the `'DASHBOARD_RBAC': True` [Feature Flag](/docs/6.0.0/configuration/feature-flags) to `superset_config.py` +1. Add the `'DASHBOARD_RBAC': True` [Feature Flag](/user-docs/6.0.0/configuration/configuring-superset#feature-flags) to `superset_config.py` 2. Add the `Public` role to your dashboard as described [here](https://superset.apache.org/docs/using-superset/creating-your-first-dashboard/#manage-access-to-dashboards) #### Embedding a Public Dashboard diff --git a/docs/versioned_docs/version-6.0.0/configuration/sql-templating.mdx b/docs/versioned_docs/version-6.0.0/configuration/sql-templating.mdx index 9af4f61dbbe..500bad6fb3d 100644 --- a/docs/versioned_docs/version-6.0.0/configuration/sql-templating.mdx +++ b/docs/versioned_docs/version-6.0.0/configuration/sql-templating.mdx @@ -10,7 +10,7 @@ version: 1 ## Jinja Templates SQL Lab and Explore supports [Jinja templating](https://jinja.palletsprojects.com/en/2.11.x/) in queries. -To enable templating, the `ENABLE_TEMPLATE_PROCESSING` [feature flag](/docs/6.0.0/configuration/configuring-superset#feature-flags) needs to be enabled in +To enable templating, the `ENABLE_TEMPLATE_PROCESSING` [feature flag](/user-docs/6.0.0/configuration/configuring-superset#feature-flags) needs to be enabled in `superset_config.py`. When templating is enabled, python code can be embedded in virtual datasets and in Custom SQL in the filter and metric controls in Explore. By default, the following variables are made available in the Jinja context: diff --git a/docs/versioned_docs/version-6.0.0/configuration/timezones.mdx b/docs/versioned_docs/version-6.0.0/configuration/timezones.mdx index d27901970dd..920e0a00e94 100644 --- a/docs/versioned_docs/version-6.0.0/configuration/timezones.mdx +++ b/docs/versioned_docs/version-6.0.0/configuration/timezones.mdx @@ -20,7 +20,7 @@ To help make the problem somewhat tractable—given that Apache Superset has no To strive for data consistency (regardless of the timezone of the client) the Apache Superset backend tries to ensure that any timestamp sent to the client has an explicit (or semi-explicit as in the case with [Epoch time](https://en.wikipedia.org/wiki/Unix_time) which is always in reference to UTC) timezone encoded within. -The challenge however lies with the slew of [database engines](/docs/6.0.0/configuration/databases#installing-drivers-in-docker-images) which Apache Superset supports and various inconsistencies between their [Python Database API (DB-API)](https://www.python.org/dev/peps/pep-0249/) implementations combined with the fact that we use [Pandas](https://pandas.pydata.org/) to read SQL into a DataFrame prior to serializing to JSON. Regrettably Pandas ignores the DB-API [type_code](https://www.python.org/dev/peps/pep-0249/#type-objects) relying by default on the underlying Python type returned by the DB-API. Currently only a subset of the supported database engines work correctly with Pandas, i.e., ensuring timestamps without an explicit timestamp are serializd to JSON with the server timezone, thus guaranteeing the client will display timestamps in a consistent manner irrespective of the client's timezone. +The challenge however lies with the slew of [database engines](/user-docs/6.0.0/configuration/databases#installing-drivers-in-docker-images) which Apache Superset supports and various inconsistencies between their [Python Database API (DB-API)](https://www.python.org/dev/peps/pep-0249/) implementations combined with the fact that we use [Pandas](https://pandas.pydata.org/) to read SQL into a DataFrame prior to serializing to JSON. Regrettably Pandas ignores the DB-API [type_code](https://www.python.org/dev/peps/pep-0249/#type-objects) relying by default on the underlying Python type returned by the DB-API. Currently only a subset of the supported database engines work correctly with Pandas, i.e., ensuring timestamps without an explicit timestamp are serializd to JSON with the server timezone, thus guaranteeing the client will display timestamps in a consistent manner irrespective of the client's timezone. For example the following is a comparison of MySQL and Presto, diff --git a/docs/versioned_docs/version-6.0.0/contributing/contributing.mdx b/docs/versioned_docs/version-6.0.0/contributing/contributing.mdx index c151eb28b7c..607fed1b24d 100644 --- a/docs/versioned_docs/version-6.0.0/contributing/contributing.mdx +++ b/docs/versioned_docs/version-6.0.0/contributing/contributing.mdx @@ -77,7 +77,7 @@ Look through the GitHub issues. Issues tagged with Superset could always use better documentation, whether as part of the official Superset docs, in docstrings, `docs/*.rst` or even on the web as blog posts or -articles. See [Documentation](/docs/6.0.0/contributing/howtos#contributing-to-documentation) for more details. +articles. See [Documentation](/user-docs/6.0.0/contributing/howtos#contributing-to-documentation) for more details. ### Add Translations diff --git a/docs/versioned_docs/version-6.0.0/contributing/development.mdx b/docs/versioned_docs/version-6.0.0/contributing/development.mdx index afe11139957..3c12088d8ae 100644 --- a/docs/versioned_docs/version-6.0.0/contributing/development.mdx +++ b/docs/versioned_docs/version-6.0.0/contributing/development.mdx @@ -599,7 +599,7 @@ export enum FeatureFlag { those specified under FEATURE_FLAGS in `superset_config.py`. For example, `DEFAULT_FEATURE_FLAGS = { 'FOO': True, 'BAR': False }` in `superset/config.py` and `FEATURE_FLAGS = { 'BAR': True, 'BAZ': True }` in `superset_config.py` will result in combined feature flags of `{ 'FOO': True, 'BAR': True, 'BAZ': True }`. -The current status of the usability of each flag (stable vs testing, etc) can be found in the [Feature Flags](/docs/6.0.0/configuration/feature-flags) documentation. +The current status of the usability of each flag (stable vs testing, etc) can be found in the [Feature Flags](/user-docs/6.0.0/configuration/configuring-superset#feature-flags) documentation. ## Git Hooks @@ -614,7 +614,7 @@ A series of checks will now run when you make a git commit. ## Linting -See [how tos](/docs/6.0.0/contributing/howtos#linting) +See [how tos](/user-docs/6.0.0/contributing/howtos#linting) ## GitHub Actions and `act` diff --git a/docs/versioned_docs/version-6.0.0/contributing/guidelines.mdx b/docs/versioned_docs/version-6.0.0/contributing/guidelines.mdx index 26861553469..a6d609744d6 100644 --- a/docs/versioned_docs/version-6.0.0/contributing/guidelines.mdx +++ b/docs/versioned_docs/version-6.0.0/contributing/guidelines.mdx @@ -57,7 +57,7 @@ Finally, never submit a PR that will put master branch in broken state. If the P in `requirements.txt` pinned to a specific version which ensures that the application build is deterministic. - For TypeScript/JavaScript, include new libraries in `package.json` -- **Tests:** The pull request should include tests, either as doctests, unit tests, or both. Make sure to resolve all errors and test failures. See [Testing](/docs/6.0.0/contributing/howtos#testing) for how to run tests. +- **Tests:** The pull request should include tests, either as doctests, unit tests, or both. Make sure to resolve all errors and test failures. See [Testing](/user-docs/6.0.0/contributing/howtos#testing) for how to run tests. - **Documentation:** If the pull request adds functionality, the docs should be updated as part of the same PR. - **CI:** Reviewers will not review the code until all CI tests are passed. Sometimes there can be flaky tests. You can close and open PR to re-run CI test. Please report if the issue persists. After the CI fix has been deployed to `master`, please rebase your PR. - **Code coverage:** Please ensure that code coverage does not decrease. diff --git a/docs/versioned_docs/version-6.0.0/faq.mdx b/docs/versioned_docs/version-6.0.0/faq.mdx index 3a3b57f82b8..cbd4da1edca 100644 --- a/docs/versioned_docs/version-6.0.0/faq.mdx +++ b/docs/versioned_docs/version-6.0.0/faq.mdx @@ -51,11 +51,11 @@ multiple tables as long as your database account has access to the tables. ## How do I create my own visualization? We recommend reading the instructions in -[Creating Visualization Plugins](/docs/6.0.0/contributing/howtos#creating-visualization-plugins). +[Creating Visualization Plugins](/user-docs/6.0.0/contributing/howtos#creating-visualization-plugins). ## Can I upload and visualize CSV data? -Absolutely! Read the instructions [here](/docs/using-superset/exploring-data) to learn +Absolutely! Read the instructions [here](/user-docs/using-superset/exploring-data) to learn how to enable and use CSV upload. ## Why are my queries timing out? @@ -142,7 +142,7 @@ SQLALCHEMY_DATABASE_URI = 'sqlite:////new/location/superset.db?check_same_thread ``` You can read more about customizing Superset using the configuration file -[here](/docs/6.0.0/configuration/configuring-superset). +[here](/user-docs/6.0.0/configuration/configuring-superset). ## What if the table schema changed? @@ -157,7 +157,7 @@ table afterwards to configure the Columns tab, check the appropriate boxes and s To clarify, the database backend is an OLTP database used by Superset to store its internal information like your list of users and dashboard definitions. While Superset supports a -[variety of databases as data _sources_](/docs/6.0.0/configuration/databases#installing-database-drivers), +[variety of databases as data _sources_](/user-docs/6.0.0/configuration/databases#installing-database-drivers), only a few database engines are supported for use as the OLTP backend / metadata store. Superset is tested using MySQL, PostgreSQL, and SQLite backends. It’s recommended you install @@ -190,7 +190,7 @@ second etc). Example: ## Does Superset work with [insert database engine here]? -The [Connecting to Databases section](/docs/6.0.0/configuration/databases) provides the best +The [Connecting to Databases section](/user-docs/6.0.0/configuration/databases) provides the best overview for supported databases. Database engines not listed on that page may work too. We rely on the community to contribute to this knowledge base. @@ -226,7 +226,7 @@ are typical in basic SQL: ## Does Superset offer a public API? Yes, a public REST API, and the surface of that API formal is expanding steadily. You can read more about this API and -interact with it using Swagger [here](/docs/api). +interact with it using Swagger [here](/developer-docs/api). Some of the original vision for the collection of endpoints under **/api/v1** was originally specified in @@ -266,7 +266,7 @@ Superset uses [Scarf](https://about.scarf.sh/) by default to collect basic telem We use the [Scarf Gateway](https://docs.scarf.sh/gateway/) to sit in front of container registries, the [scarf-js](https://about.scarf.sh/package-sdks) package to track `npm` installations, and a Scarf pixel to gather anonymous analytics on Superset page views. Scarf purges PII and provides aggregated statistics. Superset users can easily opt out of analytics in various ways documented [here](https://docs.scarf.sh/gateway/#do-not-track) and [here](https://docs.scarf.sh/package-analytics/#as-a-user-of-a-package-using-scarf-js-how-can-i-opt-out-of-analytics). Superset maintainers can also opt out of telemetry data collection by setting the `SCARF_ANALYTICS` environment variable to `false` in the Superset container (or anywhere Superset/webpack are run). -Additional opt-out instructions for Docker users are available on the [Docker Installation](/docs/6.0.0/installation/docker-compose) page. +Additional opt-out instructions for Docker users are available on the [Docker Installation](/user-docs/6.0.0/installation/docker-compose) page. ## Does Superset have an archive panel or trash bin from which a user can recover deleted assets? diff --git a/docs/versioned_docs/version-6.0.0/installation/architecture.mdx b/docs/versioned_docs/version-6.0.0/installation/architecture.mdx index 427fc0a4e5b..92011884783 100644 --- a/docs/versioned_docs/version-6.0.0/installation/architecture.mdx +++ b/docs/versioned_docs/version-6.0.0/installation/architecture.mdx @@ -24,10 +24,10 @@ A Superset installation is made up of these components: The optional components above are necessary to enable these features: -- [Alerts and Reports](/docs/6.0.0/configuration/alerts-reports) -- [Caching](/docs/6.0.0/configuration/cache) -- [Async Queries](/docs/6.0.0/configuration/async-queries-celery/) -- [Dashboard Thumbnails](/docs/6.0.0/configuration/cache/#caching-thumbnails) +- [Alerts and Reports](/user-docs/6.0.0/configuration/alerts-reports) +- [Caching](/user-docs/6.0.0/configuration/cache) +- [Async Queries](/user-docs/6.0.0/configuration/async-queries-celery/) +- [Dashboard Thumbnails](/user-docs/6.0.0/configuration/cache/#caching-thumbnails) If you install with Kubernetes or Docker Compose, all of these components will be created. @@ -59,7 +59,7 @@ The caching layer serves two main functions: - Store the results of queries to your data warehouse so that when a chart is loaded twice, it pulls from the cache the second time, speeding up the application and reducing load on your data warehouse. - Act as a message broker for the worker, enabling the Alerts & Reports, async queries, and thumbnail caching features. -Most people use Redis for their cache, but Superset supports other options too. See the [cache docs](/docs/6.0.0/configuration/cache/) for more. +Most people use Redis for their cache, but Superset supports other options too. See the [cache docs](/user-docs/6.0.0/configuration/cache/) for more. ### Worker and Beat @@ -67,6 +67,6 @@ This is one or more workers who execute tasks like run async queries or take sna ## Other components -Other components can be incorporated into Superset. The best place to learn about additional configurations is the [Configuration page](/docs/6.0.0/configuration/configuring-superset). For instance, you could set up a load balancer or reverse proxy to implement HTTPS in front of your Superset application, or specify a Mapbox URL to enable geospatial charts, etc. +Other components can be incorporated into Superset. The best place to learn about additional configurations is the [Configuration page](/user-docs/6.0.0/configuration/configuring-superset). For instance, you could set up a load balancer or reverse proxy to implement HTTPS in front of your Superset application, or specify a Mapbox URL to enable geospatial charts, etc. Superset won't even start without certain configuration settings established, so it's essential to review that page. diff --git a/docs/versioned_docs/version-6.0.0/installation/docker-compose.mdx b/docs/versioned_docs/version-6.0.0/installation/docker-compose.mdx index 9727b97eaeb..030fc6ff168 100644 --- a/docs/versioned_docs/version-6.0.0/installation/docker-compose.mdx +++ b/docs/versioned_docs/version-6.0.0/installation/docker-compose.mdx @@ -21,7 +21,7 @@ with our [installing on k8s](https://superset.apache.org/docs/installation/runni documentation. ::: -As mentioned in our [quickstart guide](/docs/quickstart), the fastest way to try +As mentioned in our [quickstart guide](/user-docs/quickstart), the fastest way to try Superset locally is using Docker Compose on a Linux or Mac OSX computer. Superset does not have official support for Windows. It's also the easiest way to launch a fully functioning **development environment** quickly. diff --git a/docs/versioned_docs/version-6.0.0/installation/installation-methods.mdx b/docs/versioned_docs/version-6.0.0/installation/installation-methods.mdx index 17f7c4f35f9..03db4c38bbb 100644 --- a/docs/versioned_docs/version-6.0.0/installation/installation-methods.mdx +++ b/docs/versioned_docs/version-6.0.0/installation/installation-methods.mdx @@ -9,11 +9,11 @@ import useBaseUrl from "@docusaurus/useBaseUrl"; # Installation Methods -How should you install Superset? Here's a comparison of the different options. It will help if you've first read the [Architecture](/docs/6.0.0/installation/architecture page to understand Superset's different components. +How should you install Superset? Here's a comparison of the different options. It will help if you've first read the [Architecture](/user-docs/6.0.0/installation/architecture) page to understand Superset's different components. The fundamental trade-off is between you needing to do more of the detail work yourself vs. using a more complex deployment route that handles those details. -## [Docker Compose](/docs/6.0.0/installation/docker-compose +## [Docker Compose](/user-docs/6.0.0/installation/docker-compose) **Summary:** This takes advantage of containerization while remaining simpler than Kubernetes. This is the best way to try out Superset; it's also useful for developing & contributing back to Superset. @@ -27,9 +27,9 @@ You will need to back up your metadata DB. That could mean backing up the servic You will also need to extend the Superset docker image. The default `lean` images do not contain drivers needed to access your metadata database (Postgres or MySQL), nor to access your data warehouse, nor the headless browser needed for Alerts & Reports. You could run a `-dev` image while demoing Superset, which has some of this, but you'll still need to install the driver for your data warehouse. The `-dev` images run as root, which is not recommended for production. -Ideally you will build your own image of Superset that extends `lean`, adding what your deployment needs. See [Building your own production Docker image](/docs/6.0.0/installation/docker-builds/#building-your-own-production-docker-image). +Ideally you will build your own image of Superset that extends `lean`, adding what your deployment needs. See [Building your own production Docker image](/user-docs/6.0.0/installation/docker-builds/#building-your-own-production-docker-image). -## [Kubernetes (K8s)](/docs/6.0.0/installation/kubernetes +## [Kubernetes (K8s)](/user-docs/6.0.0/installation/kubernetes) **Summary:** This is the best-practice way to deploy a production instance of Superset, but has the steepest skill requirement - someone who knows Kubernetes. @@ -41,7 +41,7 @@ A K8s deployment can scale up and down based on usage and deploy rolling updates You will need to build your own Docker image, and back up your metadata DB, both as described in Docker Compose above. You'll also need to customize your Helm chart values and deploy and maintain your Kubernetes cluster. -## [PyPI (Python)](/docs/6.0.0/installation/pypi +## [PyPI (Python)](/user-docs/6.0.0/installation/pypi) **Summary:** This is the only method that requires no knowledge of containers. It requires the most hands-on work to deploy, connect, and maintain each component. diff --git a/docs/versioned_docs/version-6.0.0/installation/kubernetes.mdx b/docs/versioned_docs/version-6.0.0/installation/kubernetes.mdx index cdb0cccddd7..14e833600c3 100644 --- a/docs/versioned_docs/version-6.0.0/installation/kubernetes.mdx +++ b/docs/versioned_docs/version-6.0.0/installation/kubernetes.mdx @@ -149,7 +149,7 @@ For production clusters it's recommended to build own image with this step done Superset requires a Python DB-API database driver and a SQLAlchemy dialect to be installed for each datastore you want to connect to. -See [Install Database Drivers](/docs/6.0.0/configuration/databases) for more information. +See [Install Database Drivers](/user-docs/6.0.0/configuration/databases) for more information. It is recommended that you refer to versions listed in [pyproject.toml](https://github.com/apache/superset/blob/master/pyproject.toml) instead of hard-coding them in your bootstrap script, as seen below. @@ -310,7 +310,7 @@ configOverrides: ### Enable Alerts and Reports -For this, as per the [Alerts and Reports doc](/docs/6.0.0/configuration/alerts-reports), you will need to: +For this, as per the [Alerts and Reports doc](/user-docs/6.0.0/configuration/alerts-reports), you will need to: #### Install a supported webdriver in the Celery worker diff --git a/docs/versioned_docs/version-6.0.0/intro.md b/docs/versioned_docs/version-6.0.0/intro.md index 841ee0f7e55..31bd74aeb49 100644 --- a/docs/versioned_docs/version-6.0.0/intro.md +++ b/docs/versioned_docs/version-6.0.0/intro.md @@ -172,7 +172,7 @@ how to set up a development environment. ## Resources - [Superset "In the Wild"](https://github.com/apache/superset/blob/master/RESOURCES/INTHEWILD.md) - open a PR to add your org to the list! -- [Feature Flags](/docs/6.0.0/configuration/feature-flags) - the status of Superset's Feature Flags. +- [Feature Flags](/user-docs/6.0.0/configuration/configuring-superset#feature-flags) - the status of Superset's Feature Flags. - [Standard Roles](https://github.com/apache/superset/blob/master/RESOURCES/STANDARD_ROLES.md) - How RBAC permissions map to roles. - [Superset Wiki](https://github.com/apache/superset/wiki) - Tons of additional community resources: best practices, community content and other information. - [Superset SIPs](https://github.com/orgs/apache/projects/170) - The status of Superset's SIPs (Superset Improvement Proposals) for both consensus and implementation status. diff --git a/docs/versioned_docs/version-6.0.0/quickstart.mdx b/docs/versioned_docs/version-6.0.0/quickstart.mdx index 640ebe5794b..36f1969d30c 100644 --- a/docs/versioned_docs/version-6.0.0/quickstart.mdx +++ b/docs/versioned_docs/version-6.0.0/quickstart.mdx @@ -15,7 +15,7 @@ Although we recommend using `Docker Compose` for a quick start in a sandbox-type environment and for other development-type use cases, **we do not recommend this setup for production**. For this purpose please refer to our -[Installing on Kubernetes](/docs/6.0.0/installation/kubernetes/) +[Installing on Kubernetes](/user-docs/6.0.0/installation/kubernetes/) page. ::: @@ -73,10 +73,10 @@ processes by running Docker Compose `stop` command. By doing so, you can avoid d From this point on, you can head on to: -- [Create your first Dashboard](/docs/6.0.0/using-superset/creating-your-first-dashboard) -- [Connect to a Database](/docs/6.0.0/configuration/databases) -- [Using Docker Compose](/docs/6.0.0/installation/docker-compose) -- [Configure Superset](/docs/6.0.0/configuration/configuring-superset/) -- [Installing on Kubernetes](/docs/6.0.0/installation/kubernetes/) +- [Create your first Dashboard](/user-docs/6.0.0/using-superset/creating-your-first-dashboard) +- [Connect to a Database](/user-docs/6.0.0/configuration/databases) +- [Using Docker Compose](/user-docs/6.0.0/installation/docker-compose) +- [Configure Superset](/user-docs/6.0.0/configuration/configuring-superset/) +- [Installing on Kubernetes](/user-docs/6.0.0/installation/kubernetes/) Or just explore our [Documentation](https://superset.apache.org/docs/intro)! diff --git a/docs/versioned_docs/version-6.0.0/using-superset/creating-your-first-dashboard.mdx b/docs/versioned_docs/version-6.0.0/using-superset/creating-your-first-dashboard.mdx index 0ad727b9181..f15797e5b6c 100644 --- a/docs/versioned_docs/version-6.0.0/using-superset/creating-your-first-dashboard.mdx +++ b/docs/versioned_docs/version-6.0.0/using-superset/creating-your-first-dashboard.mdx @@ -31,7 +31,7 @@ your existing SQL-speaking database or data store. First things first, we need to add the connection credentials to your database to be able to query and visualize data from it. If you're using Superset locally via -[Docker compose](/docs/6.0.0/installation/docker-compose), you can +[Docker compose](/user-docs/6.0.0/installation/docker-compose), you can skip this step because a Postgres database, named **examples**, is included and pre-configured in Superset for you. @@ -188,7 +188,7 @@ Access to dashboards is managed via owners (users that have edit permissions to Non-owner users access can be managed in two different ways. The dashboard needs to be published to be visible to other users. 1. 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. -2. Dashboard roles - if you enable [**DASHBOARD_RBAC** feature flag](/docs/6.0.0/configuration/configuring-superset#feature-flags) then you will be able to manage which roles can access the dashboard +2. Dashboard roles - if you enable [**DASHBOARD_RBAC** feature flag](/user-docs/6.0.0/configuration/configuring-superset#feature-flags) then you will be able to manage which roles can access the dashboard - 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. - If no roles are specified for a dashboard, regular **Dataset permissions** will apply.