SAS 9.4. Options PRESENV или как не потерять данные из WORK библиотеки.

Всем привет.

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

Так вот в SAS 9.4 появилась возможность сохранять все ваши наработки и промежуточные результаты, хранящиеся в библиотеке Work. И более того вы может эти результаты наслеловать из другой сессии и продолжать использовать.

Для этого вам нужно воспользоваться опцией PRESENV.

Как она работает, вы можете ознакомиться из приведенного видео:

Хочу сказать, что помимо данных она позволяет сокранять макросы, глобальные переменные.
Однако не дает сохранять views. Так что будьте аккуратнее.

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

P.S.
A Вы уже перешли на SAS 9.4?

SAS 9.4. ODS PowerPoint или как автоматизировать создание презентаций.

Всем привет!

Не для кого не секрет, что несмотря на все новые продукты и технологии популярность продуктов Microsoft не уменьшается, а скорее всего только растет.

Задачей многих аналитиков в том числе является формирование отчетов для руководства. Довольно часто нужно делать эти отчеты в виде презентаций в PowerPoint.

Давайте теперь пофантазируем и представим, как было бы здорово, еслибы:

  • отчет собирался сам
  • каждый раз со вежими данными
  • в определенное время 
  • при этом вы не тратили бы на это ни секунды времени

(Прям как в сказке).

А еще, было бы звдорово, если бы отчет автоматически рассылался всем участникам за 20 минут до встречи (для ознакомления).

Так вот теперь сказки становятся реальностью….

Теперь в версии SAS 9.4. мы можем делать сови презентации просто SAS кодом, а также наплнять их любой инофмацией, красивыми графиками, создавать свои фоны и многое-многое другое.

Приведу простенький пример создание презентации из двух слайдов (код программы, как всегда вы можете взять здесь).

Первый слайд:

И второй слайд:

С такими технологиями вы теперь можете оптимизировать создание презентаций для руководства. И они всегда будут содержать актуальную информацию.

Всем удачи!

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

SAS 9.4. Координаты городов мира.

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

Не знаю замечали вы или нет, но уже при установке SAS у вас появляется большое кол-во справочной информации.

Сегодня я хотел бы поговорить о координатах городов. Возможно уже кто-то сталкивался с вопросом «от куда же их получить?».

Координаты большого кол-во городов содержаться в файлике: world_cities, который лежит в библиотеке mapsgft.

Хочу заметить, что эта библиотека доступна пользователям по умолчанию.

Но что важно, так это то что информации в ней значительно прибавлилось при перехоже с версии SAS 9.3 на SAS 9.4.

В этом файлике содержатсья координаты всех больших городов всего мира и в том числе России.

Давайте посмотрим наглядно на картинках, как прибавились Российские города в данном справочнике:

Было:

Стало:

А теперь в цифрах:

Кол-во Российских городов:

sas 9.3: 167

sas 9.4: 710

Общее кол-во городов:

sas 9.3: 3 600

sas 9.4: 215 441

Как видно из цыфр кол-во городов выросло почти в 100 раз :), а по России в 6 раз.

P.S.
Не хотел бы касаться политических сторон данной статьи, поэтому Крыма на картах нет.

P.P.S.
Если хотите построить такую картину, то можете скачать код здесь и просто запустите его.

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

Меняем значение sequence в SAS Customer Intelligence Studio

 Всем привет!
В этой статье будет описан способ как изменить номер, с которой начинается последовательность кампаний в SAS Customer IntelligenceStudio.

К сожалению, в SAS не реализован программный метод создания последовательности или сиквенса, в отличие от того же Oracle. В SAS Customer IntelligenceStudio также не реализован какой-то красивый способ создания последовательности.  Реализована последовательность через SAS DATASET, который находится в папке программы: 
SASconfigLev1ApplicationsSASCustomerIntelligenceDataMAMiscsequence.sas7bdat
Таблица (DATASET) выглядит примерно так:
Количество позиций может отличаться, в зависимости от того каким функционалом пользуетесь. За значение последовательности отвечает SKCampaign, а точнее Number, значение которого стоит напротив SKCampaign
Создадим новую кампанию с существующими значениями:

Номер кампании 26. Если создать новую кампанию, то номер кампании уже будет 27.
Перед тем, чтобы изменять какие-либо значения рекомендую сделать бэкап файла Sequence.sas7bdat.
Поменяем у SKCampaign значение Number = 250.
Для того, чтобы эти изменения вступили в силу, необходимо перезапустить Web Application Server, на котором располагается SAS Customer Intelligence Studio. В моём случае – это Jboss Server 6.
 
Следующий пункт можно не делать, если при создании новой кампании всё отработало без ошибок.
Возможно понадобиться поменять User Rights для файла Sequence:

Заходим в SAS Customer Intelligence Studio и создаём новую кампанию:
Как видно порядковый номер изменился.
Интересно, что каждый раз, когда перезапускается Web Application Server, значение Number увеличивается до ближайшего числа, кратного 25 (+1). То есть, если крайнее значение кампании было 33, то после перезапуска начнётся с 51, если было 101, то после начнётся с 126.
Если же что-то сломалось и перестало работать, то восстановите бэкап файл. Если же такого файла нет, то простое удаление sequence.sas7bdat восстановит работоспособность системы, правда вся нумерация начнётся с 1.
На этом всё!

Курсы Доллара и Евро. Download information from the Internet. Part3.

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

Часто бывает так, что нужно использовать в своих программах курсы валют на сегодняшний день.
Для того чтобы решить эту задачу можно, как вариант, каждый раз вбивать значения руками и только потом запускать программу. Однако мало кому понравиться такое решение. Хочется же все автоматизировать.
Хорошо когда эти значения вы можете взять из Ваших истончиков данных, например загрузить из АБС (автоматизированная банковская система), либо из каких-то еще источников, где этот параметр актуализируется ежедневно или чаще.

А что делать, если такого источника нет под рукой?

На этот вопрос я и дам ответ.

Единственное что вам понадобиться так это чтобы был доступ к интернет, хотябы частичный, хотябы просто на сайт ЦБ.

После этого вам будет достаточно использовать код моей програмы в своей и пользоваться макропеременными &dollar  и  &euro.

Данный пост является ответом на заданный мне вопрос
Также вы можете ознакомиться с предыдущими статьями по загрузке данных из интернета:
С уважением, 
Тимаков Николай.

Искусственный вызов ошибки и вывод русского текста ошибки в SAS Customer Intelligence Studio

Всем привет!
В этой статье будет описан способ выводить сообщение об ошибке со своим русским текстом в SAS Customer Intelligence Studio (SAS CI).

В одной из предыдущих статей было описано, как обрабатывать ошибки в SAS Macro. Также в статье были упомянуты, какие переменные отвечают за  ошибки в SAS
Случается, что необходимо остановить работу программы и сообщить пользователю какое-то сообщение. Когда же речь идёт о SAS Customer IntelligenceStudio, то появляется ряд моментов как правильно это осуществить. 
Чтобы искусственно вызвать ошибку, требуется поменять значение автоматической макропеременной SYSCC на целое значение, которое больше 1.  
Например, присвоим значение 500:
 %let SYSCC = 500;
Создадим PROCESS NODE (узел процесс) в SAS Customer Intelligence Studio и посмотрим что получится:
Таким образом, значение SYSCC отображается в окне ошибки.
Макро переменная MAMsg отвечает за параметр текста ошибки. 
Присвоим следующее значение:
%let MAMsg = HELLO WORLD!;

Теперь видно и текст ошибки. И вроде бы ничего, но выглядит это немного странно – всё на русском, кроме сообщения. 
 
