Чего не хватает SAS?

В предыдущем посте Николай рассказал про новые планируемые фичи и улучшения в линейке продуктов SAS в ближайший год. Можно заметить что довльно часто встречается словоcочетание Visual Analytics / Statistics. На демо видео примерно видно как оно работает через интерфейс браузера.

Как плюс выделено — «no coding required«. На мой взгляд это удобно только на первых порах и быстро появляется необходимость писать код.

Между написанием кода и чистым visual analytics существует (с точки зрения рабочего процесса) промежуточный слой, который можно увидеть в некоторых программах — это interactive mode. Вот этого на мой взгляд не хватает для наиболее комфортной работы в sas (для задач связанных с анализом данных). Interactive mode позволяет одновременно писать код и делать визуальный анализ «на лету», менять код/настройки и моментально получать результат, тестировать гипотезы и делать новые эксперименты. В некоторых программах это основной способ работы, например в Wolfram Language (это не реклама, сам пользовался Mathematica последний раз много лет назад):

https://www.youtube.com/watch?v=_P9HqHVPeik

С одной стороны это может быть связано со свойствами самого языка SAS Base, что его проблемно приспособить к интерактивной работе. Но с другой стороны есть уже давно SAS/IML через который можно вызывать R функции, а R в свою очередь очень хорошо справляется с интерактивностью.

Чем SAS удивит нас в 2014 году?

Всем привет.

Посмотрев выступление Russ Cobb (Vice President, Alliances and Product Marketing) и Randy Guard (Vice President, Product Manager), выяснилось что в новом году (точнее в текущем) нас ждут значительные улучшений.
К слову сказать, не стоит расчитывать, что мы их получим уже прямо сечас, т.к. практика такова, что пока не пройдет хотябы год с момента релиза продукта, его мало кто захочет внедрять. Так что возможно эти новшества докатяться до нас лишь в 2015 году.

И так что хотелось бы отметить, исходя из того опыта который уже есть при работе с новыми продуктами: кто уже работал или видела, что нынешние технологии уходят в web область. Точнее говоря идет отказ от толстых клиентов (я об этом уже писал в своей книге). Так вот первый уход в web был сделан на Flash технологии. И многие уже столкнулись с той проблеймой, что не смотря на оличное «железо» все как-то не очень быстро работает (мягко говоря). И видемо SAS уже прислушался к своим клиентам и будет переводить все постепенно на HTML5.

Второе, что хотелось бы опробовать в живую — это выход нового продукта SAS Studio. Как я понял это аналог SAS Enterprise Guide только  Web версия:

Кстати говоря, продукт также сделан на HTML5.
Я уже упомянал про SAS Studio, когда писал в книге, что программы можно будет писать на Apple девайсах (Mac books).

Также думаю кому-то будет интересно увидть RoadMap развитие продуктовой линейки SAS на этот год:

Думаю часть из этих новшеств удасться увидеть на осенней конференции в Москве 🙂 
(хотя возможно кто-то захочет посетить международную конференцию в конце марта ).

SAS Share, ORACLE library

Всем привет!

В этой статье я поделюсь решением одной из проблем, когда требуется подключить библиотеку из Oracle к SAS Share Server.


В прошлой статье я описал подключение библиотек SAS к Share серверу.

Полагая, что аналогичным образом можно подключить и все другие библиотеки, я попробовал подключить и библиотеку Oracle:

Действуя по тем же шагам, что и делал ранее была создана библиотека Oracle:

Далее:

Далее:

В Advanced Options делаем по аналогии с Base:
 

 Далее создаём новый сервер Oracle:

Далее:

Далее указываем PATH (SID), User Password:


Завершаем установку.

Добавляем эту библиотеку по аналогии с прошлым постом в SAS Share.

Далее перезагружаем SAS Share Server и регистрируем таблички в библиотеке.

На этом этапе появляются варианты: либо проблем нету и всё работает, либо в логах появляются ошибки, о которых пишет SAS MC.

В моём случае появилась не совсем ожидаемая ошибка.
ERROR: Libname oralib is not assigned.
ERROR: Error in the LIBNAME statement

В логах ShareServer видно следующее:
ORACLE connection error: ORA-01017: invalid username/password; logon denied

Озадачило меня то, что эта библиотека прекрасно подключается с аналогичными параметрами к Oracle, если не через SAS Share Server.

Долго проковырявшись в настройках, мне пришла идея добавить в закладку
Properties => Options => Advanced Options => Other Options
следующие параметры: user = «user» password = «password» path =»path»
Где вместо userpasswordpath выставляются соответствующие значения для подключения к необходимой библиотеке Oracle.

После чего всё заработало.

Крепких вам нервов и удачи в работе с SAS SHARE!

p.s.
При написании статьи я подразумевал, что клиент Oracle с указанными tnsnames установлен в системе. Более того, разрядность (x32x64) этого клиента должна соответствовать разрядности SAS.

Работа с SAS Share, Remote Libraries

