Airflow变量命名规范
外观
Airflow变量命名规范[编辑 | 编辑源代码]
介绍[编辑 | 编辑源代码]
Airflow变量(Variables)是Apache Airflow中用于存储和传递配置信息的全局键值对。良好的命名规范能提升代码可读性、维护性,并减少团队协作中的歧义。本节将详细讲解Airflow变量的命名原则、常见模式及实际应用。
核心原则[编辑 | 编辑源代码]
以下是Airflow变量命名的核心原则:
1. 描述性:名称应清晰表达变量的用途(如database_connection_string
)。
2. 一致性:遵循团队统一的命名风格(如全小写+下划线)。
3. 避免歧义:不使用缩写或模糊术语(如db_conn
优于dbc
)。
4. 作用域标识:通过前缀/后缀标明变量作用域(如dev_
、prod_
)。
命名模式[编辑 | 编辑源代码]
基础格式[编辑 | 编辑源代码]
推荐使用小写字母+下划线(snake_case):
# 正确示例
airflow_variable_name = "value"
# 不推荐示例
AirflowVariableName = "value" # 驼峰式
airflow-variable-name = "value" # 连字符
环境标识[编辑 | 编辑源代码]
通过前缀区分环境,避免运行时混淆:
# 开发环境
dev_database_url = "postgresql://dev_user:pass@localhost:5432/dev_db"
# 生产环境
prod_database_url = "postgresql://prod_user:pass@prod-host:5432/prod_db"
模块/功能关联[编辑 | 编辑源代码]
将变量与特定DAG或模块关联:
# 数据管道专用变量
data_pipeline_bucket_name = "raw-data-bucket"
# 邮件通知配置
email_notification_recipients = "admin@example.com"
代码示例[编辑 | 编辑源代码]
以下展示如何在Airflow中定义和使用符合规范的变量:
from airflow.models import Variable
# 设置变量
Variable.set("etl_batch_size", "1000")
# 获取变量
batch_size = Variable.get("etl_batch_size")
print(f"Batch size: {batch_size}") # 输出: Batch size: 1000
反模式与修正[编辑 | 编辑源代码]
反模式 | 问题 | 修正 |
---|---|---|
tmpVar |
混合大小写,无描述性 | temporary_processing_flag
|
db1 |
无意义缩写 | customer_database
|
url-prod |
使用连字符 | prod_api_url
|
实际案例[编辑 | 编辑源代码]
场景:多环境ETL管道[编辑 | 编辑源代码]
需为开发/生产环境配置不同的S3路径:
# 变量定义
Variable.set("dev_s3_raw_path", "s3://dev-bucket/raw/")
Variable.set("prod_s3_raw_path", "s3://prod-bucket/raw/")
# DAG中使用
env = "dev" # 可通过环境变量动态设置
raw_path = Variable.get(f"{env}_s3_raw_path")
可视化关系[编辑 | 编辑源代码]
数学表达[编辑 | 编辑源代码]
对于需要计算动态变量名的场景(如批量生成),可使用公式: 解析失败 (语法错误): {\displaystyle \text{VariableName} = \text{env\_prefix} + "\_" + \text{module\_name} + "\_" + \text{parameter} }
总结[编辑 | 编辑源代码]
- 始终使用
snake_case
和描述性名称。 - 通过前缀标识环境和功能模块。
- 避免缩写、特殊字符和大小写混合。
遵循这些规范将显著提升Airflow项目的可维护性和团队协作效率。