B&D Russia

B&D Russia 

SAS Information Map Studio

ВВЕДЕНИЕ

Еще совсем недавно существовала (пожалуй, и сейчас существует) должность, имеющая название «информационный технолог», функциональные обязанности которой определяет работа с информацией. Это человек, который знает где, как и какая информация лежит, и как ее правильно взять, чтобы получить то, что надо. Функции автоматизации работы такого информационного технолога выполняет решение SAS Information Map Studio. Создав один раз информационную карту и сделав ее доступной нужному кругу сотрудников, такой специалист избавляется от необходимости объяснять каждому, что поле с поэтическим именем dfgfdfdf123 содержит остатки, приведенные к числу Х на дату У. (А ведь без этих знаний теряют свой смысл все накопленные в организации массивы данных!).
Эта статья содержит в себе советы и подсказки по работе с SAS Information Map Studio, полезную информацию и детальное описание действий пользователей.
Статья адресована в первую очередь пользователям SAS, имеющим некое представление о работе в SAS Information Map Studio и о самих информационных картах, SAS Management Console, Data Integration Studio. Также данная статья будет интересна тем, кто занимается проектированием и выбором программно-аппаратной инфраструктуры для будущих проектов.
Материалы публикуются на русском языке впервые, поэтому будем признательны за любые предложения и/или замечания. НАСТРОЙКА ВНУТРИПРОГРАММНОГО ОКРУЖЕНИЯ

Как сделать доступными пользовательские форматы  ?

В SAS Information Map Studio есть два пути, позволяющих сделать User-Defined Formats доступными. Первый заключается в том, чтобы поместить определенно названный каталог с форматами в директорию, назначенную LIBRARY libref, второй - определить каталог с форматами в системе FMTSEARCH, находящийся в конфигурационном файле SAS.

Используя команду LIBRARY libref :
1. Назовите каталог с форматами formats.sas7bcat.
2. Поместите ее в директорию, назначенную командой  LIBRARY libref. По умолчанию, SAS Configuration Wizard назначает командой LIBRARY libref папку
SAS-config-dir\Lev1\SASMain\SASEnvironment\SASFormats directory, где
SAS-config-dir - директория настроек SAS.

Используя опцию FMTSEARCH:
1. Добавьте опцию -CONFIG в файл конфигурации SAS
SAS-config-dir\Lev1\SASMain\sasv9.cfg это указывает файлу конфигурации на обращение к каталогам форматов, определенных пользователем.  Например, Вы могли добавить -CONFIG в следующую системную опцию:
-config "SAS-config-dir\Lev1\SASMain\userfmt.cfg".

Как сделать SAS программы доступными  как  SAS Stored Processes в информационных картах?

Чтобы использовать SAS программы для обновления или создания информационной карты,конвертируйте программу в SAS Stored Processи сделайте ее доступной для использования  информационной картой.

1. Таблица и ее библиотека должны быть определены в метаданных перед тем, как таблица начнет использоваться в качестве источника информации для информационной карты. (По этой причине вы не можете начать использовать библиотеку Work).
Чтобы определить таблицу (таблицы) отчета и относящуюся к ней библиотеку SAS в метаданных, выполните следующие шаги:
- если таблица отчета физически не существует, то запустите программу один раз, чтобы создать таблицу и сохранить ее в постоянной библиотеке. Созданная таблица должна нести информацию о заголовках колонок и их атрибутах. Вот пример такой программы:

Libname source 'path-to-source-data';
Libname stpout 'c:\temp';
Data stpout.result_set;
Set source.data1;
/* more code */
run;

- Используйте Data Library Manager (в SAS Management Console), SAS Data Integration Studio или SAS Metadata LIBNAME Engine, чтобы определить таблицу отчета и ее библиотеку в метаданных. Когда Вы устанавливаете libref для определения библиотеки, используйте тот, что вы выбрали в программе. Для образца, показанного выше, вы должны были выбрать libref STPOUT.

