如何解决如何从 Composer Airflow 获取针对 BigQuery 运行的 SQL 中的 GCP 项目名称
我想编写一个由 Composer/Airflow(python BigQueryOperator 指的是 SQL 文件)执行的查询
SELECT col1,col2,... FROM `{{ GCP_PROJECT }}.dataset.table` ...
我希望在 SQL 中对 GCP 项目进行参数化,以便我可以在生产/开发 (prod/dev) 环境中部署相同的 SQL 文件并在开发中进行测试,而无需尝试查询开发环境没有的生产表访问。
这是已经设置好的吗?
在这一点上,除了 Composer guide 之外,我在 GCP_PROJECT is already reserved 中找不到任何有用的示例,我不确定如何将环境变量传递给模板......谢谢。
>解决方法
我自己还没有测试过,但我认为这样的方法应该可行:
import os
dag = DAG(...)
def print_env_var():
print(os.environ["GCP_PROJECT"])
print_context = PythonOperator(
task_id="gcp_project",python_callable=print_env_var,dag=dag,)
根据 Google 文档,不建议使用保留的环境变量 (https://cloud.google.com/composer/docs/how-to/managing/environment-variables#reserved_names):
Cloud Composer 将这些保留名称用于内部变量 过程使用。不要在您的工作流程中引用保留名称。 变量值可能会更改,恕不另行通知。
我认为处理临时/生产环境的更好方法是在 Airflow 本身中设置变量并在 dag 中读取它们。这是一个很好的资源,其中详细介绍了 Airflow 变量。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。