У меня есть два кадра данных.Каждый получен из базы данных и имеет соответствующие типы данных, один получен из s3 CSV-данных, и все является строками.Мне нужно вычесть, чтобы найти новые данные во фрейме базы данных, однако вычитать не удается из-за разницы в типах данных.Мне нужно, чтобы решение было динамическим (т.е. без ручных списков столбцов), как для циклического перебора списка таблиц.
Моя идея состояла в том, чтобы преобразовать весь кадр базы данных в строки для сравнения, но затем ябыло неясно, смогу ли я записать в хранилище назначения, которое также имеет соответствующие типы данных.
Вот подмножество базового кода, с которым я работаю (стараюсь сделать его простым, но при необходимости могу добавить еще)), без каких-либо дополнений для изменения типов данных.
# List the columns in the frames
source_columns = table_data_frame.columns
destination_columns = destination_data_frame.columns
# List the columns and data types in the frames
source_dtypes = table_data_frame.dtypes
destination_dtypes = destination_data_frame.dtypes
print('Source columns: ' + str(source_columns))
print('Destination columns: ' + str(destination_columns))
print('Entirety of Destination Count: ' + str(destination_dynamic_frame.count()))
if destination_dynamic_frame.count() > 0:
# Order the dataframes
table_data_frame_ordered = table_data_frame.select(source_columns))
destination_data_frame_ordered = destination_data_frame.select(destination_columns)
print('Joining datasets to find rows that have changed or are new')
# Compare the s3 store to the database dataframe
final_data_frame = table_data_frame_ordered.subtract(destination_data_frame_ordered).dropDuplicates()
print('Count of New Rows:' + str(final_data_frame.count()))
Ошибка представляется как: «Кроме того, может быть выполнено только для таблиц с совместимыми типами данных. string <> boolean в 7-м столбце второготаблица ", где вторая таблица является источником CSV, строковые данные.