2. В программе вставьте значение *ProcessBody сразу после того, как %GLOBAL macro переменная объявлена. Этот комментарий необходим, когда программа ссылается на macro переменные (global или reserved) и stored process запускается на SAS Workspace Server.

3. Измените значение LIBNAME для вашей таблицы отчета, чтобы оно ссылалось на  библиотеку Work workspace сервера. Теперь stored process создаст отчет в этой временной локации.
Следующий пример показывает измененную программу:

*ProcessBody;
Libname source ‘path-to-source-data';
Libname stpout (work);
/* The output library and table must already */
/* be defined in metadata */
Data stpout.result_set;
Set source.data1;
/* more code */
run;

4. Сохраните программу.

5. Назначьте программу в метаданных как stored process (используя BI) Manager в SAS Management Console или SAS Enterprise Guide). Убедитесь, что завершение программы произойдет на workspace сервере и после сделайте тип output'a  - NONE. Если вы используете global macro переменные в вашей программе и хотите использовать их для того, чтобы уточнить значения для пользователей, то добавьте stored process input параметр для каждой global macro переменной.

6. Пользуясь BI Manager, проверьте, есть ли у пользователей  SAS Information Map Studio доступ ReadMetadata к stored process.
Теперь stored process могут быть использованы с information map.

Ограничение доступа к определенным столбцам, используя SAS Stored Process

Можно использовать SAS Stored Process, чтобы ограничивать доступ пользователей information map к определенным рядам ячеек в таблице. Относящийся  к Information Map, Stored process завершается до любого из запросов, которые создаются из этой Information Map. Следовательно, Stored process  может быть использован, чтобы выполнить любой тип подвыборки данных, который должен произойти до запуска запроса.

Для  ограничения доступа к определенным строкам информации в вашей таблице Вы можете создать stored process, который фильтрует строки, поэтому запросы пользователя информационной карты будут касаться только оставшейся информации. Чтобы определить, кому ограничить доступ, воспользуйтесь _METAPERSON и _METAUSER reserved макро переменными в исходном тексте stored process (SAS program). Эти macro переменные являются системными и несут в себе метаданные пользователя (_METAPERSON) и логий (_METAUSER).

Следующий пример описывает, как создать stored process, использующий _METAPERSON reserved macro переменную, чтобы ограничивать доступ к строкам.

Созданный вами stored process должен включать в себя запрос, фильтрующий ID пользователей, которые не принадлежат пользовательский отчет. Обычный запрос выглядит следующим образом:
Employee_ID IN (
SELECT org.Employee_ID
FROM
orstar.Organization_Dim AS org,
<subquery:
generates-lookup-table-containing-report-user's-employee-id>;
WHERE org.Employee_ID = lookup.Employee_ID
)

Имена Employee_Name в таблице Organization_Dim используются как метаданные имен пользователей сотрудников (_METAPERSON). Воспользовавшись командой SELECT, вы можете определять ID сотрудника, который запускает отчет.

SELECT Employee_ID FROM orstar.Organization_Dim AS o2
WHERE (o2.Organization_Dim = "&_metaperson") AS lookup

Включите подзапрос в структуру запроса, который вы создали, и вы получите:

Employee_ID IN (
SELECT org.Employee_ID
FROM
orstar.Organization_Dim AS org,
(SELECT Employee_ID FROM orstar.Organization_Dim AS o2
WHERE (o2.Employee_Name = "&_metaperson")) AS lookup
WHERE org.Employee_ID = lookup.Employee_ID
)
Следующий пример показывает, как созданный вами запрос вставлен в программу, контролирующую таблицу Order_Fact. Как конвертировать эту SAS программу в stored process и использовать с Information Map, описано выше.

*ProcessBody;
libname orstar 'c:\Orstar';
libname ortemp (work);
proc sql;
CREATE TABLE ortemp.Orders_rls AS
SELECT * FROM orstar.Order_Fact
WHERE
Employee_ID IN (
SELECT org.Employee_ID
FROM
orstar.Organization_Dim AS org,
(SELECT Employee_ID
FROM orstar.Organization_Dim
AS o2
WHERE (o2.Employee_Name = "&_metaperson"))
AS lookup
WHERE org.Employee_ID = lookup.Employee_ID
);
quit;

