From 4137fe03a00e0a5732141895002cd55607b28d64 Mon Sep 17 00:00:00 2001 From: Rahul Raj Date: Tue, 5 Jul 2022 17:16:37 +0500 Subject: [PATCH] fix(schedule-query): getUISchema function called in SchemaForm component (#20256) * Revert "Superset - Release and Improvements (12-05-2022)" * merging conflic changes * Revert "Revert "Superset - Release and Improvements (12-05-2022)"" This reverts commit 6d18661e033faf130928cbfe0dd0daa0329221f2. * fixed breaking changes * sync with master * fixed breaking flows * fixed getUISchema function call * added default placeholder and updated docs * fixed format and comments * changed flag to configuration * fix: indentation of SCHEDULED_QUERIES dict * fix: changed intendation for SCHEDULED_QUERIES * fix: updated docs for SCHEDULED_QUERIES * fix: replaced button to menu item for SCHEDULED_QUERIES * fix: updated docs for SCHEDULED_QUERIES * fix: trailing whitespace --- docs/docs/installation/alerts-reports.mdx | 145 +++++++++--------- .../components/ScheduleQueryButton/index.tsx | 2 +- superset/config.py | 3 + 3 files changed, 75 insertions(+), 75 deletions(-) diff --git a/docs/docs/installation/alerts-reports.mdx b/docs/docs/installation/alerts-reports.mdx index a7491ad03e..6e71682dc7 100644 --- a/docs/docs/installation/alerts-reports.mdx +++ b/docs/docs/installation/alerts-reports.mdx @@ -391,94 +391,91 @@ You can optionally allow your users to schedule queries directly in SQL Lab. Thi extra metadata to saved queries, which are then picked up by an external scheduled (like [Apache Airflow](https://airflow.apache.org/)). -To allow scheduled queries, add the following to your configuration file: +To allow scheduled queries, add the following to `SCHEDULED_QUERIES` in your configuration file: ```python -FEATURE_FLAGS = { - # Configuration for scheduling queries from SQL Lab. This information is - # collected when the user clicks "Schedule query", and saved into the `extra` - # field of saved queries. +SCHEDULED_QUERIES = { + # This information is collected when the user clicks "Schedule query", + # and saved into the `extra` field of saved queries. # See: https://github.com/mozilla-services/react-jsonschema-form - 'SCHEDULED_QUERIES': { - 'JSONSCHEMA': { - 'title': 'Schedule', - 'description': ( - 'In order to schedule a query, you need to specify when it ' - 'should start running, when it should stop running, and how ' - 'often it should run. You can also optionally specify ' - 'dependencies that should be met before the query is ' - 'executed. Please read the documentation for best practices ' - 'and more information on how to specify dependencies.' - ), - 'type': 'object', - 'properties': { - 'output_table': { - 'type': 'string', - 'title': 'Output table name', - }, - 'start_date': { - 'type': 'string', - 'title': 'Start date', - # date-time is parsed using the chrono library, see - # https://www.npmjs.com/package/chrono-node#usage - 'format': 'date-time', - 'default': 'tomorrow at 9am', - }, - 'end_date': { - 'type': 'string', - 'title': 'End date', - # date-time is parsed using the chrono library, see - # https://www.npmjs.com/package/chrono-node#usage - 'format': 'date-time', - 'default': '9am in 30 days', - }, - 'schedule_interval': { - 'type': 'string', - 'title': 'Schedule interval', - }, - 'dependencies': { - 'type': 'array', - 'title': 'Dependencies', - 'items': { - 'type': 'string', - }, - }, + 'JSONSCHEMA': { + 'title': 'Schedule', + 'description': ( + 'In order to schedule a query, you need to specify when it ' + 'should start running, when it should stop running, and how ' + 'often it should run. You can also optionally specify ' + 'dependencies that should be met before the query is ' + 'executed. Please read the documentation for best practices ' + 'and more information on how to specify dependencies.' + ), + 'type': 'object', + 'properties': { + 'output_table': { + 'type': 'string', + 'title': 'Output table name', + }, + 'start_date': { + 'type': 'string', + 'title': 'Start date', + # date-time is parsed using the chrono library, see + # https://www.npmjs.com/package/chrono-node#usage + 'format': 'date-time', + 'default': 'tomorrow at 9am', + }, + 'end_date': { + 'type': 'string', + 'title': 'End date', + # date-time is parsed using the chrono library, see + # https://www.npmjs.com/package/chrono-node#usage + 'format': 'date-time', + 'default': '9am in 30 days', }, - }, - 'UISCHEMA': { 'schedule_interval': { - 'ui:placeholder': '@daily, @weekly, etc.', + 'type': 'string', + 'title': 'Schedule interval', }, 'dependencies': { - 'ui:help': ( - 'Check the documentation for the correct format when ' - 'defining dependencies.' - ), + 'type': 'array', + 'title': 'Dependencies', + 'items': { + 'type': 'string', + }, }, }, - 'VALIDATION': [ - # ensure that start_date <= end_date - { - 'name': 'less_equal', - 'arguments': ['start_date', 'end_date'], - 'message': 'End date cannot be before start date', - # this is where the error message is shown - 'container': 'end_date', - }, - ], - # link to the scheduler; this example links to an Airflow pipeline - # that uses the query id and the output table as its name - 'linkback': ( - 'https://airflow.example.com/admin/airflow/tree?' - 'dag_id=query_${id}_${extra_json.schedule_info.output_table}' - ), }, + 'UISCHEMA': { + 'schedule_interval': { + 'ui:placeholder': '@daily, @weekly, etc.', + }, + 'dependencies': { + 'ui:help': ( + 'Check the documentation for the correct format when ' + 'defining dependencies.' + ), + }, + }, + 'VALIDATION': [ + # ensure that start_date <= end_date + { + 'name': 'less_equal', + 'arguments': ['start_date', 'end_date'], + 'message': 'End date cannot be before start date', + # this is where the error message is shown + 'container': 'end_date', + }, + ], + # link to the scheduler; this example links to an Airflow pipeline + # that uses the query id and the output table as its name + 'linkback': ( + 'https://airflow.example.com/admin/airflow/tree?' + 'dag_id=query_${id}_${extra_json.schedule_info.output_table}' + ), } ``` -This feature flag is based on +This configuration is based on [react-jsonschema-form](https://github.com/mozilla-services/react-jsonschema-form) and will add a -button called “Schedule Query” to SQL Lab. When the button is clicked, a modal will show up where +menu item called “Schedule” to SQL Lab. When the menu item is clicked, a modal will show up where the user can add the metadata required for scheduling the query. This information can then be retrieved from the endpoint `/savedqueryviewapi/api/read` and used to diff --git a/superset-frontend/src/SqlLab/components/ScheduleQueryButton/index.tsx b/superset-frontend/src/SqlLab/components/ScheduleQueryButton/index.tsx index facb23461c..8da7ab7e66 100644 --- a/superset-frontend/src/SqlLab/components/ScheduleQueryButton/index.tsx +++ b/superset-frontend/src/SqlLab/components/ScheduleQueryButton/index.tsx @@ -197,7 +197,7 @@ const ScheduleQueryButton: FunctionComponent = ({ diff --git a/superset/config.py b/superset/config.py index 9b09c0a1fa..ae6e32a560 100644 --- a/superset/config.py +++ b/superset/config.py @@ -237,6 +237,9 @@ SHOW_STACKTRACE = True ENABLE_PROXY_FIX = False PROXY_FIX_CONFIG = {"x_for": 1, "x_proto": 1, "x_host": 1, "x_port": 1, "x_prefix": 1} +# Configuration for scheduling queries from SQL Lab. +SCHEDULED_QUERIES: Dict[str, Any] = {} + # ------------------------------ # GLOBALS FOR APP Builder # ------------------------------