Всем привет!
В последнее время я занят настройкой и правильной работой SAS Digital Marketing. По этой причине, у меня сегодня не так много интересных задач, которыми я мог бы поделиться.
В этой статье хочу обратить внимание на следующие вещи: методы связи в SAS, особенность работы с SAS SHARE, создание remote библиотек для работы с SAS SHARE.


SAS использует методы доступа связи, которые представляют собой интерфейс между SAS и сетевым протоколом, который в свою очередь используется для соединения двух операционных сред. Для этой цели в SAS используются 2 метода: SAS SHARE и SAS CONNECT.

 

SAS SHARE сервер данных, который позволяет нескольким пользователям получать одновременный доступ к SAS файлов без необходимости использовать отдельные SAS CONNECT удаленные входы для каждого пользователя. SAS SHARE позволяет не только консолидировать несколько раздельных библиотек данных, но управлять и координировать запросы на данных по сети в реальном времени.

SAS CONNECTнабор инструментов SAS как для клиента, так и для сервера. Он устанавливает связи между компьютерами в сети с различными операционными системами. SAS CONNECT позволяет пользователям и разработчикам возможность доступа, управления и обработки данных, используя различные сетевые архитектуры, а также различные версии SAS.

Эти методы используют следующие интерфейсы:
TCP/IP — программный интерфейс (program-to-program), который поддерживается на аппаратном уровне от разных производителей
XMSэто интерфейс, который является частью операционной среды z/OS и используется программами, которые работают в этой среде.
 
Более подробная информация по работе этих методов доступна на официальном сайте http://support.sas.com 

В данной статье речь будет идти о работе с SAS SHARE.
В первую очередь в вашей лицензии должен быть SAS SHARE. Для того чтобы убедиться, что лицензия у вас есть, перечитайте одну из статей выложенных на нашем сайте ранее.

Мой опыт работы с системой SAS на данный момент был только в среде Windows. По этому, некоторые моменты по работе с Unix будут отличаться.

После успешной установки SAS Depot в Windows службах (services) появляются ряд служб, отвечающий за SAS. Среди них должен быть и SAS SHARE Server — сервер, который и отвечает за необходимый нам метод сетевого соединения:
 
Нас интересует последний:

Как видите, по умолчанию для этого сервера присваивается 8551 порт. Его можно изменить при установке SAS, но я не рекомендую этого делать. Может что-нибудь сломаться.

Так же этот сервер доступен из SAS Management Console:
Для того, чтобы окончательно убедиться, что сервер работает и порт открыт можно использовать в командной строке (предварительно требуется установить TELNET client): telnet localhost 8551. Чёрный экран командной строки будет означать, что всё работает.
Мы подошли к моменту, когда мы можем создать библиотеки для работы с SAS SHARE.
Создаём новую библиотеку в SAS Management Console, где выбираем SAS/SHARE REMOTE Engine Library:
 
 Переходим далее, указываем имя и место хранения в SAS MC. Переходим далее, где указываем SAS Application server, который будет работать с этой библиотекой. Доступно на выбор 3: Share Server, SAS Meta, SAS App. Выбираем SAS App:
Далее указываем libref (учитывая требования к названиям библиотек в SAS).
В следующем окне необходимо указать SAS/SHARE Server Library. 
Создаём новую, где указываем тип библиотеки.  На этом этапе всё зависит от того, с какой БД будет осуществляться работа. На данном этапе уже нельзя выбрать SAS/SHARE REMOTE Engine Library.
Рассмотрим сначала простейший случай и выберем SAS Base Library:
 
Далее указываем название, которое будет отображаться в SAS MC, далее выбираем сервер. Тут надо указать Share Server:
 
Далее указываем libref и переходим в Advanced Options:
 
Где требуется поставить галочку Library is Pre-Assigned и выбрать By Native library engine. Это особенность работы SAS SHARE с библиотеками SAS Base. Если так не указать, то при дальнейшей регистрации табличек в библиотеках будет возникать ошибка.
 
Далее завершаем создание обеих библиотек. Таким образом в SAS MC появляется 2 библиотеки:
 
Далее требуется ПЕРЕЗАПУСТИТЬ СЛУЖБУ SAS SHARE. Заходим в Windows -> Services. Находим необходимую службу и перезапускаем её.
Возвращаемся в SAS MC. 
Правой кнопкой по библиотеке типа REMOTE -> Register Tables -> Next -> выбираем необходимую таблицу.
Теперь вы сможете найти данную библиотеку, если подсоединитесь к серверу SAS SHARE. 
Как это сделать? Это уже тема другой статьи.
На этом всё.

SAS Enterprise Guide. Part 2. Автосохранение и Log Summary.

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

Сегодня хотелось бы затронуть, пожалуй, самый популярный инструмент SAS, а именно SAS Enterprise Guide.

Как-то я уже затрагивал тему «горячих клавиш». И сегодня хотел бы рассказать о еще парочки полезных нововведений.

1. Автосохранения. 

Полагаю всем знакома ситуация, когда по тем или иным причинам написанный код не успевали сохнаранить и работа нескольких часов просто исчезала. После этого писать код заново уже нет никакого желания. А нужно было всего навсего почаще сохраняться.