Как сделать детальные данные доступными  для Drill-through?

Можно использовать SAS OLAP Cube Studio или OLAP procedure для того, чтобы сделать детальные данные доступными в кубе. В SAS OLAP Cube Studio вы можете определить таблицу для drill-through, когда создаете или редактируете куб, пользуясь Cube Designer wizard как показано на рисунках ниже:

Use input table for Drill-Through

 

Select table for Drill-Through from list

 

В функции PROC OLAP,  используйте опцию DRILLTHROUGH_TABLE, чтобы определить имя drill-through table для использования. Больше информации об опции DRILLTHROUGH_TABLE можно найти  в "PROC OLAP Statement",  SAS OLAP Server: User's Guide.

Как сделать детальные данные доступными на OLAP сервере?

SAS библиотека должна быть определена так, чтобы OLAP сервер имел к ней доступ. Самый простой путь определить библиотеку - назначить ее в метаданных. Чтобы сделать библиотеку назначенной, нужно выполнить следующие шаги:

1. В Data Library Manager (находиться в SAS Management Console) найдите папку SAS Libraries и проделайте одно из следующих заданий, которое позволит вам выбрать дополнительные опции:
- для новой библиотеки: кликните правой кнопкой мыши на SAS Libraries и выберите New Library. Затем следуйте мастеру настройки.

 

- для созданной библиотеки: откройте папку SAS Libraries и кликните правой   кнопкой на желаемой библиотеке. Затем  выберите Properties из меню и после закладку Options.

 

2. Кликните на Advanced Options.

3. Выберете пункт Library is pre-assigned, в закладке Pre-Assign.

4. В закладке Assign, New Library Wizard, убедитесь, что выделенный сервер - это сервер OLAP.

 

 

5. Нажмите OK в диалоговом окне properties, или закончите вводить информацию wizard.

6. Перезагрузите OLAP сервер.

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

Как сделать детальные данные доступными для информационной карты?

Чтобы сделать отчет с возможностью drill-through, сначала эта опция должна быть выставлена в информационной карте. Вы можете сделать это одним из двух способов:
- когда Вы сохраняете новую информационную карту, отметьте пункт  Allow (OLAP) drill-through to detail data в диалоговом окне Save As.
- откройте существующую информационную карту, после - правый клик, Properties . Отметьте пункт Allow (OLAP) drill-through to detail data в закладке Definition.

Как сделать подписи  колонок для Drill-Through таблиц доступными?

Если Вы хотите видеть подписи колонок при совершении операции drill through, Вам необходимо выставить опцию в Server Manager (SAS Management Console).

Прежде, чем Вы сможете сделать подписи доступными, Вы должны убедиться, что SAS 9.1.3 Service Pack 4 установлен. (См. "Upgrading Repository Metadata" в Metadata Manager Help, SAS Management Console). После того, как метаданные модернизированы, проделайте следующие шаги, чтобы сделать подписи колонок доступными:

1.   В навигационной ветке Server Manager'а, найдите строку, показывающую ваш физический OLAP сервер.

  1. Выберите сервер и File > Properties из меню.
  2. В диалоговом окне выберите закладку Options, затем Advanced Options.

 

4.   В окне Advanced Options выберите закладку Server, затем отметьте пункт Use the drill-through table column labels.

5.   Нажмите ОK, чтобы сохранить параметры.
6.   Перезагрузите OLAP сервер.

Как просмотреть детальные данные для Большого Куба?

Если ваш куб несет в себе очень большое количество детальных данных, тогда, чтобы просмотреть эти данные в рамках Information Map Studio, Вам придется увеличить Java heap size для SAS Information Map Studio или увеличить максимальное число drill-through строк, которое может поддержать ваш SAS OLAP сервер.

