name: ingestion-extract-assets
purpose: Local Airflow registration for source-system extract assets.
extract_asset_units:
  - name: cloud-tenants-bigquery-sync
    mode: bigquery_sync
    dag_id: orchestration_extract_cloud_tenants_bigquery
    owner: data-platform
    start_date: "2026-01-01T00:00:00Z"
    schedule: null
    catchup: false
    max_active_runs: 1
    tags:
      - orchestration
      - assets
      - ingestion
      - extract
      - bigquery
    runner:
      executable_path: orchestration/airflow/bin/extract-runner
      uv_project_environment: /tmp/pingcap-datalake-extract-venv
      workspace_env: /opt/datalake-runtime/extract-workspace
    extractor_module: ingestion.extract.bigquery.engine.cli
    produced_by_ref: ingestion.extract.bigquery.engine.export
    source_path: ingestion/extract/bigquery/sources/cloud_tenants/source.yaml
    output_contracts:
      - source.cloud_tenants.cloud_tenants_gcs_snapshot
    generate_contracts_task_id: generate_cloud_tenants_contracts
    export_task_id: export_cloud_tenants_snapshot
    write_manifest_task_id: write_cloud_tenants_manifest
    manifest:
      asset:
        name: ingestion.extract.bigquery.cloud_tenants.manifest
        uri: x-datalake://ingestion/manifest/bigquery/cloud_tenants
        group: manifest
        extra:
          handoff: run_manifest
          extract_source_path: ingestion/extract/bigquery/sources/cloud_tenants/source.yaml
  - name: data-foundation-finance-tidbcloud-deferrable
    mode: tidbcloud_deferrable
    dag_id: orchestration_extract_data_foundation_finance_tidbcloud
    owner: data-platform
    start_date: "2026-01-01T00:00:00Z"
    catchup: false
    max_active_runs: 1
    tags:
      - orchestration
      - assets
      - ingestion
      - extract
      - tidbcloud
    runner:
      executable_path: orchestration/airflow/bin/extract-runner
      uv_project_environment: /tmp/pingcap-datalake-extract-venv
      workspace_env: /opt/datalake-runtime/extract-workspace
    extractor_module: ingestion.extract.tidbcloud.engine.cli
    produced_by_ref: ingestion.extract.tidbcloud.engine.export
    source_path: ingestion/extract/tidbcloud/sources/data_foundation_finance/source.yaml
    generate_contracts_task_id: generate_data_foundation_finance_contracts
    write_manifest_task_id: export_data_foundation_finance_manifest
    poll_interval_seconds: 300
    timeout_seconds: 14400
    manifest:
      asset:
        name: ingestion.extract.tidbcloud.data_foundation_finance.manifest
        uri: x-datalake://ingestion/manifest/tidbcloud/data_foundation_finance
        group: manifest
        extra:
          handoff: run_manifest
          extract_source_path: ingestion/extract/tidbcloud/sources/data_foundation_finance/source.yaml
notes:
  - BigQuery extract is synchronous: bq extract returns after objects land, then write-manifest emits the manifest Asset.
  - TiDB Cloud extract is asynchronous: start-export returns an export id, the Airflow triggerer polls export-status, and write-manifest emits the manifest Asset after success.
