Per gli estratti del database csv, in che modo le chiavi delle mappe non creano una dipendenza?

3

Molto del mio lavoro è fatto con estratti .csv (report) dai database. Come ho programmato in Clojure, ho ricevuto commenti che basandosi su indici vettoriali crea dipendenze. Capisco perché e concordo.

Sto riscrivendo uno dei miei programmi per trarre vantaggio dal fatto che la prima riga di ogni rapporto contiene le intestazioni delle colonne e potrei andare dopo ogni riga di dati che voglio per chiave mappa. Sto riscrivendo un codice per comprimere le intestazioni fatte in chiavi di mappa e una riga di dati (alla volta) in modo da poter accedere ai dati che voglio. Ecco un esempio.

(def bene-csv-inp  (fetch-csv-data "benetrak_roster.csv"))
(def bene-csv-cols (first bene-csv-inp))
(def bene-csv-data (rest bene-csv-inp))
(def zm1 (zipmap 
     (map #(keyword %1) bene-csv-cols) 
                        (first bene-csv-data)))
(zm1 :EmploymentStartDate)
"21-Jun-82"

Esiste un livello più alto di estrazione e, in caso affermativo, che cosa consentirebbe al mio codice di non dover dovere codificare :EmploymentStartDate ? Se il mio codice deve conoscere queste chiavi, allora come è anche non una dipendenza come un indice?

Personalmente, mi piace prendere dopo i dati con le chiavi della mappa, perché è meno confuso e più informativo degli indici. Tuttavia, credo di avere ancora una dipendenza.

Grazie.

    
posta octopusgrabbus 07.08.2012 - 21:11
fonte

1 risposta

2

Bene, non dipendi più dall'ordine delle colonne nei dati, ma ora dipende dai nomi delle colonne. Se qualcuno aggiunge una colonna a un estratto, anche se è nel mezzo, stai meglio, perché il tuo codice non si romperà. Se qualcuno cancella o rinomina una colonna, avrai ancora un problema. Se è più probabile che qualcuno rinominerà una colonna piuttosto che eliminarla o spostarla, è meglio attenersi agli indici. Sono d'accordo sul fatto che di solito è più facile capire il codice che si riferisce a nomi (si spera) significativi rispetto ai numeri di colonna grezza. Dovrebbe rendere più semplice anche il debug, dal momento che se manca una colonna puoi segnalare "Nessuna colonna chiamata 'EmploymentStartDate'" invece di "Colonna mancante: 23".

    
risposta data 07.08.2012 - 21:30
fonte

Leggi altre domande sui tag