I am trying to read run_id
for DAG in SnowflakeOperator
to set a session parameter, query_tag. But it seems like the session parameter is not templated.
JavaScript
x
12
12
1
snowflake_operator = SnowflakeOperator(
2
task_id='snowflake_task',
3
snowflake_conn_id='snowflake_conn',
4
sql='resources/some.sql',
5
warehouse='my_warehouse',
6
database='my_database',
7
role='my_role',
8
session_parameters={
9
'QUERY_TAG': 'dagrun_{{run_id}}'
10
}
11
)
12
How can I reference run_id
and use it as an input here?
Advertisement
Answer
You need to make the non-templated field templated.
JavaScript
1
6
1
class MySnowflakeOperator(SnowflakeOperator):
2
3
template_fields = (
4
"session_parameters",
5
) + SnowflakeOperator.template_fields
6
Then you can use it as:
JavaScript
1
12
12
1
snowflake_operator = MySnowflakeOperator(
2
task_id='snowflake_task',
3
snowflake_conn_id='snowflake_conn',
4
sql='resources/some.sql',
5
warehouse='my_warehouse',
6
database='my_database',
7
role='my_role',
8
session_parameters={
9
'QUERY_TAG': 'dagrun_{{run_id}}'
10
}
11
)
12