Подробнее об увеличении heap size, см. "Increase the Java Heap Size for SAS Information Map Studio".
Чтобы увеличить количество drill-through строк, можно изменить набор настроек OLAP сервера в Server Manager (в SAS Management Console), выполняя следующие шаги: (Число drill-through строк, показываемое в запросе, по умолчанию равно 300000):

1. В навигационной ветке Server Manager'а найдите строку, показывающую ваш физический OLAP сервер.

 

2. Выберите сервер и File > Properties из меню.
3. В диалоговом окне выберите закладку Options, затем Advanced Options.
4. В диалоговом окне Advanced Options выберите закладку Servers, затем введите значение для поля Maximum number of flattened rows.
5. Нажмите ОК и сохраните изменения.

Советы по созданию Information Maps

Как создать фильтр для Measure (Меры), Category (Измерения) или Column (Колонки)?

Когда Вы создаете фильтр в SAS Information Map Studio, Вы можете определить подмножество категорий, мер и колонок таблицы в выражении фильтра.

Чтобы скрыть фильтр от пользователей SAS Web Report Studio, используйте только табличные колонки в выражении фильтра, так как SAS Web Report Studio не показывает фильтры, основанные только на табличных колонках.

Содержание выражения фильтра устанавливает тип SQL команд, созданных для фильтра.
Если Вы определите  множество данных measure (чьи значения по определению собраны) в выражении фильтра, то SQL запрос, созданный для фильтра, будет включать в себя условие HAVING, означающее, что фильтр вычислен после того, как множества данных в запросе собраны. Если Вы определите множество category или табличную колонку (чьи значения не собраны) в выражении фильтра, то созданный SQL запрос будет включать в себя условие WHERE, означающие, что фильтр вычислен до того, как множество данных собранно в запросе.  Условие HAVING генерируется, только если Вы применяете функцию aggregate к множеству category или табличной колонке в выражении фильтра. В таком случае, созданный SQL будет нести условие HAVING, потому что множество category или табличная колонка соединены. Следующие разделы описывают сценарии, где фильтры созданы с множеством measure, category и табличной колонкой. Всего использовано два источника данных:

Таблица сделок (ORDER_FACT), которая включает в себя продажи продуктов компании. Таблица включает в себя следующие колонки:  
Product_ID
Employee_ID
Order_Date
Total_Retail_Price
CostPrice_Per_Unit
Quantity
Таблица продуктов (PRODUCT_DIM), которая включает в себя информацию о продуктах компании. Таблица включает в себя следующие колонки:
Product_ID
Product_Name

ORDER_FACT соединен с PRODUCT_DIM в колонке Product_ID.
Множества данных category Product Name и Order ID были созданы из колонки  Product_Name в PRODUCT_DIM и колонки Order_ID в ORDER_FACT.

Сценарий: Фильтр данных после объединения

Вы хотите установить, какие продукты вашей компании полезны. Кликните Edit в закладке Definition в диалоговом окне Data item Properties, чтобы открыть окно Expression Editor. Используйте колонки Total_Retail_Price, CostPrice_Per_Unit и Quantity, чтобы создать множество данных measure, под названием Gross Profit, которое вычисляет валовую прибыль из продаж продукта.

 

В закладке Classifications/Formats в диалоговом окне Data Item Properties выберем Measure, как классификацию элемента и SUM(argument), как объединяющую функцию.

 

После того, как Вы создали элемент данных, создайте фильтр, который проверит валовую прибыль (что валовая прибыль с продукта больше 0). Если Вы хотите вычислить объединенное значение (валовая прибыль всех сделок, связанных с продажей этого продукта), используйте Gross Profit, measure элемент в выражение фильтра.

 

Выберете элемент данных Product Name, Gross Profit и фильтр для тестового запроса.

Сгенерированный запрос SQL, должен быть похож на следующий:

 

Результат должен выглядеть так:

Сценарий: Убрать фильтр из SAS Web Report Studio

