Создание Workflow в SAS. Постановка Workflow на расписание. Снятие с расписания.

Всем добрый день.

Сегодня хотел бы освятить вопрос по созданию Workflow в SAS. Постановки потока на расписание и также показать как убрать данный поток с расписания.

P.S. 
Хотел также отметить, что кнопка снять с расписания появилась лишь с версии SAS 9.3.
Если у Вас есть какие-либо вопросы задавайте.

Дирректория WORK

Сегодня проведем эксперимент по тому когда очищается директория WORK.

Для начала давайте узнаем директорию в которую сохраняются данные из библиотеки work, для этого запустите команду:

 proc options option=work;
 run;

И в логах вы увидите путь к папке.

Создадим простую таблицу и убедимся, что она находиться в нашей папке:

Теперь закроем нашу сессию и посмотрим что произойдет.

А произойдет ровно то, что наша папочка с табличкой исчезнет.

Следовательно наш work чиститься сразу после закрытия сессии.

А теперь сделать обрыв сессии, путем убийства процесса

Теперь войдем в папку где должна находиться наша директория work и мы обнаружим, что наша директория не удалилась.

P.S. Если у вас происходит отрубание сессии пользователя, то не надо сразу паниковать и говориться, что данные в Work очень важны и они уничтожены. Скорее всего все ваши таблички живы и хорошо себя чувствуют. Просто надо отыскать вашу директорию.

P.P.S. Из вышесказанного видно, что при разрыве сессий пользователей директория work не чистится и со временем может забиться!
На это надо также обращать внимание и периодически чистить старые данные.

SAS and Excel 2010. XLSX.

Всем добрый день.

Сегодня рассмотрим пример работы SAS с файлами расширения xlsx, т.е. excel 2010.

Все мы знаем, что  excel-2003 файлы обладали ограничением в 65 536 строк.

Так вот давайте проведем эксперимент и попробуем записать в excel 2 000 000 записей.

Сперва попробуем сделать export в xls файл и увидим следующее:

В результате мы видим, что сам SAS на указывает на ограничения количества строк.

Теперь попробуем сделать выгрузку в xlsx файл:

Мы видим, что выгрузка прошла успешна и заняла чуть больше минуты.

Теперь попробуем загрузить данные обратно в SAS через proc import:

И мы также видим, что все наши 2 миллиона записей отлично загрузились обратно в SAS за в два раза большее время чем export, т.е. за 3 минуты.

А теперь интересный момент:

давайте попробуем открыть наш xlsx файл из Excel и мы увидим следующее:

Во-первых файл будет открываться очень долго
Во-вторых мы не увидим там 2 000 000 записей, а всего 1 048 576 записей. Вот так вот.

P.S.
Изначально пример взят от сюда:
http://blogs.sas.com/content/sasdummy/2012/01/25/export-to-excel-got-easier/

Unrestricted user

Сегодня расскажу о небольшом cheat коде, как сделать пользователя Unrestricted, т.е. дать ему неограниченные права.

Весь фокус состоит в том, чтобы добавить пользователя в файл «adminUsers», который находиться в папке «SASHOMELev1SASMetaMetadataServer»

Если вы откроете данный файл, то увидите примерно следующее:

; This file contains a list of userids that, when connected
; to the SAS Metadata Server, are considered Administrators
; of the server.  Administrators have a number of special
; privileges including, but not limited to:
;     creating and deleting users
;     starting, stopping, and pausing the server
;     creating repositories
;
; Each line of this file contains a single UserID entry.
; The entries may be in the following forms: ‘userid’,
; ‘domainuserid’, and ‘userid@domain’.
; A semicolon at the beginning of a line indicates that the line is
; not to be processed.
;
;
*sasadm@saspw

Видно, что уже один пользователь в этом списке имеется, заданный при установке SAS — sasadm@saspw.

Если вы хотите еще добавить пользователя с безграничными правами, то вам следуют дописать ниже логин пользователя и вначале поставить *.  Пример:
*user1
*user2

После этого не забудьте перегрузить SAS Metadata Server, чтобы введенные изменения вступили в силу.

Данный способ хорош, когда вы забыв права доступа на sasadm@saspw неправильно ввели несколько раз пароль и заблокировали администратора тем самым.

Тогда вам поможет добавление еще одного unrestricted пользователя и с помощью него разблокирует sasadm@saspw.
Затем удалив пользователя из данного файла вы также легко вернете ему обычные права.

Преемственность версий SAS.

Странная картина наблюдается, когда вы пытаетесь подсоединиться через SAS Managment Console 9.3  или SAS Data Integration Stuido 4.4  к серверу SAS MetaData Server 9.2, а именно вы увидите следующее сообщение об ошибке:

