Как контролировать версию входных данных вместе со сценариями обработки? - PullRequest
0 голосов
/ 08 июля 2019

Я работаю с набором скриптов Python, которые берут данные из файла Excel, настроенного для работы в качестве псевдобазы данных. Excel используется вместо программного обеспечения SQL из-за совместимости и требований доступа для других людей, с которыми я работаю и которые не знакомы с базами данных.

У меня есть набор из примерно 10 таблиц с несколькими записями в каждой и реляционными ключами, связывающими их все (опять же, в виде псевдосвязывания, с использованием некоторой надуманной проверки данных).

Используемые мной скрипты контролируются версией Git, и я знаю подводные камни при добавлении файла .xlsx в репозиторий, поэтому я держал его в стороне. Поскольку данные немного уязвимы, я хочу убедиться, что у меня есть способ отслеживать любые изменения, которые мы вносим в них. Я думал, что у меня будет скрипт, который разбивает файл Excel на .csv таблицы и добавляет их в репозиторий, т.е.

import pandas as pd
from pathlib import Path
excel_input_file = Path(r"<...>")
output_path = Path(r"<...>")
tables_dict = pd.read_excel(excel_input_file, sheet_name=None)

for i,x in tables_dict.items():
    x.to_csv(output_path / (i+'.csv'), index=False)

Это обычно хороший метод для отслеживания входных файлов на каждом этапе?

1 Ответ

0 голосов
/ 09 июля 2019

Как вы заметили, Git лучше работает с текстовыми файлами, а не с двоичными файлами, так что это был бы лучший выбор, чем просто проверка в файле Excel.В частности, Git мог бы объединять и различать эти файлы, в то время как в противном случае Git не мог бы слить их изначально.

Обычно люди справляются с подобной ситуацией, используя один или несколько простых текстовых вводов.файлы (например, CSV или SQL), а затем встроить их в пригодный для использования выходной формат (например, Excel или базу данных) в рамках этапа сборки или тестирования, в зависимости от того, где они необходимы.Я сделал аналогичные вещи, используя дамп быстрого экспорта Git для создания тестовых Git-репозиториев, и он обычно работает хорошо.

Если у вас был только один входной файл, чего в этом случае нет, вытакже можно использовать грязные и чистые фильтры, чтобы превратить исходный файл в хранилище в другой формат оформления заказа.Вы можете прочитать об этом с man gitattributes.

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