Сегодня у меня вопрос, и я не знаю, как его ответить.
Имея фрейм данных, я нужно создавать столбцы динамически, и эти столбцы будут содержать набор проверок, которые мне нужно выполнить, например: проверить количество символов ОС, посмотреть, есть ли странные символы внутри поля описания (например, разрывы линий) и т. д.
Наличие следующего списка:
Код: Выделить всё
raw/ingest_date=20240918/eventos/
raw/ingest_date=20240918/llamadas/
raw/ingest_date=20240918/campanhas/
raw/ingest_date=20240918/miembros/
raw/ingest_date=20240918/objetivos/
Код: Выделить всё
data_T =[(folder, folder.split('/')[-2]) for folder in subfolders]
df_result = spark.createDataFrame(data_T , ["s3_prefix", "table_name"])
Код: Выделить всё
s3_prefix | table_name
------------------------------------------------------
raw/ingest_date=20240918/eventos/ | eventos
raw/ingest_date=20240918/llamadas/ | llamadas
raw/ingest_date=20240918/campanhas/ | campanhas
raw/ingest_date=20240918/miembros/ | miembros
Код: Выделить всё
for elem in df_result.collect():
s3_path = f"s3://{bucket_name}/{elem['s3_prefix']}/*.parquet"
ing_df = spark.read.parquet(s3_path)
ing_df = ing_df.select(F.length('ID').alias('length_ID'))
ing_df.show(1)
Код: Выделить всё
eventos
+---------+
|length_ID|
+---------+
| 17|
+---------+
only showing top 1 row
------------------------------
llamadas
+---------+
|length_ID|
+---------+
| 18|
+---------+
...
...
...
Код: Выделить всё
s3_prefix | table_name | id_length | strange_character | id_strange character |
-------------------------------------|--------------|-----------|---------------------|-----------------------------|
raw/ingest_date=20240918/eventos/ | eventos | 17 | YES | [idxxxxxxx3,idxxxxx23] |
raw/ingest_date=20240918/llamadas/ | llamadas | 18 | NO | |
raw/ingest_date=20240918/campanhas/ | campanhas | 20 | NO | |
raw/ingest_date=20240918/miembros/ | miembros | 30 | YES | [idxxxsssxs10,idxsdas2200] |
Большое спасибо
С уважением
Подробнее здесь: https://stackoverflow.com/questions/790 ... -dataframe