Source code for astronomer.providers.amazon.aws.extractors.redshift
from typing import List, Optional
from airflow.models.taskinstance import TaskInstance
from openlineage.airflow.extractors.redshift_data_extractor import RedshiftDataExtractor
SCHEMA_URI = "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json"
[docs]
class RedshiftAsyncExtractor(RedshiftDataExtractor):
"""This extractor provides visibility on the metadata of a RedshiftDataOperatorAsync"""
default_schema = "public"
[docs]
@classmethod
def get_operator_classnames(cls) -> List[str]:
"""Returns the list of operators this extractor works on."""
return ["RedshiftDataOperatorAsync", "RedshiftSQLOperatorAsync"]
def _get_xcom_redshift_job_id(self, task_instance: TaskInstance) -> Optional[str]:
"""Get query ids from XCOM"""
redshift_job_id: List[str]
redshift_job_id = task_instance.xcom_pull(task_ids=task_instance.task_id, key="return_value")
if len(redshift_job_id) > 0:
return redshift_job_id[0]
return None