Вычесть два кадра данных, один с типами данных, один все строки - PullRequest
0 голосов
/ 10 июля 2019

У меня есть два кадра данных.Каждый получен из базы данных и имеет соответствующие типы данных, один получен из 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, строковые данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...