Вы хотите применить пре фильтр, который не дает пользователям таблицы ORDER_FACT просматривать сделки, произошедшие до 2000 года. Так же, Вы не хотите, что бы пользователи SAS Web Studio использовали этот фильтр, так как он будет применен как пре фильтр. Для создания фильтра, отображающего даты заказов, нажмите Edit Data Item в диалоговом окне New Filter, чтобы выбрать табличную колонку Order_Date как значение для поля Data Item. Затем, в секции Value(s), выберите число, до которого вы хотите фильтровать данные.

 

Затем назначьте фильтр как пре фильтр в таблице ORDER_FACT.

Когда пользователи SAS Web Report Studio откроют информационную карту, этот фильтр не будет показан. Каждый раз, при использовании таблицы ORDER_FACT в запросе, данные будут переделаны (содержать только заказы после 2000 года (включительно)).

Как использовать SAS Stored Process с Information Map ?

Чтобы использовать SAS Stored Process с информационной картой, последняя должна иметь тот же источник данных, как и stored process. В свою очередь, и stored process должен быть выбран для информационной карты.

Stored Process, объединенный с Information Map, завершается прежде любого запроса, создаваемого Information Map. Этот порядок обработки позволяет использовать инструменты SAS, как, например, DATA step или macro language для обработки данных, которые будут использованы для Information Map. Предварительная обработка часто включает в себя запрос или обновление данных для пользователя (например, когда пользователю позволено вводить параметры значений). По этой причине полезно использовать библиотеку Work сервера Workspace, чтобы хранить временные копии данных, обработанные отдельными пользователями. После того, как Вы создадите stored process (используя SAS Data Integration Studio или SAS Enterprise Guide), выполните следующие шаги для того, чтобы использовать stored process с информационной картой:

1. Убедитесь, что stored process загружается на Workspace сервере (stored process, который запускается на stored process сервере, не может быть использован для информационной карты!).

2. Просмотрите программный код вашего stored process'a. Убедитесь, что следующая команда вставлена сразу после global макропеременной (%GLOBAL):

*ProcessBody;

3. Убедитесь, что каждая таблица для отчетов Stored Process определена в метаданных. Это необходимо сделать до использования таблицы в качестве источника данных. Выполните следующие шаги для того, чтобы определить таблицу и ее библиотеку в метаданных:

a. Если таблица физически не существует, то запустите Stored Process один раз, чтобы создать ее и сохранить в постоянной библиотеке. Созданная таблица должна нести в себе информацию о заголовках колонок и их атрибутах.

b. Используйте Data Library Manager (в SAS Management Console), SAS Data Integration Studio или SAS Metadata LIBNAME Engine, чтобы определить таблицу для отчета и ее библиотеку в метаданных. Для библиотеки используйте тот же libref, что Вы определили в программном коде.

4. Убедитесь, что источник данных, определенный вами для информационной карты, является таблицей  для отчета stored process'а. Например, если отчет stored process'а записан в таблицу RESULT_SET в библиотеке STPOUT, то Вы должны использовать эту таблицу как источник данных для информационной карты.

5. Из меню SAS Information Map Studio, выбираем  Tools _ Stored Processes, а затем  - нужный stored process в диалоговом окне.

 

6. Нажмите ОК, чтобы связать stored process с информационной картой и выйти из диалогового окна. Когда запрос, сгенерированный информационной картой, выполнен, stored process запустится (до того, как запрос будет обработан).

Как использовать вводимые параметры SAS Stored Process с Information Map?

Если Вы используете SAS Stored Process с информационной картой и хотите, чтобы stored process обновил отчетность пользователей, то добавьте входные параметры.

Если программный код вашего stored process'а использует макро переменные, которые вам необходимы для уточнения значений, выполните следующие шаги:

1. Добавьте входной параметр для макропеременной (если вы хотите предложить пользователям ввести значения этих переменных). Используйте BI Manager (в SAS Management Console), SAS Data Integration Studio или SAS Enterprise Guide, чтобы ввести входные параметры в stored process.

2. Объедините stored process с информационной картой.


Когда создан запрос из информационной карты, перед его запуском, stored process  предложит пользователю ввести значения параметра. Использование алиаса Таблицы

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

Пример: Рекурсивное Соединение

