SAS ODS Excel с кодировкой сеанса UTF-8 по сравнению с Латин1

#excel #sas

Вопрос:

С момента запуска моих базовых программ SAS в новой UTF-8 кодированной среде я сталкиваюсь с огромными проблемами производительности при экспорте данных через ODS excel .

Экспорт более N записей для данного набора данных обычно приводит к зависанию сеанса SAS и требует перезапуска моего клиента.

Вот что я использую для тестирования, используя стандартный набор данных и создавая небольшой xlsx-файл (:

 data test03;
    set sashelp.zipcode;
    if _N_ le 3000 then output;
run;    


goptions device=png;

ods results=off;

ods excel
    file    =   "/sas_p/gridshared/ch/eg_data/regel/group_hr/export/ods_export.xlsx"
    options(    flow = "tables" start_at = "A1" embedded_titles= "yes");

proc print data=test03 label noobs;
run;

ods _all_ close;
 

Я постепенно увеличиваю _N_ (строка 3) и получаю соответствующее увеличение процессорного времени. Однако после определенного момента (обычно в диапазоне 4 цифр для большинства наборов данных) программа просто застревает.

Для приведенного выше примера:

 _N_ = 1000 rec → 00:00:09
_N_ = 2000 rec → 00:00:18
_N_ = 3000 rec → timeout
 

В старой latin1 кодированной среде такого поведения не наблюдается, где экспорт всех 40 тыс. записей из приведенной выше таблицы не представлял никаких проблем.

Есть какие-нибудь идеи о том, как решить эту проблему?

Комментарии:

1. Поднимите билет с помощью службы поддержки SAS.

2. Сколько это колонок? Насколько велик фактический файл, который он создает?

3. @Tom Мне стыдно сказать, что после повторных запросов с нашими ИТ — специалистами выяснилось, что они установили слишком низкий размер памяти, что не было видно мне как простому пользователю.

Ответ №1:

Что делать, если вы принудительно включили кодировку набора данных wlatin1 в свой сеанс, а также выходные данные ods wlatin1 ?

 data test03(encoding='wlatin1');
    set sashelp.zipcode;
    if _N_ le 3000 then output;
run;    

filename excelout "/sas_p/gridshared/ch/eg_data/regel/group_hr/export/ods_export.xlsx"
    encoding='wlatin1'
;

goptions device=png;

ods results=off;

ods excel
    file   = excelout
    options(flow = "tables" start_at = "A1" embedded_titles= "yes")
    ;

ods excel close;