В SAS EG 5.1 и выше данная проблема решена за счет опции автосохранение (tools->options->Project Recovery). Должна стоять галочка Enable Project Recovery (кстати говоря по умполчанию она как раз стоит).

Ниже привожу пример работы этой опции:

2. Log Summary

Также всем приходилось ковырять лог на предмет поиска ошибки. Чаще всего делалось это следующим образом: нажимались клавиши Ctrl+F и далее вводился текст «ERROR:».
Теперь же все ошибки, warnings и notes собраны в одном месте:

Надо сказать, что этот лог стал похож на лог из SAS Data Integration Studio.
И еще хочу сказать, что это опция появилась лишь в SAS EG 6.1, так что насладиться пока этим могут не все.

Далее расскажу еще о нововведениях, которые появяться в SAS EG 6.1

3. Версионность программ.

Теперь вы можете смотреть историю изменения программы (дата, кем изменена). Даже сможете сравнивать куски истории, подсвечивая изменения.

Правда кто-то может сказать, что всегда пользовался SVN и от него не откажется и тоже будет в каком-то смысле прав :).

4. Подсветка выделенного эелемента
Те кто пользовался и пользуется Notepad++  давно привыкли, что когда вы выделяете элемент, то все его дубли также подсвечиваются по всему тексту. Теперь эта опция доступна и в SAS EG6.1

5. Поиск по коду или по комментариям (либо и по коду и комментариям). Днная опция доступна уже с версии SAS EG5.1

6. Начиная с версии SAS EG 5.1 стало возможным делать исследования данных на лету.
В SAS EG это называется Explore:

Так вот, в версии SAS EG 6.1  стало возможным сразу запускать Explore данных при их открытии.

P.S.
Многие новшества я опустил, однако все уже я думаю привыкли к автоподсказкам в SAS EG, а также всроенной документации.

Ответ на задачу по Download Excel files from FTP.

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

Ниже привожу свой вариант решения задачи из предыдущего посата.

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

Для начала немного расширю задачу тем, что на FTP сервере лежит не один файл, а много. Также имена файлов заранее не известны.

Как мы видели ошибка выглядела следующим образом:This «filename FTP» access method is not supported by «proc import». Please copy the file to local disk before running the procedure.

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

И так последовательность действий:

1.  Получаем список файлов и их расширения, находящихся на FTP сервере:

В результате мы получим в таблице dirlist полный список файлов из папки Files

2. Теперь задача закачать необоходимые нам файлы. Для этого напишим следующий макрос:

Данный макрос:

  1. принимает на вход файл, который нужно перекачать в локальную дирректрию.
  2. создает временный файл copy.txt, куда пишутся команды ftp (логин, пароль, взять файл, выход)
  3. иксами переходим в нужную дирректорию
  4. иксами запускаем созданный файл на исполнение
  5. иксами удаляем наш файл.

Далее просто вызываем данный макрос в шаге data set.

Результатом будет полная копия всех файлов с FTP в папке C:SASDATA на локальной машине.

И уже после этого спокойно используем proc import.

Вот такое решение задачи.

P.S.
Хочу сразу заметить, что имена файлов могут начинаться с цифр, а также содеражать больше 32 символов в названии, поэтому когда будите делать Proc import будьте внимательны.

Также можно сделать Proc import универсальным, т.е. оберунуть этот процесс в макрос, который на вход будет помимо названия принимать еще и размерность файла.
Получиться что-то вроде этого:

В данном случае макрос получает на вход:
filename — имя файла
sasname — имя sas файла, куда мы закачиваем данные
ftype — размерность файла (txt, csv, xls, xlsx)

таким побразом мы можем просто пробежаться по всей таблице dirlist и закачать сразу все файлы, не зависимо от того какая размерность у этих файлов.

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

До скорых встреч!

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

Download Excel files from FTP. Загзузка данных с FTP сервера.

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

Не для кого не секрет, что на SAS можно сделать любые задачи. Я бы даже сказал, что тяжело представить задачи, которые сделать нельзя.

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

Казалось бы элементарная задача.
Пишем filename … ftp ….;  и в путь…

Да не тут-то было…

Задача осложнилась тем, что файлы на FTP имели различные форматы, такие как:
TXT, CSV, XLS, XLSX.  Т.е. даже формат excel 2010.

Для начала давайте попробуем загрузить txt файл (внутри делимитер ‘;’):

Теперь посмотрим лог данной программы:

Из лога видно, что все загрузилось корректно и правильно.

Давай те же теперь попробуем загрузить xlsx файл:

Посмотрим теперь лог:

И мы видим ошибку.  Связанную с тем, что не получиться импортировать с FTP XLSX файл.

Т.е. проблема с Excel файлами.

Честно говоря пришлось поломать голову над решением этой задачи.

Поэтому уважаемые читатели, вопрос к вам: как бы вы решили эту задачу ? 


Свой вариант решения дам на слудующей неделе.

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