Как вставить данные в выборочные столбцы с помощью PySpark?

#python #dataframe #pyspark #apache-spark-sql #amazon-redshift

Вопрос:

У меня есть таблица на Redshift, в которую я хочу вставить некоторые данные, используя фрейм данных pyspark.
Таблица красного смещения имеет схему:

 CREATE TABLE admin.audit_of_all_tables
(
    wh_table_name varchar,
    wh_schema_name varchar,
    wh_population_method integer,
    wh_audit_date timestamp without time,
    wh_percent_change numeric(15,5),
    wh_s3_path varchar
)
DISTSTYLE AUTO;
 

В моем фрейме данных я хочу сохранить значения только для первых 4 столбцов и записать данные этого фрейма данных в эту таблицу.
Мой фрейм данных выглядит примерно так:
введите описание изображения здесь

Теперь я хочу сделать df.write.format со своей таблицей Красное смещение, но мне нужно как-то указать, что я хочу вставлять данные только в первые четыре столбца и не передавать значения для последних 2 столбцов (по умолчанию они равны нулю).
Любая идея, как указать это с помощью dataframe.write.format (или любого метода).
Спасибо, что прочитали.

Ответ №1:

Вы можете использовать selectExpr для выбора первых четырех столбцов плюс двух дополнительных столбцов, null которые были приведены к требуемому типу:

 df2 = df.selectExpr("table_name as wh_table_name",
    "schema_name as wh_schema_name",
    "population_method as wh_population_method",
    "audit_date as wh_audit_date",
    "cast(null as double) as wh_percent_change",
    "cast(null as string) as wh_s3_path")

df2.write....