Разархивирование в SAS - PullRequest
       15

Разархивирование в SAS

2 голосов
/ 28 сентября 2011

Предположим, я делаю в SAS следующее:

filename  tmp pipe 'unzip -c -qq ./data_xml.zip';
libname   tmp xml xmlmap=TMMap access=READONLY;

data header; set tmp.header; run;
data owners; set tmp.owners; run;

Это распакует файл data_xml.zip и использует файл SAS xmlmap для генерации двух наборов данных, header и owners.

У меня вопрос, сколько раз разархивируется на data_xml.zip? Произойдет ли разархивирование только один раз или дважды, потому что я дважды устанавливаю набор данных из tmp libname?

1 Ответ

1 голос
/ 17 октября 2011

Короткий ответ: ДА, он разархивирует его дважды.

Насколько я понимаю, unzip -c по сути превращает эти данные в последовательный источник, поскольку они передаются из команды unzip прямо в PIPE libname.

Предположительно, вы хотите осуществлять потоковую передачу через -c и PIPE из-за дискового пространства и / или проблем с производительностью при первой загрузке файла на диск. К сожалению, я вполне уверен, что способ установки вещей, единственный способ минимизировать ЦП дополнительной распаковки - сначала поместить ее на диск во временный файл.

Однако, в зависимости от размера файла, загрузка ЦП для второй распаковки может не перевесить хит ввода-вывода из-за необходимости считывать расширенный файл с диска хотя бы один раз.

...