Blog

Mrówcza praca zakończona - pierwszy krok milowy zrobiony!

Mrówcza praca zakończona - pierwszy krok milowy zrobiony!

To była naprawdę mrówcza praca... Ale udało się ją już zakończyć, a co więcej - udało się zrobić pierwszy krok milowy - SCALENIE!

Tak, mam już jeden, scalony jednolity wykaz umów z całego okresu 7,5 roku - to de facto jest już naprawdę rejestr umów.

 

Mrówcza praca - zakończona

Mozolna, ręczna praca i to wyczerpująca - trzeba było postępować uważnie i ostrożnie, aby nie utracić ani nie zafałszować danych.  Jak wspominałem - konwersja spowodowała, że dla wielu przypadków, gdy w pliku PDF (źródłowym) w jednej komórce tabeli było kilka wierszy - to w pliku wynikowym te wiersze trafiały do kilku oddzielnych komórek, zamiast do jednej.

Scalanie nie było proste, bo proces automatyczny powodował zachowanie tylko pierwszego wiersza, więc musiałem je łączyć ręcznie i umieszczać w pojedynczej komórce.
Ale konieczne było uzyskanie efektu: "jedna komórka PDF" = "jedna komórka XLS", aby przejść do próby scalania.

 

SCALENIE

Nieprzypadkowo "krzyczę" wielkimi literami. Tak - stało się!

Po zakończeniu mrówczej pracy trzeba było doprowadzić układ i kolejność kolumn do jednolitego standardu dla wszystkich 52 plików wejściowych. Udało się to zrobić i nastąpiło... SCALENIE.
Zgadza się - mam już jeden kompletny zbiór zawierający 5562 pozycje umów za 7,5 roku. Tak naprawdę to można powiedzieć, że mam już rejestr umów :)

Scalanie też trzeba było przeprowadzić ostrożnie - cały czas kontrolując podwójnie, czy dany plik został scalony, czy nie został zdublowany.

 

Analiza i standaryzacja danych - znowu kolce róży...

Dzięki scaleniu mogłem pójść krok dalej i zacząć poprawiać jakość danych pod kątem importu do bazy danych. Baza danych to wymagające narzędzie - dane muszą być uporządkowane, jednolite i odpowiednio przemyślane.
Zatem zacząłem porządkować dane i ... wróciła róża z kolcami...

Nie wszystko da się oczywiście zestandaryzować - opisy tekstowe muszą zostać, nazwy podmiotów raczej też i raczej nie będę porywał się na ujednolicenie różnych nazw tego samego podmiotu. Ale daty czy kwoty to są informacje, które będą wykorzystywane w filtrach i wyszukiwarce - muszą mieć "normalną" postać.

A przy okazji dat zawarcia umowy można było spotkać takie konwencje zapisu daty (przykładowo) "8 luty 2020":

  • 8 luty 2020
  • 8 lutego 2020
  • 08 lutego 2020
  • 08.02.2020
  • 8.02.2020r
  • 8.02.2020 r.
  • ...

Dla człowieka to czytelne, ale baza danych nie pozwoli na takie "fantazje".

Kolejne pole, które mnie częściowo "pokonało" to NIP/REGON/KRS. Okazało się, że próżno tutaj szukać pojedynczych, jednolitych numerów - czasami jest tylko NIP, czasami NIP z napisem "NIP", czasami jest w jednym polu i NIP i KRS, a czasami są dwa NIPy, jeśli umowa zawarta była z konsorcjum firm.
Poprzestałem na uporządkowaniu numerów - bez spacji i myślników, ale i tak czeka mnie tam jeszcze praca weryfikacyjna - niektóre numery wyglądają na błędnie wprowadzone.

 

Jakość danych

Generalnie jakość danych oceniam na średnią (patrząc pod kątem bazy danych) - sporo danych jest wprowadzanych jako dane tekstowe, opisowe. Jak wspomniałem - dla człowieka jest to czytelne, ale dla bazy danych - nie do przyjęcia.

Widać także różnicę w sposobie wprowadzania danych w poszczególnych latach - albo robiły to różne osoby, albo korzystały z różnych narzędzi/programów.  Narzędzia te nie miały najprawdopodobniej żadnej walidacji danych wejściowych i przyjmowały wszystkie informacje traktując je jak tekst.

Teraz to niestety "mści się" na mnie...

 

Co już udało się uzyskać

Aby zakończyć optymistycznym akcentem, a nie użalaniem się - krótkie podsumowanie, co już mam:

  • jeden, scalony zbiór, na którym poprawiam jakość danych
  • w poprawnym jednolitym formacie - wszystkie daty zawarcia umów
  • poprawioną jakość w numerach NIP/REGON/KRS - pozostaje weryfikacja kilku-kilkunastu dziwnych zapisów
  • przypisaną do każdej pozycji informację, z jakiego pliku źródłowego pochodzi
  • przypisaną do każdej pozycji informację, za jaki rok i okres dany plik został stworzony

 

Co dalej?

Oczywiście praca: porządkowanie, przeglądanie, weryfikacja.
Dwa zasadnicze problemy przede mną:

  • mniejszy: rozdzielenie pól "wartość umowy" na część kwotową (numer) i część dodatkowych opisów (tekst)
  • większy: rozdzielenie pól "czas obowiązywania" na "datę od" i "datę do" - tutaj czeka mnie walka podobna do tej z datami zawarcia umów....