Т.е из клиентов от SAS 9.3. вы не сможете подсоединиться к более старой версии SAS, а именно 9.2.

Обратное кстати не верно, т.е. из SAS Managment Console 9.2 и SAS Data Integration Stuido 4.2 вы сможете подсоединяться к SAS 9.3.

Таким образом при переходе на SAS 9.3 возможно на каких-то клиентских машинах потребуется переустанавливать клиентов SAS.

Кстати говоря SAS Enterprise Guide 5.1 отлично соединяться как с версией SAS 9.3, так и с версией SAS 9.2.

SAS connect to Oracle. Part 4. Hints.

Всем добрый день.

Сегодня рассмотрим задачу использования Oracle Hints при обращении к БД Oracle из SAS.

Для этого вам потребуется всего лишь в строку соединения добавить следующие слова:

preserve_comments

А теперь рассмотрим примеры:
Пример довольно простой — мы хотим узнать сколько строк в некой таблице Oracle

1. Вариант (без preserve_comments)

Прошу обратить внимание на Log данного запроса из которого видно, что наш parallel hint был вычеркнут из запроса.

2. Вариант (c preserve_comments)

А в этом варианте видно, что выражение с hint дошло до oracle именно в том виде в котором мы написали.

P.S.

Для получения подробных логов  необходимо использовать подключение следующих опций:

Однако хочу предостеречь от постоянного использования данной опции, т.к. сильно раздуваются лог файлы.

Использовать данную опцию стоит лишь на этапе отладки кода. В дальнейшем ее нужно отключать.
Также данную опцию часто просят включать в службе поддержки SAS для предоставлении более детальных логов в случае возникновения вопросов(ошибок) связанных с взаимодействием с внешними базами данных.

SAS connect to Oracle. Part 3. BULKLOAD.

В предыдущих примерах мы рассматривали задачу загрузки данных из Oracle в SAS.
Теперь же давай попробуем из положить из SAS в Oracle.

1. Data set.

В данном примере мы видим, что время выгрузки данных в Oracle существенно больше чем время загрузки, а именно более 2-х минут против 10 секунд загрузки.

 2. Proc sql.

Здесь также видим превышение 2-х минут.

3. Proc sql + BULKLOAD

В данном примере мы использовали опцию BULKLOAD и время выгрузки уменьшилось с более чем 2-х минут до 11 секунд.

P.S. Для работы параметра BULKLOAD вам необходимо чтобы стоял полный клиент Oracle, а именно в директории Oracle_HOMEproduct11.2.0client_1BIN находился файл: sqlldr.exe.
У меня изначально была поставлена легкая версия клиента и этот файл отсутствовал. Пришлось переставлять клиента.

SAS connect to Oracle. Part 2. Pass-Through.

Мы уже рассмотрели способ соединения с Oracle по средством libname.

Теперь рассмотрим способ Pass-Through или еще такой способ называют push down.

В данном случае выполняемый код «проваливается в базу данных» и обратно возвращается результат запроса.

Прошу обратить внимание, что время выгрузки идентично примерам из предыдущего поста и составляет чуть меньше 10 секунд.

А теперь добавим еще один параметр readbuff=100000 в строку соединения и получим:

И лога видно, что время выгрузки меньше 5 секунд на 1 миллион записей. В принципе с этим параметром можно поиграть, но при такой конструкции про него лучше не забывать.

С уважением,
Николай.

SAS connect to Oracle. Part 1. Libname.

Сегодня рассмотрим способы взаимодействия SAS и Oracle.

Для начала нужно убедиться, что в вашу лицензию входит компонент SAS/ACCESS Interface to Oracle (сделать это можно запустив proc setinit; и убедиться что в перечне компонент есть описанный выше см предыдущий пост).

Есть несколько способов соединения:

Libname:

В таком случае можно обращаться к таблицам oracle следующими способами:

1. Data-set.

2. Proc sql.

Хочется отметь, что второй вариант более подходит для людей который изначально привыкли писать SQL запросы.

В следующем посте рассмотрим альтернативный способ соединения с БД Oracle.

Что входит в Вашу лицензию SAS?

Всем доброго времени суток.

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

Ответ на данный вопрос легко получить с помощью следующей команды:

После запуска данный команды увидим в логах необходимую нам информацию:

Также хочу обратить внимание, что если вы соберетесь обратиться в службу поддержки SAS, то Вам понадобиться Site number (его нужно указывать в самом начале письма либо в теме письма), который вы также сможете получить из данного лога.
С уважением,
Николай.