Как я могу применить ожидания ко всем столбцам таблицы в DLT? ⇐ Python
Как я могу применить ожидания ко всем столбцам таблицы в DLT?
Я видел руководства и статьи повсюду, где они посвящены использованию ожиданий качества данных DLT для нескольких столбцов таблицы. Ниже приведен код:
@dlt.table( comment="Данные о посещениях Википедии очищены и подготовлены для анализа." ) @dlt.expect("valid_current_page_title", "current_page_title НЕ НУЛЕВЫЙ") @dlt.expect_or_fail("valid_count", "click_count > 0") защита clickstream_prepared(): возвращаться ( dlt.read("clickstream_raw") .withColumn("click_count", expr("CAST(n AS INT)")) .withColumnRenamed("curr_title", "current_page_title") .withColumnRenamed("prev_title", "previous_page_title") .select("current_page_title", "click_count", "previous_page_title") ) здесь, указывая ожидания, мы должны вручную указать столбцы, в которых они будут реализованы. Но я хочу, чтобы они выполнялись для всех столбцов фрейма данных.
Чтобы реализовать ожидания для всех столбцов во фрейме данных, я использовал цикл и динамически изменил имя функции (которое действует как имя таблицы). Но это крайне неэффективно.
для столбца в columns_list_order_table: exec(f''' @dlt.table(comment="Проверка нулевого значения для {столбца}") @dlt.expect_or_drop("нулевые значения","is_null == false") защита null_validation_orders_for_column_{column}(): df = dlt.read("bronze_orders") return df.withColumn("is_null", col("{column}").isNull()) ''')
Я видел руководства и статьи повсюду, где они посвящены использованию ожиданий качества данных DLT для нескольких столбцов таблицы. Ниже приведен код:
@dlt.table( comment="Данные о посещениях Википедии очищены и подготовлены для анализа." ) @dlt.expect("valid_current_page_title", "current_page_title НЕ НУЛЕВЫЙ") @dlt.expect_or_fail("valid_count", "click_count > 0") защита clickstream_prepared(): возвращаться ( dlt.read("clickstream_raw") .withColumn("click_count", expr("CAST(n AS INT)")) .withColumnRenamed("curr_title", "current_page_title") .withColumnRenamed("prev_title", "previous_page_title") .select("current_page_title", "click_count", "previous_page_title") ) здесь, указывая ожидания, мы должны вручную указать столбцы, в которых они будут реализованы. Но я хочу, чтобы они выполнялись для всех столбцов фрейма данных.
Чтобы реализовать ожидания для всех столбцов во фрейме данных, я использовал цикл и динамически изменил имя функции (которое действует как имя таблицы). Но это крайне неэффективно.
для столбца в columns_list_order_table: exec(f''' @dlt.table(comment="Проверка нулевого значения для {столбца}") @dlt.expect_or_drop("нулевые значения","is_null == false") защита null_validation_orders_for_column_{column}(): df = dlt.read("bronze_orders") return df.withColumn("is_null", col("{column}").isNull()) ''')
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение