diff --git a/encrypted_file/eugene_etl_pipeline.tar_encrypted.tar.gz b/encrypted_file/eugene_etl_pipeline.tar_encrypted.tar.gz index 876108b..9e22b01 100644 Binary files a/encrypted_file/eugene_etl_pipeline.tar_encrypted.tar.gz and b/encrypted_file/eugene_etl_pipeline.tar_encrypted.tar.gz differ diff --git a/eugene/bronze_to_silver.py b/eugene/bronze_to_silver.py index 5e1e00b..57807cf 100644 --- a/eugene/bronze_to_silver.py +++ b/eugene/bronze_to_silver.py @@ -1,5 +1,5 @@ from pyspark.sql import SparkSession -from pyspark.sql.functions import udf, col +from pyspark.sql.functions import udf, col, lit from pyspark.sql.types import StringType import re, os, logging @@ -36,7 +36,11 @@ def process_table(spark, table_name): # Видалення дублікатів рядків df = df.dropDuplicates() - + + # Перевірка та заповнення відсутніх значень у стовпці medal значенням "No Medal" + if "medal" in df.columns: + df = df.withColumn("medal", col("medal").na.fill("No Medal")) + # Логування попереднього перегляду logger.info(f"Data preview after cleaning for {table_name}:") df.show(20) diff --git a/eugene/silver_to_gold.py b/eugene/silver_to_gold.py index d1ae878..6759975 100644 --- a/eugene/silver_to_gold.py +++ b/eugene/silver_to_gold.py @@ -26,9 +26,9 @@ bio_df = spark.read.parquet("silver/athlete_bio", schema=bio_schema) results_df = spark.read.parquet("silver/athlete_event_results") - # Фільтрація медалей - valid_medals = ["Gold", "Silver", "Bronze"] - results_selected = results_df.select("athlete_id", "sport", "medal").filter(col("medal").isin(valid_medals)) + # Вибір колонок з athlete_event_results та обробка відсутніх значень у колонці medal + results_selected = results_df.select("athlete_id", "sport", "medal") \ + .withColumn("medal", col("medal").na.fill("No Medal")) # Вибір колонок з athlete_bio bio_selected = bio_df.select("athlete_id", "sex", "country_noc", "weight", "height") @@ -63,4 +63,4 @@ filtered_stats.repartition("sport", "medal").write.parquet("gold/avg_stats", mode="overwrite") # Завершення сесії - spark.stop() + spark.stop() \ No newline at end of file