Вы создаете Employee таблицу, включающую в себя колонки Employee_ID, Employee_Name и Manager_ID. После вы вставляете дополнительный логический образ Employee таблицы, создавая тем самым связь между Manager_ID и Employee_ID, чтобы показать имя менеджера для каждого сотрудника.

Пример: Альтернативное Соединение Пары Таблиц

Вы создаете Order таблицу, включающую в себя колонки Origin_Location и Destination_Location, и таблицу Geography, включающую названия стран в колонке Location. Чтобы сопоставить страны производители со странами назначения, Вы должны создать некую связь между каждой _location таблицей в таблице Order и их логическими продолжениями из таблицы Geography. SQL код должен выглядеть примерно так:

FROM
Order INNER JOIN Geography
ON Order.Origin_Location = Geography.Location
INNER JOIN Geography as Geography_Alias
ON Order.Destination_Location = Geography_Alias.Location

Создание Условного SQL кода

Expression Editor в SAS Information Map Studio позволит вам создавать условный SQL код  для элементов данных.

Вы можете использовать команду CASE в выражении для относительных элементов данных, чтобы применить обработку для их значений. Следующие шаги описывают, как создавать относительные элементы данных, конвертирующие аббревиатуры названий стран в полные имена:
1. В SAS Information Map Studio откройте информационную карту, с которой вы хотите работать.
2. В меню выбираем Insert _ Data Item.
3. В поле Type выберем Character.
4. В закладке Definition, диалогового окна Data Item Properties, нажмите Edit, чтобы открыть
окно Expression Editor.
5. В поле Expression Text введите следующие выражение:

case <<GEOGRAPHY_DIM.Country Abbreviation>>
when 'AU' then 'Australia'
when 'BE' then 'Belgium'
when 'DE' then 'Germany'
when 'DK' then 'Denmark'
when 'ES' then 'Spain'
when 'FR' then 'France'
when 'NL' then 'Netherlands'
when 'IT' then 'Italy'
when 'GB' then 'United Kingdom'
when 'US' then 'United States'
else 'Other'
end

В этом выражении именем таблицы является GEOGRAPHY_DIM, а ярлыком колонки -Country Abbreviation.

 

6 Кликните на Validate Expression, чтобы проверить ошибки в выражении.
7 Кликните ОК, чтобы применить выражение  в элементе данных и выйти из диалогового окна Expression Editor.
8 Кликните ОК, чтобы закончить создание элемента данных и выйти из окна Data Item Properties.

Создание элементов данных из иерархий

Если Вы используете панель Physical Data в главном окне SAS Information Map Studio,
чтобы "автоматически" создавать элементы данных из иерархий (используя кнопки стрелочек или опцию Insert во всплывающем меню hierarchy), то когда MDX код сгенерирован для запроса, элемент данных превращается в набор элементов от первого уровня и ниже для всех уровней этой иерархии. Если вы хотите, чтобы элемент данных превратился во что-то другое, то Вы можете использовать Expression Editor, чтобы настроить соответствующее выражение.

Следующие шаги описывают, как создать элемент данных category, ссылающийся на элемент последнего месяца Year-Quarter-Month hierarchy, названный YQM:

1. В SAS Information Map Studio откройте information map, с которой Вы хотите работать.
2. Из меню, выберите Insert _ Data Item.
3. В закладке Definition окна Data Item Properties нажмите на Edit, чтобы открыть окно Expression Editor.
4. В поле Type выберите OLAP Category.
5. В поле Expression Text введите следующее выражение:

[YQM].[All YQM].LastChild.LastChild.LastChild

 

6. Кликните на Validate Expression, чтобы проверить ошибки в выражении.
7. Кликните ОК, чтобы применить выражение  в элементе данных и выйти из диалогового окна Expression Editor.
8. Кликните ОК, чтобы закончить создание элемента данных и выйти из окна Data Item Properties.

Авторский перевод - Баранов А.
Редактирование и введение - Нельская Т.Е.

2009 Business and Decision Copyright

Accessibility | legal notice | contact | sitemap | RSS