#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....