Cum citesc fișiere de date brute comprimate cu gzip (fișiere .gz) în SAS? | SAS FAQ

iun. 25, 2021
admin

Vă rugăm să rețineți: Această întrebare frecventă este specifică citirii fișierelor într-un mediu UNIX și este posibil să nu funcționeze în toate mediile UNIX.

Poate fi foarte eficient să stocați fișiere mari de date brute comprimate cu gzip (ca fișiere .gz). Astfel de fișiere sunt adesea de 20 de ori mai mici decât fișierul original de date brute. De exemplu, un fișier de date brute care ar ocupa 200 de megaocteți ar putea fi comprimat pentru a fi de doar 10 megaocteți. Să ilustrăm modul de citire a unui fișier comprimat cu un mic exemplu. Luați în considerare fișierul de date prezentat mai jos.

AMC Concord 220 2930 4099AMC Pacer 170 3350 4749AMC Spirit 220 2640 3799Buick Century 200 3250 4816Buick Electra 150 4080 7827 

Dacă acesta ar fi un fișier de date brute numit rawdata.txt, l-am putea citi folosind un program SAS precum cel prezentat mai jos.

FILENAME in "rawdata.txt" ;DATA test; INFILE in ; INPUT make $ 1-14 mpg 15-18 weight 19-23 price 24-27 ;RUN; 

Pe majoritatea calculatoarelor UNIX (de exemplu, Nicco, Aristotel) ați putea comprima rawdata.txt tastând

gzip rawdata.txt & 

și acest lucru ar crea o versiune comprimată numită rawdata.txt.gz . Pentru a citi acest fișier în SAS, în mod normal ar trebui mai întâi să decomprimați fișierul și apoi să citiți versiunea necomprimată în SAS. Acest lucru poate consuma foarte mult timp pentru a decomprima fișierul și poate consuma foarte mult spațiu pe disc. În schimb, puteți citi fișierul comprimat rawdata.txt.gz direct în SAS, fără a fi nevoie să îl decomprimați mai întâi. SAS poate decomprima fișierul „din mers” și nu creează niciodată o versiune separată necomprimată a fișierului. Pe majoritatea computerelor UNIX (de exemplu, Nicco, Aristotel) ați putea citi fișierul cu un program ca acesta.

FILENAME in PIPE "gzip -dc rawdata.txt.gz" LRECL=80 ;DATA test; INFILE in ; INPUT make $ 1-14 mpg 15-18 weight 19-23 price 24-27 ;RUN; 

În programul dumneavoastră, asigurați-vă că modificați lrecl=80 pentru a fi lățimea fișierului dumneavoastră de date brute (lățimea celei mai lungi linii de date). Dacă nu sunteți sigur de cât de lat este fișierul, folosiți doar o valoare care este cu siguranță mai largă decât cea mai lată linie a fișierului dumneavoastră.

Vă veți folosi cel mai probabil această tehnică atunci când citiți un fișier foarte mare. Puteți să vă testați programul citind doar o mână de observații prin utilizarea parametrului obs= în instrucțiunea infile, de exemplu, infile in obs=20; ar citi doar primele 20 de observații din fișierul dvs.

Lasă un răspuns

Adresa ta de email nu va fi publicată.