Удаление дубликатов в таблице 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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