Skip to content

Commit

Permalink
Add more SQL template fields renderers (#21237)
Browse files Browse the repository at this point in the history
  • Loading branch information
josh-fell committed Feb 4, 2022
1 parent 648e980 commit 39e395f
Show file tree
Hide file tree
Showing 35 changed files with 60 additions and 12 deletions.
4 changes: 4 additions & 0 deletions airflow/operators/sql.py
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,7 @@ class SQLCheckOperator(BaseSQLOperator):
".hql",
".sql",
)
template_fields_renderers = {"sql": "sql"}
ui_color = "#fff7e6"

def __init__(
Expand Down Expand Up @@ -179,6 +180,7 @@ class SQLValueCheckOperator(BaseSQLOperator):
".hql",
".sql",
)
template_fields_renderers = {"sql": "sql"}
ui_color = "#fff7e6"

def __init__(
Expand Down Expand Up @@ -403,6 +405,7 @@ class SQLThresholdCheckOperator(BaseSQLOperator):
".hql",
".sql",
)
template_fields_renderers = {"sql": "sql"}

def __init__(
self,
Expand Down Expand Up @@ -481,6 +484,7 @@ class BranchSQLOperator(BaseSQLOperator, SkipMixin):

template_fields: Sequence[str] = ("sql",)
template_ext: Sequence[str] = (".sql",)
template_fields_renderers = {"sql": "sql"}
ui_color = "#a22034"
ui_fgcolor = "#F7F7F7"

Expand Down
1 change: 1 addition & 0 deletions airflow/providers/amazon/aws/operators/redshift_sql.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ class RedshiftSQLOperator(BaseOperator):

template_fields: Sequence[str] = ('sql',)
template_ext: Sequence[str] = ('.sql',)
template_fields_renderers = {"sql": "postgresql"}

def __init__(
self,
Expand Down
1 change: 1 addition & 0 deletions airflow/providers/amazon/aws/transfers/hive_to_dynamodb.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ class HiveToDynamoDBOperator(BaseOperator):

template_fields: Sequence[str] = ('sql',)
template_ext: Sequence[str] = ('.sql',)
template_fields_renderers = {"sql": "hql"}
ui_color = '#a0e08c'

def __init__(
Expand Down
1 change: 1 addition & 0 deletions airflow/providers/apache/druid/transfers/hive_to_druid.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ class HiveToDruidOperator(BaseOperator):

template_fields: Sequence[str] = ('sql', 'intervals')
template_ext: Sequence[str] = ('.sql',)
template_fields_renderers = {'sql': 'hql'}

def __init__(
self,
Expand Down
1 change: 1 addition & 0 deletions airflow/providers/apache/hive/operators/hive.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ class HiveOperator(BaseOperator):
'.hql',
'.sql',
)
template_fields_renderers = {'sql': 'hql'}
ui_color = '#f0e4ec'

def __init__(
Expand Down
1 change: 1 addition & 0 deletions airflow/providers/apache/hive/transfers/hive_to_mysql.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ class HiveToMySqlOperator(BaseOperator):

template_fields: Sequence[str] = ('sql', 'mysql_table', 'mysql_preoperator', 'mysql_postoperator')
template_ext: Sequence[str] = ('.sql',)
template_fields_renderers = {'sql': 'hql', 'mysql_preoperator': 'mysql', 'mysql_postoperator': 'mysql'}
ui_color = '#a0e08c'

def __init__(
Expand Down
1 change: 1 addition & 0 deletions airflow/providers/apache/hive/transfers/hive_to_samba.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ class HiveToSambaOperator(BaseOperator):
'.hql',
'.sql',
)
template_fields_renderers = {'hql': 'hql'}

def __init__(
self,
Expand Down
1 change: 1 addition & 0 deletions airflow/providers/apache/hive/transfers/mssql_to_hive.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ class MsSqlToHiveOperator(BaseOperator):

template_fields: Sequence[str] = ('sql', 'partition', 'hive_table')
template_ext: Sequence[str] = ('.sql',)
template_fields_renderers = {'sql': 'tsql'}
ui_color = '#a0e08c'

def __init__(
Expand Down
1 change: 1 addition & 0 deletions airflow/providers/apache/hive/transfers/mysql_to_hive.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ class MySqlToHiveOperator(BaseOperator):

template_fields: Sequence[str] = ('sql', 'partition', 'hive_table')
template_ext: Sequence[str] = ('.sql',)
template_fields_renderers = {'sql': 'mysql'}
ui_color = '#a0e08c'

def __init__(
Expand Down
1 change: 1 addition & 0 deletions airflow/providers/apache/hive/transfers/vertica_to_hive.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ class VerticaToHiveOperator(BaseOperator):

template_fields: Sequence[str] = ('sql', 'partition', 'hive_table')
template_ext: Sequence[str] = ('.sql',)
template_fields_renderers = {'sql': 'sql'}
ui_color = '#b4e0ff'

def __init__(
Expand Down
1 change: 1 addition & 0 deletions airflow/providers/apache/spark/operators/spark_sql.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ class SparkSqlOperator(BaseOperator):

template_fields: Sequence[str] = ('_sql',)
template_ext: Sequence[str] = (".sql", ".hql")
template_fields_renderers = {'_sql': 'sql'}

def __init__(
self,
Expand Down
1 change: 1 addition & 0 deletions airflow/providers/apache/sqoop/operators/sqoop.py
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,7 @@ class SqoopOperator(BaseOperator):
'hcatalog_table',
'schema',
)
template_fields_renderers = {'query': 'sql'}
ui_color = '#7D8CA4'

def __init__(
Expand Down
1 change: 1 addition & 0 deletions airflow/providers/exasol/operators/exasol.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ class ExasolOperator(BaseOperator):

template_fields: Sequence[str] = ('sql',)
template_ext: Sequence[str] = ('.sql',)
template_fields_renderers = {'sql': 'sql'}
ui_color = '#ededed'

def __init__(
Expand Down
1 change: 1 addition & 0 deletions airflow/providers/google/cloud/operators/bigquery.py
Original file line number Diff line number Diff line change
Expand Up @@ -550,6 +550,7 @@ class BigQueryExecuteQueryOperator(BaseOperator):
'impersonation_chain',
)
template_ext: Sequence[str] = ('.sql',)
template_fields_renderers = {'sql': 'sql'}
ui_color = BigQueryUIColors.QUERY.value

@property
Expand Down
1 change: 1 addition & 0 deletions airflow/providers/google/cloud/operators/cloud_sql.py
Original file line number Diff line number Diff line change
Expand Up @@ -963,6 +963,7 @@ class CloudSQLExecuteQueryOperator(BaseOperator):
# [START gcp_sql_query_template_fields]
template_fields: Sequence[str] = ('sql', 'gcp_cloudsql_conn_id', 'gcp_conn_id')
template_ext: Sequence[str] = ('.sql',)
template_fields_renderers = {'sql': 'sql'}
# [END gcp_sql_query_template_fields]

def __init__(
Expand Down
1 change: 1 addition & 0 deletions airflow/providers/google/cloud/operators/dataflow.py
Original file line number Diff line number Diff line change
Expand Up @@ -822,6 +822,7 @@ class DataflowStartSqlJobOperator(BaseOperator):
"project_id",
"gcp_conn_id",
)
template_fields_renderers = {"query": "sql"}

def __init__(
self,
Expand Down
1 change: 1 addition & 0 deletions airflow/providers/google/cloud/operators/dataproc.py
Original file line number Diff line number Diff line change
Expand Up @@ -1231,6 +1231,7 @@ class DataprocSubmitSparkSqlJobOperator(DataprocJobBaseOperator):
'impersonation_chain',
)
template_ext = ('.q',)
template_fields_renderers = {'sql': 'sql'}
ui_color = '#0273d4'
job_type = 'spark_sql_job'

Expand Down
3 changes: 3 additions & 0 deletions airflow/providers/google/cloud/operators/spanner.py
Original file line number Diff line number Diff line change
Expand Up @@ -221,6 +221,7 @@ class SpannerQueryDatabaseInstanceOperator(BaseOperator):
'impersonation_chain',
)
template_ext: Sequence[str] = ('.sql',)
template_fields_renderers = {'query': 'sql'}
# [END gcp_spanner_query_template_fields]

def __init__(
Expand Down Expand Up @@ -324,6 +325,7 @@ class SpannerDeployDatabaseInstanceOperator(BaseOperator):
'impersonation_chain',
)
template_ext: Sequence[str] = ('.sql',)
template_fields_renderers = {'ddl_statements': 'sql'}
# [END gcp_spanner_database_deploy_template_fields]

def __init__(
Expand Down Expand Up @@ -421,6 +423,7 @@ class SpannerUpdateDatabaseInstanceOperator(BaseOperator):
'impersonation_chain',
)
template_ext: Sequence[str] = ('.sql',)
template_fields_renderers = {'ddl_statements': 'sql'}
# [END gcp_spanner_database_update_template_fields]

def __init__(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ class SalesforceToGcsOperator(BaseOperator):
'object_name',
)
template_ext: Sequence[str] = ('.sql',)
template_fields_renderers = {'sql': 'sql'}

def __init__(
self,
Expand Down
1 change: 1 addition & 0 deletions airflow/providers/google/cloud/transfers/sql_to_gcs.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ class BaseSQLToGCSOperator(BaseOperator):
'impersonation_chain',
)
template_ext: Sequence[str] = ('.sql',)
template_fields_renderers = {'sql': 'sql'}
ui_color = '#a0e08c'

def __init__(
Expand Down
1 change: 1 addition & 0 deletions airflow/providers/jdbc/operators/jdbc.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ class JdbcOperator(BaseOperator):

template_fields: Sequence[str] = ('sql',)
template_ext: Sequence[str] = ('.sql',)
template_fields_renderers = {'sql': 'sql'}
ui_color = '#ededed'

def __init__(
Expand Down
1 change: 1 addition & 0 deletions airflow/providers/microsoft/mssql/operators/mssql.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ class MsSqlOperator(BaseOperator):

template_fields: Sequence[str] = ('sql',)
template_ext: Sequence[str] = ('.sql',)
template_fields_renderers = {'sql': 'tsql'}
ui_color = '#ededed'

def __init__(
Expand Down
2 changes: 1 addition & 1 deletion airflow/providers/mysql/operators/mysql.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ class MySqlOperator(BaseOperator):
"""

template_fields: Sequence[str] = ('sql', 'parameters')
template_fields_renderers = {'sql': 'sql', 'parameters': 'json'}
template_fields_renderers = {'sql': 'mysql', 'parameters': 'json'}
template_ext: Sequence[str] = ('.sql', '.json')
ui_color = '#ededed'

Expand Down
2 changes: 1 addition & 1 deletion airflow/providers/mysql/transfers/presto_to_mysql.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ class PrestoToMySqlOperator(BaseOperator):

template_fields: Sequence[str] = ('sql', 'mysql_table', 'mysql_preoperator')
template_ext: Sequence[str] = ('.sql',)
template_fields_renderers = {"sql": "sql", "mysql_preoperator": "sql"}
template_fields_renderers = {"sql": "sql", "mysql_preoperator": "mysql"}
ui_color = '#a0e08c'

def __init__(
Expand Down
2 changes: 1 addition & 1 deletion airflow/providers/mysql/transfers/trino_to_mysql.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ class TrinoToMySqlOperator(BaseOperator):

template_fields: Sequence[str] = ('sql', 'mysql_table', 'mysql_preoperator')
template_ext: Sequence[str] = ('.sql',)
template_fields_renderers = {"sql": "sql", "mysql_preoperator": "sql"}
template_fields_renderers = {"sql": "sql", "mysql_preoperator": "mysql"}
ui_color = '#a0e08c'

def __init__(
Expand Down
4 changes: 2 additions & 2 deletions airflow/providers/mysql/transfers/vertica_to_mysql.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,8 @@ class VerticaToMySqlOperator(BaseOperator):
template_ext: Sequence[str] = ('.sql',)
template_fields_renderers = {
"sql": "sql",
"mysql_preoperator": "sql",
"mysql_postoperator": "sql",
"mysql_preoperator": "mysql",
"mysql_postoperator": "mysql",
}
ui_color = '#a0e08c'

Expand Down
1 change: 1 addition & 0 deletions airflow/providers/oracle/operators/oracle.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ class OracleOperator(BaseOperator):

template_fields: Sequence[str] = ('sql',)
template_ext: Sequence[str] = ('.sql',)
template_fields_renderers = {'sql': 'sql'}
ui_color = '#ededed'

def __init__(
Expand Down
2 changes: 1 addition & 1 deletion airflow/providers/postgres/operators/postgres.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ class PostgresOperator(BaseOperator):
"""

template_fields: Sequence[str] = ('sql',)
template_fields_renderers = {'sql': 'sql'}
template_fields_renderers = {'sql': 'postgresql'}
template_ext: Sequence[str] = ('.sql',)
ui_color = '#ededed'

Expand Down
1 change: 1 addition & 0 deletions airflow/providers/snowflake/operators/snowflake.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ class SnowflakeOperator(BaseOperator):

template_fields: Sequence[str] = ('sql',)
template_ext: Sequence[str] = ('.sql',)
template_fields_renderers = {'sql': 'sql'}
ui_color = '#ededed'

def __init__(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ class SnowflakeToSlackOperator(BaseOperator):

template_fields: Sequence[str] = ('sql', 'slack_message')
template_ext: Sequence[str] = ('.sql', '.jinja', '.j2')
template_fields_renderers = {"slack_message": "jinja"}
template_fields_renderers = {"sql": "sql", "slack_message": "jinja"}
times_rendered = 0

def __init__(
Expand Down
1 change: 1 addition & 0 deletions airflow/providers/sqlite/operators/sqlite.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ class SqliteOperator(BaseOperator):

template_fields: Sequence[str] = ('sql',)
template_ext: Sequence[str] = ('.sql',)
template_fields_renderers = {'sql': 'sql'}
ui_color = '#cdaaed'

def __init__(
Expand Down
1 change: 1 addition & 0 deletions airflow/providers/vertica/operators/vertica.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ class VerticaOperator(BaseOperator):

template_fields: Sequence[str] = ('sql',)
template_ext: Sequence[str] = ('.sql',)
template_fields_renderers = {'sql': 'sql'}
ui_color = '#b4e0ff'

def __init__(
Expand Down
11 changes: 7 additions & 4 deletions airflow/www/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -414,21 +414,24 @@ def get_attr_renderer():
return {
'bash': lambda x: render(x, lexers.BashLexer),
'bash_command': lambda x: render(x, lexers.BashLexer),
'hql': lambda x: render(x, lexers.SqlLexer),
'html': lambda x: render(x, lexers.HtmlLexer),
'sql': lambda x: render(x, lexers.SqlLexer),
'doc': lambda x: render(x, lexers.TextLexer),
'doc_json': lambda x: render(x, lexers.JsonLexer),
'doc_md': wrapped_markdown,
'doc_rst': lambda x: render(x, lexers.RstLexer),
'doc_yaml': lambda x: render(x, lexers.YamlLexer),
'doc_md': wrapped_markdown,
'hql': lambda x: render(x, lexers.SqlLexer),
'html': lambda x: render(x, lexers.HtmlLexer),
'jinja': lambda x: render(x, lexers.DjangoLexer),
'json': lambda x: json_render(x, lexers.JsonLexer),
'md': wrapped_markdown,
'mysql': lambda x: render(x, lexers.MySqlLexer),
'postgresql': lambda x: render(x, lexers.PostgresLexer),
'powershell': lambda x: render(x, lexers.PowerShellLexer),
'py': lambda x: render(get_python_source(x), lexers.PythonLexer),
'python_callable': lambda x: render(get_python_source(x), lexers.PythonLexer),
'rst': lambda x: render(x, lexers.RstLexer),
'sql': lambda x: render(x, lexers.SqlLexer),
'tsql': lambda x: render(x, lexers.TransactSqlLexer),
'yaml': lambda x: render(x, lexers.YamlLexer),
}

Expand Down
12 changes: 11 additions & 1 deletion docs/apache-airflow/howto/custom-operator.rst
Original file line number Diff line number Diff line change
Expand Up @@ -243,19 +243,29 @@ configuration at ``query.sql`` to be rendered with the SQL lexer.
Currently available lexers:

- bash
- bash_command
- doc
- doc_json
- doc_md
- doc_rst
- doc_yaml
- doc_md
- hql
- html
- jinja
- json
- md
- mysql
- postgresql
- powershell
- py
- python_callable
- rst
- sql
- tsql
- yaml

If you use a non existing lexer then the value of the template field will be rendered as a pretty printed object.
If you use a non-existing lexer then the value of the template field will be rendered as a pretty-printed object.

Define an operator extra link
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Expand Down
4 changes: 4 additions & 0 deletions docs/spelling_wordlist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -456,6 +456,7 @@ apikey
apis
appbuilder
approle
aren
arg
args
argv
Expand Down Expand Up @@ -1117,6 +1118,7 @@ pooler
postMessage
postfix
postgres
postgresql
powershell
pql
pre
Expand Down Expand Up @@ -1264,6 +1266,7 @@ sharded
shellcheck
shellcmd
shm
shouldn
sie
sigv
skipable
Expand Down Expand Up @@ -1402,6 +1405,7 @@ triggerers
trino
trojan
truthy
tsql
tsv
ttl
tunables
Expand Down

0 comments on commit 39e395f

Please sign in to comment.