Как в DAG найти столбец Primary Key в таблице и проверить, есть ли какое-либо значение Null? - PullRequest
0 голосов
/ 24 апреля 2020

Я пишу DataQualityOperator в DAG. Следует проверить, есть ли данные в таблице Redshift. Для этого я хотел бы проверить, содержит ли основной столбец нулевые значения. С sql я нашел имя столбца Первичный ключ. Как я могу проверить, содержит ли он нулевые значения? (Что означает, что таблица не годится в моем случае).

class DataQualityOperator(BaseOperator):
        check_template = """
                    SELECT a.attname
                    FROM   pg_index i
                    JOIN   pg_attribute a ON a.attrelid = i.indrelid
                                        AND a.attnum = ANY(i.indkey)
                    WHERE  i.indrelid = 'tablename'::regclass
                    AND    i.indisprimary;
        """

        def __init__ (self,redshift_conn_id = "", target_table="", *args, **kwargs):
             super(...)  

        def execute(self, context):
            self.log.info(f'DataQualityOperator processing {target_table}')
            redshift = PostgresHook(postgres_conn_id=self.redshift_conn_id)

            check_records = redshift.get_records(check_template.format(self.target_table))


Как этого добиться? Спасибо за помощь.

1 Ответ

0 голосов
/ 26 апреля 2020

Вы ищете SQL для проверки на NULL в столбце? Если да

select count(1) from <table> where <column> is NULL; 

Если другое, уточните, пожалуйста.

...