Удаление дубликатов в таблице Pyarrow?Python

Программы на Python
Anonymous
Удаление дубликатов в таблице Pyarrow?

Сообщение Anonymous »

Есть ли способ сортировать данные и удалять дубликаты, используя чистые таблицы Pyarrow? Моя цель — получить последнюю версию каждого идентификатора на основе максимальной отметки времени обновления.
Некоторые дополнительные сведения: мои наборы данных обычно структурированы как минимум на две версии:
  • историческая
  • финальная
Набор исторических данных будет включать все обновленные элементы из источника, поэтому можно иметь дубликаты для одного идентификатора для каждого изменения, которое с ним произошло. (представьте себе, например, заявку Zendesk или ServiceNow, где заявку можно обновлять много раз)
Затем я читаю набор исторических данных с помощью фильтров, конвертирую его в DF pandas, сортирую данные, а затем удаляю дубликаты в некоторые уникальные столбцы ограничений.

Код: Выделить всё

dataset = ds.dataset(history, filesystem, partitioning)
table = dataset.to_table(filter=filter_expression, columns=columns)
df = table.to_pandas().sort_values(sort_columns, ascending=True).drop_duplicates(unique_constraint, keep="last")
table = pa.Table.from_pandas(df=df, schema=table.schema, preserve_index=False)

# ds.write_dataset(final, filesystem, partitioning)

# I tend to write the final dataset using the legacy dataset so I can make use of the partition_filename_cb - that way I can have one file per date_id. Our visualization tool connects to these files directly
# container/dataset/date_id=20210127/20210127.parquet

pq.write_to_dataset(final, filesystem, partition_cols=["date_id"], use_legacy_dataset=True, partition_filename_cb=lambda x: str(x[-1]).split(".")[0] + ".parquet")
Было бы неплохо отключить это преобразование в панды, а затем, если возможно, вернуться в таблицу.

Подробнее здесь: https://stackoverflow.com/questions/659 ... rrow-table

Вернуться в «Python»