Prelucrarea automată a datelor

Word Cloud "Big Data"

Majoritatea datelor pe care le livram sunt în format CSV (Comma Separated Values). Fiecare rând reprezintă o înregistrare, iar diferite proprietăți ale unei înregistrări sunt separate prin virgulă. Evident ordinea proprietăților este aceeași pentru fiecare rând (înregistrare).

Multi clienți ne cer datele într-un format propriu, și vreau să scriu aici un studiu de caz:

Clientul X, cere un o bază de date cu firme dintr-o anumită regiune, pentru a o încărca în soluția CRM și a fi folosită în scopuri de marketing.

TheWebMiner livrează baza de date care are 10 milioane de înregistrări într-un format specific, cerut de client ( Ex: nume:număr categorie:adresa stradală:cod poștal|nume:număr categorie:adresa stradală:cod poștal ). Observăm din formatul dat exemplu că separatorul pentru proprietăți este „:” iar pentru înregistrări este „|”. Asta înseamnă că fișierul are o singură linie, ceea ce îl va face foarte greu de procesat. Din acest motiv până la finalul livrării datelor vom folosi „\n” (new line) ca separator pentru înregistrări, iar înainte de livrare vom înlocui „\n” cu „|”.

De asemenea clientul vrea să scoatem toate înregistrările care nu conțin numărul categoriei și să le sortăm după acesta și după codul poștal (ca un criteriu secundar).

Cum am făcut asta?

Pasul 1: exportăm datele din baza de date sub formatul următor:

nume:număr categorie:adresa stradală:cod poștal\n

nume:număr categorie:adresa stradală:cod poștal\n

La acest pas trebuie sa avem grijă să facem replace la toate caracterele „:” și „|” înainte de a fi scrise în fișierul de export. Pentru asta noi folosim o soluție proprie dezvoltată intern.

Pasul 2: scoatem înregistrările care nu conțin numărul categoriei. Pentru asta folosim următoarea comandă:

sed -i=backup ‘/^.*::.*:.*$/d’ filename

Pasul 3: sortăm datele după număr categorie (criteriu principal) și cod poștal (criteriu secundar) folosind următoarea comandă:

sort -t: -k2,2n -k4,4n oldfile > newfile

Pasul 4: înlocuim „\n” cu „|” folosind iar sed:

sed -i=backup ‘:a;N;$!ba;s/\n/|/g’ filename

Pasul 5: Facem o arhiva și livrăm datele clientului.

Simplu, nu?

Și totuși a am prelucrat o cantitate de date din zona BigData (10 milioane înregistrări).

Sursă imagine: http://www.crossing-technologies.com/wp-content/uploads/2015/04/Big_data_image-300×256.jpg