Hogyan olvashatom a gzip-el tömörített nyers adatfájlokat (.gz fájlok) a SAS-ban? | SAS GYIK
Figyelem: Ez a GYIK a UNIX környezetben lévő fájlok olvasására vonatkozik, és nem biztos, hogy minden UNIX környezetben működik.
Nagyon hatékony lehet a gzip-el tömörített (.gz) nyers adatfájlok tárolása. Az ilyen fájlok gyakran hússzor kisebbek, mint az eredeti nyers adatfájl. Például egy 200 megabájtos nyers adatfájlt akár 10 megabájtosra is lehet tömöríteni. Egy kis példával szemléltetjük, hogyan olvashatunk be egy tömörített fájlt. Tekintsük az alább látható adatfájlt.
AMC Concord 220 2930 4099AMC Pacer 170 3350 4749AMC Spirit 220 2640 3799Buick Century 200 3250 4816Buick Electra 150 4080 7827
Ha ez egy rawdata.txt nevű nyers adatfájl lenne, akkor egy olyan SAS programmal olvashatnánk be, mint az alábbiakban látható.
FILENAME in "rawdata.txt" ;DATA test; INFILE in ; INPUT make $ 1-14 mpg 15-18 weight 19-23 price 24-27 ;RUN;
A legtöbb UNIX számítógépen (pl. Nicco, Aristotle) a
gzip rawdata.txt &
beírásával tömöríthetnénk a rawdata.txt fájlt, és ez létrehozná a rawdata.txt.gz nevű tömörített változatot . Ahhoz, hogy ezt a fájlt beolvassuk a SAS-be, általában először kitömörítenénk a fájlt, majd a tömörítetlen változatot beolvasnánk a SAS-be. Ez nagyon időigényes lehet a fájl kicsomagolása, és sok helyet foglal a lemezen. Ehelyett a rawdata.txt.gz tömörített fájlt közvetlenül a SAS-ban olvashatja be anélkül, hogy először ki kellene tömörítenie. A SAS képes “menet közben” kitömöríteni a fájlt, és soha nem hoz létre külön tömörítetlen változatot a fájlból. A legtöbb UNIX számítógépen (pl. Nicco, Aristotle) egy ilyen programmal olvashatja a fájlt.
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;
A programjában mindenképpen változtassa meg az lrecl=80 értéket a nyers adatfájl szélességére (a leghosszabb adatsor szélessége). Ha nem biztos abban, hogy milyen széles a fájl, akkor csak olyan értéket használjon, amely biztosan szélesebb, mint a fájl legszélesebb sora.
Ezt a technikát leginkább akkor használja, ha egy nagyon nagy fájlt olvas be. Tesztelheti a programját úgy, hogy csak egy maroknyi megfigyelést olvas be az infile utasítás obs= paraméterének használatával, például az infile in obs=20; csak az első 20 megfigyelést olvasná be a fájlból.