Попробуем присвоить значение переменной русские текст:
%let MAMsg = ПРИВЕТ!;
Попробуем разобраться, почему так происходит. Для этого возьмём функцию KCVT и преобразуем слово ПРИВЕТ в кодировку UTF-8.
Несложными манипуляциями можно выяснить, что слово ПРИВЕТ изначально в кодировке ANSI, но когда передаётся из SAS в Java программы, преобразуется в кодировку UTF8. 
Более того, если немного покопаться в исходниках программы, то можно обнаружить код, который отвечает за вывод этой ошибки. В принципе, можно сделать соответствующую доработку и перекомпилировать исходники, но сложность такой доработки очень высока.
Кстати, текст который стандартно отображается при любой ошибке также «зашит» в Java в качестве UTF кода и представлен в виде кодов букв. 
Например, слово ПРИВЕТ будет отображено в виде:
Но, к сожалению, если этот код подать в качестве ошибки, он так и останется в том же виде:
В итоге, после долгого времени экспериментирования был найден способ вывести русские буквы в тексте ошибки, используя функцию KCVT в макросе:

На этом всё!
Пользуйтесь на здоровье!

Как получить Java Campaign ID, а также другие скрытые параметры кампаний,используя SAS Marketing Automation Integration Utilities

Всем привет!
В этой статье речь пойдёт об одном малоизвестном параметре в SAS Customer IntelligenceStudio, а точнее об одной из возможностей получить значение Java Campaign ID, используя SAS Marketing Automation Integration Utilities

Значение, которое требуется записать в параметр или переменную можно найти  в Campaign Properties (Свойства Кампании):
Зачем это нужно? Параметр необходим для работы с веб интерфейсом, а именно создание прямых ссылок на существующие кампании.

К сожалению, стандартного функционала SAS Customer IntelligenceStudio не достаточно для решения вопроса. Для решения существуют разные методы. Из того, что я смог обнаружить – это парсить лог файлы Web, парсить темповые файлы контент сервера, использование JavaObjectsс вызовом необходимых параметров Java из специфических процедур или использовать SAS Marketing Automation Integration Utilities. Самый качественный результат приносит только использование Integration Utilities.

В случае установки пакета SAS Marketing Automation автоматически устанавливается и настраивается Marketing Automation Integration Utilities, который можно найти по SASHomeSASMarketingAutomationIntegrationUtilities
Что такое Integration Utilities? Эти утилиты представляет собой набор Java программ, которые находятся за пределами Application Server, который в свою очередь используется для работы SAS Customer Intelligence Studio. В этом наборе присутствуют следующие программы:
·         Утилита для извлечения метаданных
·         Утилита для импорта метаданных
·         Утилита для продвиженияперемещения метаданных кампании
Эти утилиты запускаются из командной строки. Кроме того, также есть и Java API, который позволяет интеграцию с другими программами, например, используя SAS EG.
XML используется в качестве основного инструмента для передачи и приема данных при работе сервером метаданных.  Входной XML файл содержит запрос для извлечения данных. Выходной XML файл содержит очень детальную информацию по любым параметрам запроса.
Нас интересуют данные по хранимым и запускаемым кампаниям.  Для этого запустим maextract.exe через командную строку:

Программа требует ряд обязательных параметров, которые необходимо указать:

1.       Username– пользователь, заведенное в SAS Management Console и имеющий права для доступа в CI. Обычно указывается с доменом.
2.       Password пароль от пользователя.
3.       Domainпо умолчанию DefaultAuth, то есть Authentication Domain из SAS MC.
4.       Contextname – имя бизнес контекста, по которому будет создаваться отчёт.
5.       Input file – специальный XML файл, который необходимо создать самому для того, чтобы получить необходимые данные. Ниже будет пример самого простого запроса.
6.       Output file – сгенерированный системой файл с требуемыми данными.
Стандартный запрос в input файл, который возвращает всю возможную информацию по всем возможным кампаниям, следующий:
<MAExtractRequest>
<CampaignDO detail=»ALL»/>
</MAExtractRequest>
Логи работы программы можно найти вSASHomeSASMarketingAutomationIntegrationUtilities..logs.
Мой запрос в командной строке был примерно следующий:
 
В результате работы был сгенерирован файл output.txt (я его переименовал в output.xml для лучшего отображения). Как можно увидеть, в этом файле содержится очень много интересной информации, которую можно использовать при разработке узлов в SAS Customer Intelligence.
Более подробную информацию по Integration Utilities можно найти в документе Customer Intelligence Integration Utilities на официальном сайте SAS.
На этом всё!