Skip to main content

Generate Airflow DAG from DOT language to execute BigQuery efficiently mainly for AlphaSQL

Project description

bq-airflow-dag-generator

Utility package to generate Airflow DAG from DOT language to execute BigQuery efficiently mainly for AlphaSQL.

Install

pip install bq-airflow-dag-generator

Usage

# You can set SQL_ROOT if your SQL file paths in dag.dot are not on current directory.
os.environ["SQL_ROOT"] = "/path/to/sql/root"
dagpath = "/path/to/dag.dot"
dag = generate_airflow_dag_by_dot_path(dagpath)

You can add tasks to existing DAG like

dagpath = "/path/to/dag.dot"
existing_airflow_dag
generate_airflow_dag_by_dot_path(dagpath, dag=existing_airflow_dag)

You can pass how to create Aiflow tasks like

def gen_task(sql_file_path, dag):
    sql_root = os.environ.get("SQL_ROOT")
    sql_file_path = os.path.join(sql_root, sql_file_path) if sql_root else sql_file_path
    with open(sql_file_path, "r") as f:
        query = f.read()
        task = PythonOperator(
            task_id=sql_file_path.replace("/", ""),
            python_callable=get_bigquery_callable(query),
            dag=dag,
        )
        task.doc = f"""\
# BigQuery Task Documentation: {sql_file_path}
This is automatically generated.
Query:
{query}
"""
    return task

dagpath = "/path/to/dag.dot"
generate_airflow_dag_by_dot_path(dagpath, get_task_by_sql_path_and_dag=gen_task)

Test

python -m unittest tests.test_dags

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bq-airflow-dag-generator-0.1.2.tar.gz (2.9 kB view details)

Uploaded Source

Built Distribution

File details

Details for the file bq-airflow-dag-generator-0.1.2.tar.gz.

File metadata

  • Download URL: bq-airflow-dag-generator-0.1.2.tar.gz
  • Upload date:
  • Size: 2.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.2 CPython/3.7.9 Darwin/19.6.0

File hashes

Hashes for bq-airflow-dag-generator-0.1.2.tar.gz
Algorithm Hash digest
SHA256 58b6b987d5f11a71bf7171d461be78164452cba7dc2e0cf4b0979297bc13d5ba
MD5 10a0558b6765583792207828003cfccb
BLAKE2b-256 800eead98d15f0c11a786af656371eda2ce0aefcecead2b69f7c52797f1ea95d

See more details on using hashes here.

File details

Details for the file bq_airflow_dag_generator-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for bq_airflow_dag_generator-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 6ac3de1114e19bc2b2883b49a00fc94bfb0c21505c4f443c35088f417e1f50b6
MD5 9007033c4f012d6c5e5bcf7dd36612c7
BLAKE2b-256 e38c6d234310f4c5fde72cee5fcca6b8e4c96b24026b0f985d280952daf71006

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page