SAS Base

Fmtsearch

Справочник http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000279102.htm

1 шаг.

Создание пользовательских форматов и сохранение их в постоянную библиотеку:


%let path=c:\workshop\pg1;
libname orion "&path";

proc format library=orion;
	value ordertypefmt
		1 = 'Retail Sales'
		2 = 'Catalog Sales'
		3 = 'Internet Sales';
run;

Сообщение Log:

Формат был сохранен в каталог по пути c:\workshop\pg1

2 шаг.

Использование пользовательского формата в составлении отчета


options fmtsearch=(orion.formats);
data test;
length ID 8 Customer_Name $7 Order_Type 8 Order_Date 8;
input ID Customer_Name Order_Type Order_Date;
cards;
1 Tom 1 20756
2 Elen 2 20757
3 Gorge 3 20758
;

proc print data=test noobs;
format Order_Type ordertypefmt. Order_Date date9.;
run;

Результат выполнения программы:

Использование оператора IF и оператора WHERE

Шаг и использование

WHERE

IF

шаг PROC

Да

Нет

шаг DATA (источник переменной)

       оператор SET

Да

Да

       оператор присваивания

Нет

Да

       оператор INPUT

Нет

Да

       оператор SET/MERGE (несколько наборов данных)          

              переменная во ВСЕХ наборах данных

Да

Да

               переменная не во ВСЕХ наборах данных

Нет

Да

Макропеременные

Документация о языке macro: https://support.sas.com/documentation/cdl/en/mcrolref/69726/HTML/default/viewer.htm#titlepage.htm

Макропрограммирование — это текстовая технология обработки, поддерживающая символьную подстановку в коде SAS.

С помощью макропрограммирования можно:

  • создавать и использовать макропеременные в любом месте программы SAS;
  • создавать и вызвать макропрограммы, генерирующий настраиваемый код SAS.

Существует два типа макропеременных.

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

Автоматические макропеременные задаются при вызове SAS и всегда доступны. К ним относятся, например, следующие переменные: SYSDATE, SYSDATE9, SYSDAY, SYSTIME, SYSSCP, SYSVER

Для ссылки на макропеременную используйте формат &macro-variable-name

Данная программа выводит значения указанных системных макропеременных:


data new;
sysdate="&sysdate";
sysdate9="&sysdate9";
sysday="&sysday";
systime="&systime";
sysscp="&sysscp";
sysver="&sysver";
run;

proc print data=new noobs;
run;

Результат выполнения программы:

Значения всех автоматических макропеременных можно отобразить в Log с помощью оператора %put


%put _automatic_;

Пользовательские макропеременные могут сделать программы SAS более гибкими и облегчить их изменение. Используйте макрооператор %LET, чтобы создать макропеременную и назначить ей значение.

Общий формат оператора %LET:


%LET variable=value;

Значением в операторе %let может быть любая строка.

  • Длина от 0 (значение null) до 65534 (64K) символов.
  • Числовое значение сохраняется как символьная строка.
  • Математические выражения не вычисляются.
  • Сохраняется регистр значения.
  • Кавычки, в которые заключены литералы, сохраняются как часть значения.

Начальные и конечные пробелы удаляются из значения перед выполнением присвоения.

Пример подключения библиотеки с помощью макропеременной path:


%let path=c:\workshop\pg1;
libname ORION "&path";

Пропущенные значения

Необходимый справочник: Missing Values

Например, вам необходимо обозначить данные, которые пользователь не внес в таблицу (анкету), и они должны отличаться от других «миссингов», которые, например, создаются при неверном чтении данных.

Пропущенные значения, можно обозначать с помощью точки и латинской буквы, например, .n


data emp;
length ID 8 Name $7 Salary 8;
input ID Name Salary;
datalines;
1 Ivan 20555
2 Petr 36600
3 Egor .
4 Pavel .n
5 Anna 20555
6 Elena 25669
7 Julia .
8 Igor 64333
9 Maxim .n
;

В этом случае, например, мы можем вывести только тех слушателей, которые не указали свою заработную плату в анкете:


proc print data=emp;
where salary=.n;
run;

Получаем следующий отчет:

Таким образом, в 4 и 9 наблюдении есть специальные пропущенные значения.

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

Если для отчета нет данных, значение записывается с помощью X.

Если эксперт не смог надлежащим образом протестировать продукт, нет оценки, значение записывается с помощью I для «неполного теста».


data period_a;
  missing X I;
  input Id $4. Foodpr1 Foodpr2 Foodpr3 Coffeem1 Coffeem2;
  datalines;
1001 115 45 65 I 78
1002 86 27 55 72 86
1004 93 52 X 76 88
1015 73 35 43 112 108
1027 101 127 39 76 79
;

proc print data=period_a;
  title 'Results of Test Period A';
  footnote1 'X indicates TESTER ABSENT';
  footnote2 'I indicates TEST WAS INCOMPLETE';
run;

ODS HTML Statement (Настройка вывода отчета в нужном формате в программе SAS)

Для настройки вывода отчета в формате HTML с поддержкой ACTIVEX используйте оператор ODS (справочник: http://documentation.sas.com/?docsetId=odsug&docsetTarget=n0f5s1zezthhbrn1u0z71mh3wx64.htm&docsetVersion=9.4&locale=ru)

Данная программа строит секторную диаграмму (pie chart), используя таблицу GERMAN из библиотеки SASUSER в формате SAS Report:


PROC GCHART DATA =sasuser.german;
	PIE3D	 Gender /
 	SUMVAR=Pre TYPE=SUM NOLEGEND SLICE=OUTSIDE
	PERCENT=INSIDE VALUE=OUTSIDE OTHER=4
	OTHERLABEL="Other" COUTLINE=BLACK NOHEADING;
RUN; 

Для вывода секторной диаграммы в формате html с поддержкой ACTIVEX воспользуемся глобальным оператором ODS:

Примечание: измените путь или создайте папку 'c:\workshop\courses'


ODS html device=activex PATH='c:\workshop\courses';

PROC GCHART DATA =sasuser.german;
	PIE3D	 Gender /
 	SUMVAR=Pre TYPE=SUM NOLEGEND SLICE=OUTSIDE
	PERCENT=INSIDE VALUE=OUTSIDE OTHER=4
	OTHERLABEL="Other" COUTLINE=BLACK NOHEADING;
RUN; 

ods html close;

В директории c:\workshop\courses можно найти отчет в формате html

Создание пользовательских числовых форматов

Справочник: http://go.documentation.sas.com/?docsetId=proc&docsetTarget=p1xidhqypi0fnwn1if8opjpqpbmn.htm&docsetVersion=9.4&locale=ru

Пример 1. Создание числового формата для отображения номеров телефонов.


*Create Data*;
data phones;
infile datalines;
length ID 8 Name $10 Phone 8;
input ID Name Phone;
datalines;
1 Ivan 89164568799
2 Anna 89264567897
3 Dmitry 89056783452
4 Svetlana 89063452211
;

*Create format*;
proc format;
	picture phonefmt low-high='9 (999) 999-99-99';
run;

*Create report*;
proc print data=phones;
format Phone phonefmt.;
ID ID;
run;

Результат выполнения программы:

Пример 2. Создание числового формата для отображения зарплаты в рублях.


*Create Data*;
data salary;
infile datalines;
length ID 8 Name $10 Salary 8;
input ID Name Salary;
datalines;
1 Ivan 24567.65
2 Anna 45678.89
3 Dmitry 76543.56
4 Svetlana 56789.30
5 Valery 105600.30
;

*Create format*;
proc format;
	picture salaryfmt low-high='000 000 000 rub. 00 kop' (mult=100);
run;

*Create report*;
proc print data=salary;
format Salary salaryfmt.;
ID ID;
run;

Результат выполнения программы:

Proc Import

Синтаксис процедуры Import описана в справочнике https://support.sas.com/documentation/cdl/en/proc/70377/HTML/default/viewer.htm#n1qn5sclnu2l9dn1w61ifw8wqhts.htm

Пример импорта файла csv из директории c:\workshop\pg1


%let path= c:\workshop\pg1;
proc import datafile="&path\sales.csv"
        out=shoes
        dbms=csv
        replace;
	    getnames=no;
label   	var1 = 'ID' 
		var2 = 'Name'
		var3 = 'Last Name'
		var4 = 'Gender'
		var5 = 'Customer ID'
		var6 = 'Job Title'
		var7 = 'Country'
		var8 = 'Birth Date'
		var9 = 'Hire Date';
run;

title 'Results of proc import';
proc print label;
run;
title;

Фрагмент выводимого отчета:

Преобразование типов переменных


/*Create new Sas Data Set whith numeric Salary and character ID*/
data new;
length First $ 20;
input ID $ First $ Gender $ Country $ Age Salary :dollar10.;
datalines;
123456 Chang M China 35 $25000.05
987657 Li M China 28 $32800.00
999999 Ming F China 40 $12453.00
;
proc contents data=new;
run;
proc print data=new;
run;

/*Create new Sas Data Set whith character Salary and numeric ID*/
data type;
set new;
	Salary1= put(Salary, comma10.); /*format*/
	EmpID=input(ID, 10.); /*informat*/
drop Salary ID;
run;

proc contents data=type;
run;
proc print data=type;
run;

ROUND Function

Информация o функции ROUND находится в справочнике SAS 9.4 Functions and Call Routines.

Логику выполнения фукнции рассмотрим на примере.

Создадим набор данных new с двумя переменными:


data new;
value=234.687;
new_value=round(value);
run;

В данном случае переменная value округляется до целых частей по обычным правилам математики. Результат выполнения данного шага представлен ниже:

А если необходимо округлить до десятых, используем округляющую единицу:


data new;
value=234.687;
new_value=round(value, .1);
run;

В данном случае получаем результат:

Округлим значение до десятков:


data new;
value=234.687;
new_value=round(value,10);
run;

Результат получим следующий:

Если же использовать в качестве округляющей единицы использовать, например, 0.6:


data new;
value=234.687;
new_value=round(value,.6);
run;

То, получим следующий результат:

Функция ROUND производит округление в несколько шагов:

  1. 234.687÷0.6=391.145
  2. Далее берется целая часть от полученного результата – это 391
  3. После этого результат умножается на округляющую едницу 391х0.6=234.6

Select-When expression

Документация: http://support.sas.com/documentation/cdl/en/lestmtsref/69738/HTML/default/viewer.htm

Ниже приведены примеры использования выражения Select-When

Пример 1.


data new;
input a x;
datalines;
1 5
2 8
3 6
4 5
5 9
;

data test1;
set new;
select (a);
	when (1) x=x*10;
	when (2);
	when (3,4,5) x=x*100;
otherwise;
end;
run;

proc print data=test1;
run;

Пример 2.


data new;
length id 8 payclass $15 salary 8 hrlywage 8 hrs 8;
input id payclass salary hrlywage hrs;
datalines;
12345 monthly 2000 15 60
5678 hourly 3000 20 30
9123 no 2150 17 70
3456 monthly 1500 12 80
4759 hourly 2800 19 45
;

data test;
set new;
select (payclass);
   when ('monthly') amt=salary;
   when ('hourly')
      do;
         amt=hrlywage*min(hrs,40);
         if hrs>40 then put 'CHECK TIMECARD';
      end;         /*end of do*/
   otherwise put 'PROBLEM OBSERVATION';
end; /*end of select*/
run;

proc print data=test noobs;
run;

Пример 3.


data new;
length mon $4 temp 8;
input mon temp;
datalines;
JAN -20
FEB -15
MAR -7
APR 0
MAY 12
JUN 23
JUL 30
AUG 20
SPT 18
OCT 10
NOV 0
DEC -15
;

data test;
set new;
select;
   when (mon in ('JUN', 'JUL', 'AUG') 
   and temp>19) put 'SUMMER ' mon=;
   when (mon in ('MAR', 'APR', 'MAY')) 
   put 'SPRING ' mon=;
   otherwise put 'FALL OR WINTER ' mon=;
end;
run;

Результаты выполнения программы смотреть в Log.

Методы отладки

Синтаксические и логические ошибки

Причиной синтаксических ошибок является несоответствие операторов программы правилам языка SAS. При возникновении такой ошибки в журнал записывается сообщение об ошибке.

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

Оператор PUTLOG

Оператор PUTLOG можно использовать на шаге данных для:

- отображения сообщений в журнале;

- отображения значений одной или нескольких переменных.

Общий формат оператора PUTLOG: PUTLOG <specifications>;

Существуют различные способы записи спецификации (все на support.sas.com)

Оператор PUTLOG можно использовать для записи в SAS Log в пакетном и в интерактивном режимах. Также для этой цели можно использовать оператор PUT. Кроме того, оператор PUT используется для записи во внешний файл. Если для вывода открыть внешний файл, то следует предпринять меры для того, чтобы отладочные сообщения записывались в SAS Log, а не во внешний файл. Дополнительную информацию об операторе PUT см. в документации SAS.

Чтобы записать текст в журнал, используйте этот формат оператора PUTLOG: PUTLOG 'text';

Чтобы записать в журнал имя и значение переменной, используйте этот формат оператора PUTLOG: PUTLOG variable-name=;

Например, если значение переменной City равно San Diego, то оператор putlog City=; запишет в журнал City=San Diego.

Чтобы записать в журнал форматированное значение переменной, используйте этот формат оператора PUTLOG: PUTLOG variable-name format-namew.;

Например, если значение переменной City равно Philadelphia с начальным пробелом, то оператор putlog City $quote22.; запишет в журнал “ Philadelphia” .

Значение w должно быть достаточно большим, чтобы обеспечить отображение значения переменной и кавычек.

Формат $QUOTEw. записывает символьное значение в двойных кавычках и сохраняет все начальные пробелы.

Чтобы записать в журнал текущее значение вектора данных программы (PDV), используйте этот формат оператора PUTLOG: PUTLOG _ALL_;

Временные переменные _N_ и _ERROR_ могут быть полезны при отладке шага DATA.

Параметр DEBUG

Параметр DEBUG — это интерактивный интерфейс шага данных. Доступны команды:

  • выполнения шага данных по одному оператору;
  • просмотра значений одной или нескольких переменных;
  • контроль изменения значений одной или нескольких переменных.

Общий формат параметра DEBUG: DATA data-set-name / DEBUG;

Команды, обычно используемые для параметра DEBUG: Step, Examine, Watch, Quit, List, Delete watch, Set

Для вызова справки отладчика шага DATA выберите:

SAS Products (Продукты SAS) => Base SAS => SAS 9.4 Language Reference:
Dictionary
(SAS 9.4 — Справочное руководство по языку: словарь)  => Appendixes (Приложения)  => DATA Step Debugger (Отладчик шага DATA).

Как вывести все таблицы, содержащие столбец с определенным названием

Для решения данной задачи необходимо воспользоваться библиотекой SASHELP.

Наборы данных и представления из библиотеки SASHELP собирают и хранят информацию о текущей сессии SAS. Информация содержит имена библиотек, активные наборы данных, текущие системные опции, информацию о макросах, библиотеках и так далее.

В упрощенном варианте можно написать следующий код:


data alltab;
set sashelp.vcolumn;
Tab=catx('.',libname,memname);
keep tab;
where name ? 'Employee_ID';
run;

title 'All tables containing a variable Employee_ID';
proc print data=alltab noobs;
run;
title;

Какая функция возвращает день недели, начиная с понедельника?

Функция WEEKDAY* возвращает значение дня недели от 1 до 7, но 1 соответствует воскресенью, поэтому в данном случае для решения данной задачи она не подходит.

Требуемую функцию можно написать, используя процедуру PROC FCMP**:


/*create a SAS Data Set*/
data weekday;
do i=1 to 7;
day=TODAY()+i;
output;
end;
format day date9.;
drop i;
run;

/* Create a function*/
proc fcmp outlib = work.functions.samples;
   function sas_myweekday(mydate);
        return(weekday(mydate)-1+(weekday(mydate)=1)*7);
   endsub;
run;

options cmplib=work.functions;

/* Use the function */
data weekday2;
 set weekday;
 formatday=day;
 myweekday = sas_myweekday(day);
 format day date9. formatday weekdatx.;
run;

Использование Python внутри SAS Base

Сам Base SAS не может исполнять код Python, но может вызывать команду терминала операционной системы.

Общая схема данного процесса следующая:

  1. Данные, хранящиеся в SAS, выгружаются в формат, который может прочитать Python.
  2. SAS отравляет в терминал запрос вида python.exe “имя скрипта Python” “входные данные для Python” “выходные данные для SAS”.
  3. Скрипт Python должен подготовить выходные данные в формате, который может читать SAS. Для этого используется Base SAS Java Object (https://github.com/sassoftware/enlighten-integration)
  4. Данные, подготовленные скриптом Python, загружаются в SAS.

Подключение к SAS из Python (модуль  saspy) можно изучить по данной ссылке https://sassoftware.github.io/saspy/index.html.

SAS Enterprise Guide

Назначение библиотеки ORION с помощью параметра

1. Создайте параметр со следующими свойствами:

2. Используя задачу Assign project library (Tools=> Assign project library) подключите библиотеку. На шаге 2 вместо пути к файлу обратитесь к созданному параметру.

После нажатия кнопки Test Library на шаге 4, вы увидите сообщение «Assign failed». Завершить настройку подключения (Finish).

3. В дереве проекта кликните правой кнопкой на задаче «Assign Project Library (ORION)» и выбрать Properties.

4. Во вкладке Promts с помощью кнопки Add добавьте созданный параметр Path

5. Перезапустите задачу «Assign Project Library (ORION)»

И введите путь к библиотеке

6. Проверьте Log

7. Если в панели ресурсов в списке библиотек нет подключенной библиотеки ORION (при этом в Log нет ошибок и предупреждений) выберите Libraries и нажмите Refresh

Использование Cascading Prompts

Many stored processes require more than one parameter. The following relationships between parameters might
be present:

  • All parameters can be chosen independently.
  • Valid values for a parameter depend on the selection for other parameters.

When the appropriate values for one parameter depend on the selection made for another parameter, you can define cascading prompts.

            A cascading prompt is a prompt that subsets the values that it displays based on the value of a previously answered prompt. Cascading prompts enable you to present to users large numbers of choices with a logical navigation progression.

In order for a prompt to be dependent on another prompt, the prompt must meet these requirements:

  • The prompt type must be text, numeric, or date.
  • The values for the dependent prompt must be defined using a dynamic list.

The dependencies that create cascading prompts are defined in the prompt that depends on another prompt for its values. The Dependencies tab is available only when you define a prompt for stored processes and is not available for prompts in a SAS Enterprise Guide project.

Эспорт кода в SAS Enterprise Guide

Можно экспортировать код из всего проекта или отдельной схемы процесса.

Пример показан для экспорта кода из схемы процесса (Export All Code In Process Flow)

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

Вы можете выбрать следующие параметры:

  1. Включить заголовки, которые предоставляют описательную информацию о коде.
  2. Включить код оболочки, который генерирует SAS.
  3. Включить код SAS, указанный в диалоговом окне «Options».
  4. Включить код, который генерирует SAS для назначения библиотеки.

Подробную информацию о настройке экспорта кода можно получить, кликнув на кнопку Help.

Fuzz-factor

При создании числового формата SAS Enterprise Guide позволяет задать опцию в типе формата, такую как Fuzz-factor или нечеткий коэффициент.

Подробно про эту опцию можно прочитать в справочнике: http://go.documentation.sas.com/?docsetId=proc&docsetTarget=p1upn25lbfo6mkn1wncu4dyh9q91.htm&docsetVersion=9.4&locale=ru#n0qhedcd1ls7ren1hn86ntotxrai

Во избежание неточности, характерной для хранения с плавающей точкой, числовой формат применяется с нечетким коэффициентом. Если число не соответствует диапазону или точно попадает в диапазон, но сопровождается «нечетким коэффициентом», формат обрабатывает его как совпадение. Значение по умолчанию: 1E-12.

Например, мы создаем числовой пользовательский формат levels, используя коэффициент неточности 0.2:


proc format;
value levels (fuzz=.2) 1='A'
                       2='B'
                       3='C';
run;

Также создадим тестовый набор данных test, в котором столбец value форматируем с помощью пользовательского формата:


data test;
input value;
currentvalue=value;
format value levels.;
datalines;
1
2
3
0.1
0.2
2.8
2.2
;

Распечатаем пользовательский формат и изучим результаты:


proc print data=test noobs;
run;

Map Chart

1. Для отображения отчета в формате html, выберите Tools => Options => Results => Results General и в Result Format поставьте галочку HTML.

Для увеличения допустимого размера результатов: Tools=>Options=>Results=>Results General в графе «Prompt before opening results larger than» измените 5 MB на 15.

2. Для построения карты понадобится библиотека Map и набор данных Russia2. Двойным кликом добавьте таблицу Russia2 в проект.

3. Выделите столбец ID (Province Number) и скопируйте его значения.

4. Создайте новый набор данных: File=>New=>Data

5. Вставьте скопированные значения в столбец ID, а значения Value заполните. Фрагмент:

6. Для построения карты используйте задачу Map Chart

Выберите тип карты – 3D Prism Map

7. Во вкладке Data в Map data source с помощью кнопки Edit добавьте таблицу Russia из библиотеки Maps. Настройка ролей должна выглядеть следующим образом:

8. Запустите задачу кнопкой Run.

9. Откройте вкладку Results – HTML. Правой кнопкой мыши нажмите на построенное изображение и выберите Graph Toolbar. С помощью кнопки Rotate можно вращать изображение. Кнопка Reset View возвращает изображение в исходное положение.

Примеры использования процедуры One-Way Frequencies в SAS EG

Показаны возможные примеры использования данной процедуры.

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


data new;
infile datalines dlm=';' dsd missover;
length ID 8 Job_Title $25 Department $20 Manager_ID 8 Gender $1 Salary 8 Birth_Date 8 Country $2;
input ID Job_Title Department Manager_ID Gender Salary :dollar12. Birth_Date :date. Country;
format Birth_Date date9. Salary dollar12.2;
datalines4;
120101;Director;Sales Management;120261;M;$163,040.00;18AUG1981;AU
120851;Sales Manager;Sales Management;120101;M;$108,255.00;11AUG1974;US
120852;Sales Manager;Sales Management;120101;M;$87,975.00;22JAN1954; au
120853;Administration Manager;Administration;120101;F;$46,230.00;11MAY1959;
120854;Secretary I;Administration;120101;G;n/a;21DEC1979;AU
120855;Office Assistant II;Administration;120104;M;$26,960.00;23DEC1949;AU
120866;Office Assistant III;Administration;120104;F;$30,475.00;21JAN1954;AU
120867;Warehouse Assistant II;Administration;120104;F;$27,660.00;23FEB1989;US
120868;Warehouse Assistant I;Administration;120104;F;$26,495.00;15DEC1991;Us
120869;Warehouse Assistant III;Administration;120104;M;;20NOV1954;Au
120870;Security Guard II;Administration;120104;F;$26,870.00;10MAY1949;AU
120871;Security Manager;Administration;120104;F;$31,285.00;08FEB1949;US
120872;Service Assistant I;Administration;120104;M;$26,500.00;08MAY1989;us
120873;Service Assistant II;Administration;120104;M;$29,250.00;13JUN1964;Au
120874;Electrician IV;Engineering;120104;M;$30,255.00;21DEC1974;uS
120875;Electrician II;Engineering;120104;F;$27,645.00;05MAY1949;Au
120872;Service Assistant I;Administration;120104;M;$26,500.00;08MAY1989;us
120876;Sales Rep. I;Sales;120102;M;$26,955.00;14DEC1989;AU
120877;Sales Rep. I;Sales;120102;M;$26,910.00;25SEP1984;US
120867;Warehouse Assistant II;Administration;120104;F;$27,660.00;23FEB1989;US
120878;Sales Rep. III;Sales;120102;F;$28,525.00;05APR1954;US
120879;Sales Rep. II;Sales;120102;F;$27,440.00;22APR1991;US
120880;Sales Rep. II;Sales;120102;M;$28,015.00;06JUN1954;US
120881;Sales Rep. IV;Sales;120102;M;$32,490.00;26JAN1974;AU
120872;Sales Rep. I;Sales;120102;M;$26,605.00;16SEP1984;AU;AU
120873;Sales Rep. III;Sales;120102;F;$29,715.00;12MAR1984;US
120874;Sales Rep. I;Sales;120102;F;$25,795.00;11JUL1984;US
120869;Warehouse Assistant III;Administration;120104;M;;20NOV1954;Au
;;;;

Рассмотрим несколько примеров использования процедуры One-Way Frequences.

Создадим пользовательский формат для переменной Salary, который разделяет значения по диапазонам.

Скопируйте код и запустите его:


proc format;
value salaryfmt 
		20000-30000 = 'from 20000$ to 30000$'
		30000<-45000 = 'from 30000$ to 45000$'
		45000<-60000 = 'from 45000$ to 60000$';
run;

Обратите внимание, что такой формат можно реализовать интерактивно в SAS EG с помощью задачи Tasks->Data->Create Format.

Настроим задачу One-Way Frequences для набора данных work.new следующим образом:

1. В роль «Анализируемые переменные» заносим переменные, которые хотим проверить:

2. Изменяем формат для переменной Salary:

Выбираем пользовательский формат в категории User Defined.

3. Во вкладке Statistics задаем настройки для вывода только столбца с частотами:

4. Во вкладке Results выбираем настройку (в Order output data by) Descending frequences (по убыванию частот) для отслеживания дубликатов проверяемой переменной:

5. Запускаем задачу One-Way Frequences.

Изучим результаты:

1. Поиск пропущенных значений

Исходя из созданного отчета очевидно, что в переменных Salary и Country есть пропущенные значения:

2. Поиск недопустимых значений

В переменной Country существуют недопустимые значения (предполагаем, что страна должна быть указана в наборе данных в верхнем регистре: US и AU)

Также недопустимое значение есть в переменной Gender:

3. Поиск дубликатов

В настройках задачи мы задали “выводить частоты по убыванию”, поэтому можем определить, что в переменной ID присутствуют дубликаты анализируемой переменной:

4. Проверка вхождения в диапазоны

Мы применили к переменной Salary пользовательский формат salaryfmt., который разбивает значения по диапазонам, и можем проверить, все ли значения попали в требуемые диапазоны:

После выявления «неточностей» в нашем наборе данных мы можем распечатать наблюдения, например, в отчет для определения наблюдений, требующих исправления/дополнительного анализа и пр. Для этой цели можно использовать задачу Tasks->Describe->List Data:

Настроим задачу List Data следующим образом:

1. Выберем все переменные для включения в отчет:

2. Настроим фильтр, учитывая вышеназванные «неточности» в данных:

Важно: используем OR для того чтобы вывести все необходимые нам строки.

3. Запустим задачу:

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

Proc transpose

Входная таблица budget_quarterly создается на шаге data (File => new => program)


data budget_quarterly;
input Quarter Yr2010 Yr2011 Yr2012 Yr2013 Yr2014;
format Yr2010 Yr2011 Yr2012 Yr2013 Yr2014 dollar10.;
label 	Yr2010 = 'budget in 2010'
		Yr2011 = 'budget in 2011'
		Yr2012 = 'budget in 2012'
		Yr2013 = 'budget in 2013'
		Yr2014 = 'budget in 2014';
datalines;
1 4040000 4810000 5770000 4850000 5050000
2 6260000 7470000 8840000 7680000 8350000
3 6120000 6910000 6680000 7300000 8451000
4 5290000 5860000 7140000 6110000 8020000
;

Для транспонирования таблицы используем задачу  Transpose (Tasks => Data => Transpose)

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

Transpose variables – переменные, которые необходимо транспонировать

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

New column name - каждый столбец, назначенный этой роли, становится одной или несколькими строками набора выходных данных. Если вы не выбираете какие-либо переменные группировки, то весь столбец превращается в одну строку. Если вы выбираете одну или несколько переменных группировки, то переменные группировки используются для сегментации каждого столбца в подколонках, каждый из которых превращается в строку. В этом случае столбец переносится на число строк, которое равно числу групп, которые определяются переменными группировки.

Group by – значения переменной, по которым происходит транспонирование. Каждая подколонка, определяемая набором значений переменных группировки, становится строкой набора выходных данных.

Во вкладке Options настройка задачи выглядит следующим образом. На этом шаге задаются назввания новых переменных

Name – будут содержаться названия транспонируемых переменных

Label – будут содержаться ярлыки транспонируемых переменных

Prefix – название столбца, в котором будут содержаться значения транспонируемых переменных, по умолчанию создается столбец с названием ColumnN, где n – целое число, начиная с 1.

Запуская задачу, получаем следующий результат:

Какие столбцы генерирует задача RANDOM SAMPLE

TOTAL - является общим количеством единиц выборки в страте. Который представляет собой общее количество единиц выборки в страте

AllocProportion, является целевой долей распределения (пропорция общего размера выборки для распределения к страте). PROC SURVEYSELECT вычисляет эту долю, используя указанный метод распределения.

SampleSize, представляет собой размер выборки выделенного слоя

ActualProportion, является фактической пропорцией, выделенного слоя. Значение ActualProportion равно заданному размеру выборки страты, деленному на общий размер выборки. Это значение может отличаться от целевого AllocProportion из-за округления и других ограничений.

SelectionProb, является вероятностью выбора, которую вы указываете с помощью параметра SAMPRATE = в коде

SamplingWeight, является весом для отбора наблюдений.

Schedule SAS EG project

Проекты SAS EG могут быть запланированы только на компьютере, на котором установлен SAS EG.

Если вы хотите запланировать на своем сервере SAS, вам необходимо экспортировать проект EG в код SAS, а затем запланировать файлы кода.

Задача Schedule в SAS EG создает файл VBScript, который использует планировщик задач Windows для выполнения проекта в пакетном режиме по указанному расписанию. Ниже приведены требования к успешному планированию проекта SAS EG:

  1. В большинстве случаев идентификатор пользователя Windows, который используется для планирования проекта, должен иметь права локального администрирования. Однако права локального администрирования не требуются, если компьютер пользователя, планирующего проект, остается включенным, и пользователь выбирает запуск только тогда, когда он вошел в систему безопасности в Планировщике задач Windows.
  2. Пользователь Windows должен иметь возможность использовать планировщик задач Windows и выполнять программы VBScript независимо от SAS EG.
  3. Учетные данные метаданных должны быть кэшированы в профиле подключения пользователя SAS Enterprise Guide. Чтобы просмотреть эту информацию, перейдите в Tools ► Options ► Administration. Нажмите «Modify», чтобы открыть диалоговое окно «Профили подключения». Выберите активный сервер и нажмите «Modify». Убедитесь, что опция «Сохранить вход в профиль» отмечена и что выбор сохраняется. Если он не сохраняется, обратитесь к администратору метаданных SAS и запросите возможность кэширования учетных данных метаданных.
  4. Учетные данные должны сохраняться на протяжении всего сеанса SAS EG. Чтобы проверить этот параметр, перейдите в Tools ► Options ► Security. Параметр Credentials Persistence должен быть установлен на Persist during EG session.
  5. Запланированный проект не выполняется, если проект открыт. Убедитесь, что вы сохранили и закрыли проект, прежде чем он будет выполнен в пакетном режиме
  6. Проект должен быть сохранен на вашем локальном компьютере.
  7. SAS EG должен быть установлен на компьютере, на котором планируется выполнить файл VBScript
  8. Чтобы запланировать проект, который позволяет пользователю выходить из системы во время его выполнения (Run whether user is logged on or not), выберите File ► Schedule Project. На вкладке General, вы должны снять флажок Do not store password и выбрать вариант Run with Highest Privileges. (Когда вы нажмете OK в диалоговом окне, вам будет предложено ввести идентификатор пользователя Windows и пароль.). На вкладке «Triggers» укажите, когда планировщик задач должен выполнить проект. Файл .vbsfile добавляется в проект. Сохраните проект и закройте его, чтобы он мог быть успешно выполнен в пакетном режиме по расписанию.
  9. Для запуска проекта, независимо от того, зарегистрирован ли пользователь или нет, может потребоваться скопировать файл ConfigurationVxx.xml, где xx - это версия SAS Enterprise Guide из папки  %appdata%\SAS\MetadataServerProfiles  в папке
  10. C:\Windows\System32\config\systemprofile\AppData\Roaming\SAS\MetadataServerProfiles или папки С:\Windows\SysWOW64\config\systemprofile\AppData\Roaming\SAS\MetadataServerProfiles 
  11. Для доступа к сетевым ресурсам, когда выбрано Run whether user is logged on or not, необходимо отключить параметр локальной безопасности Windows "Network access: Do not allow storage of passwords and credentials for network authentication"

Дополнительная информация:

http://blogs.sas.com/content/sasdummy/2012/04/17/doing-more-with-sas-enterprise-guide-automation/

http://support.sas.com/documentation/onlinedoc/guide/examples/SASGF2012/Hemedinger_298-2012.pdf

Создание Subqueries

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

1. Создайте шаблон подзапроса с помощью Query Builder. В данном примере подзапрос возвращает один столбец COUNT_of_Product_ID

2. Сохраните запрос как шаблон

Все созданные шаблоны можно посмотреть в Tasks Templates

3. Используйте созданный подзапрос в фильтре Query Builder

Создание агрегированного столбца с помощью Advanced Expression

Пример показан на основе набора данных employee_donations, фрагмент которого представлен ниже:

Для создания ногового столбца откройте конструктор запросов. Выберите вид столбца – Advanced Expression

На шаге 2 выберите из списка Functions нужный агрегат и двойным кликом мыши добавьте его в код:

Подставьте в код необходимый аргумент, с помощью кнопки Validate проверьте код:

На шаге 3 задайте атрибуты нового столбца.

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

Аналогичным образом созданы столбцы по переменным QTR2, QTR3, QTR4.

В Select Data добавьте выводимые столбцы и кнопкой Run запустите запрос. Результат запроса показан ниже:

Построение графиков. Мозаичная диаграмма

1. Выберите Tasks(задачи)=>Graph(график)=>Tile Chart.

2. Во вкладке Data можно настроить фильтры для набора данных (Edit)

3. Распредилите роли.

Классифицирующие переменные (Classification variables)  - задает переменные иерархической категории (или ID). Эта роль требует переменную классификации. Если вы назначаете несколько переменных для этой роли, то порядок переменных определяет иерархию. Например, если порядок переменных в роли Страна, Область, Город, то в результате иерархия будет Страна->Область->Город.

Переменная цветового анализа (Color analysis variable ) -  переменные, которые определяют цвета плиток. Наименьшему цветовому отклику приписывается минимальное значение списка цветов, а наибольшему цветовому отклику – максимальное. Другие цветовые отклики назначаются линейно в градиенте между цветами в списке. Для этой роли можно назначить только одну переменную. Если вы не использовали эту роль, то определять цвета будет переменная из роли Size analysis variable

Переменная процентного анализа (Size analysis variable) – определяет значения переменных, которые определяют относительный размер всех плиток. Для этой роли можно назначить только одну переменную.

Группировать диаграммы по (Group charts by)  - группирующая переменная, задающая количество графиков. Для каждого уникального значения переменной создается отдельный график.

4. Зададим цвета отображения

5. Запустим задачу и посмотрим результаты ее выполнения:

Наведя мышкой на нужную плитку, мы увидим подсказки.

Отправка набора данных в VA

Перед отправкой нужно убедиться, что запущен один из LASR-серверов VA (как это сделать – знают администраторы VA).

Дальше для таблицы запустите задачу Data -> Upload data to LASR.

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

Как сменить рабочую директорию в SAS Enterprise Guide?

Для изменения рабочей директории в SAS Enterprise Guide воспользуйтесь функцией  DLGCDIR


%let rc = %sysfunc(dlgcdir('c:/workshop'));

Подробнее про изменение рабочей директории в SAS Enterprise Guide можно прочитать в данной статье: https://blogs.sas.com/content/sasdummy/2018/08/28/sas-current-directory/

Удаление символов из названия ссылок

Задача заключается в том, чтобы удалить слэши в конце ссылок, учитывая то, что количество слэшей в конце ссылки может быть любым.

Самый простой вариант решения– использование функции FINDC.

Для начала создадим тестовый набор данных SAS:


/*Создание тестового набора данных SAS*/
data new;
length URL $ 120;
input URL;
datalines;
http://link.1233456//
https://www.facebook.com///
http://www.link2.com/
http://www.link3.com
;

После этого запускаем «Конструктор запросов» и создаем новые столбцы с помощью расширенного выражения:

    1. Найдем первую с конца позицию символа, отличного от слэша:

    2. Создадим переменную New_URL.

Возвращаем подстроку из переменной URL, начиная с 1 символа по номер позиции, найденный на предыдущем шаге.

Результат выполнения запроса:

SAS Visual Analytics

Описание визуализаций

Пользовательские форматы в SAS Visual Analytics

Ссылка на SAS Community: https://communities.sas.com

SAS дает вам возможность создавать пользовательские форматы, которые запускают инструкции для вывода значений. Например, вам необходимо создать формат, который расшифрует аббревиатуру или который изменяет числовой код на простой для понимания текст. В основном, вы можете использовать пользовательские форматы в SAS® Visual Analytics Designer и в SAS® Visual Analytics Explorer.

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

Существует два основных шага для использования пользовательского формата в SAS Visual Analytics 7.4 (а также в более ранних версиях):

  1. Хранить копию каталога с форматами в директории, доступной SAS® Application Server, который используется SAS® Visual Analytics. Если вы используете по умолчанию SAS® Application Server (кратко SASApp) и ваш каталог называется formats.sas7bcat, тогда просто поместите копию каталога  formats.sas7bcat в SAS-config-dir/Lev1/SASApp/SASEnvironment/SASFormats и  перезапустите object spawner.
  2. Загрузите наборы данных на SAS® LASR™ Analytic Server.

По умолчанию настроен сервер SASApp, но вы можете создать другой сервер приложений для использования в SAS® Visual Analytics. В этом случае поместите каталог в соответствующий каталог сервера, который вы используете. Например, если вы используете сервер под названием SASAppVA, тогда вероятным местом каталога будет SAS-config-dir/Lev1/SASAppVA/SASEnvironment/SASFormats. Если SAS® Visual Analytics использует несколько серверов, поместите копию каталога в обе директории.

Ваш каталог с форматами не обязательно должен называться formats.sas7bcat, и не обязательно хранится в директории по умолчанию, вы можете использовать несколько каталогов. Информацию можно прочесть в данной статье: http://support.sas.com/kb/40/103.html  

Создание форматов для таблиц, загруженных автоматически

Для создания доступного во время автозагрузки пользовательского формата изучите справочник SAS Visual Analytics Administration Guide "User-Defined Formats for Autoload".

SAS Visual Analytics Designer

Числовые элементы данных

  • Вы можете изменить формат. Если вы измените формат, вы можете восстановить пользовательский формат с помощью выбора Reset to Default в ячейке Format type
  • Вы можете задать сортировку по форматированным и неформатированным значениям (версия 6.2 и позднее)
  • Числовые элементы данных с пользовательскими форматами классифицируются как категории. Вы не можете изменить эти элементы на меры, пока применены пользовательские форматы

Текстовые элементы данных

  • Вы не можете изменить формат
  • Вы не можете назначить предпочтительный порядок сортировки, сортировка происходит всегда по форматированным значениям.

Отчеты, созданные до того, как форматы были загружены на LASR не обновляются автоматически для отображения форматов. Если формат изменил текстовую строку на другую текстовую строку или числовое значение на другое числовое значение, вы можете кликнуть на значок «Обновить» на вкладке «Данные», чтобы увидеть форматы. Это означает, что вы обновили метаданные для входной таблицы и перезагрузили таблицу в LASR. Refresh не работает для форматов, которые изменяют числовые значения на символьные. Вы должны либо заново создать отчет, или использовать пользовательскую категорию.

SAS Visual Analytics Explorer

SAS Visual Analytics Explorer поддерживает пользовательские форматы следующим образом:

  • Свойство формат выводит имя формата как для числовых, так и для текстовых элементов данных. Вы не можете изменить формат.
  • Сортировка всегда происходит по форматированным значениям.
  • Числовые элементы данных с пользовательскими форматами классифицируются как категории.

Исследования, созданные до того, как форматы были применены к таблице LASR, не обновляются автоматически, чтобы отобразить форматы. Если формат изменяет текстовую строку на другую текстовую строку или числовое значение на другое числовое значение, вы можете выбрать Data ► Refresh All Data Sources, чтобы увидеть форматы. Это подразумевает, что вы обновили метаданные для входной таблицы и перезагрузили ее на LASR. Обновление не работает для форматов, которые изменяют числовые значения на строку.

SAS Visual Data Builder

В SAS Visual Data Builder свойство формат отображает имя применяемого пользовательского формата. Однако, если вы измените формат, вы не сможете восстановить пользовательский формат. Вы должны удалить столбец из запроса и добавить его обратно. Если вы хотите использовать столбец с форматом и без него, добавьте вторую копию столбца в запрос.

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

Взаимодействие с пользовательской сортировкой

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

Поддержка локализованных форматов

Процедура FORMAT включает в себя опцию LOCALE, которая может использоваться для создания локализованных форматов. Однако данные форматы не поддерживаются SAS LASR Analytic Server. По этой причине они не выполняются ни в SAS Visual Analytics Designer, ни в SAS Visual Analytics Explorer

Ограничения для форматов с оператором picture.

SAS Visual Analytics не поддерживает форматы, созданные через оператор picture, Для получения дополнительной информации см. следующую статью http://support.sas.com/kb/56/402.html.

Дополнительные ресурсы:

Построение кастомизированного графика

В наборе данных содержится информация о заказах за 2010 и 2011 год (столбец Date). Необходимо на одном графике отобразить изменение дохода за указанные годы по месяцам: за 2010 год на столбчатой диаграмме, за 2011 – на линейной. Изображения должны быть на одном графике.

Фрагмент набора данных выглядит следующим образом:

Переменная ID - уникальная.

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

Создать необходимые столбцы, например, на стороне SAS Enterprise Guide.

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

     1.«Конструктор запросов», где были созданы 2 столбца:

Вычисляемый столбец Details (создан через case expression) и MonthName (отформатированная переменная Date).

     2. «Разбиение столбцов», в которой привели таблицу к следующему виду:

Роли распредены следующим образом:

К переменной Date применен формат year4.

Фрагмент подготовленного набора данных:

Далее отправляем набор данных на SAS LASR Analytic Server:

Для построения пользовательского объекта – используем Custom Graph Builder:

     1. Выбираем нужные объекты

     2. Распределяем роли:

          a. Общая роль: в обоих случаях рассматриваем распределение дохода по месяцам:

          b. Настройка индивидуальных ролей выглядит следующим образом:

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

Сохраните пользовательский график и перейдите в Report Designer.

Добавьте источник данных в отчет на вкладке Data. На вкладке Objects отобразите пользовательские объекты:

Перенесите пользовательский график на канву и настройте роли.

Взаимодествие SAS Enterprise Guide и SAS Visual Analytics

Как открыть отчет SAS VA в SAS Enterprise Guide

Для того чтобы открыть отчет SAS Visual Analytics выберите File – Open Report, измените тип файлов на “SAS Report (2G) Files”, как показано на картинке ниже и далее выберите необходимый отчет.

Для того, чтобы открыть отчет через панель ресурсов, выберите вкладку SAS Foulders, в выпадающем списке справа от Show задайте “Report (2G)”, как показано на картинке ниже.


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

Задача Upload to LASR в SAS Enterprise Guide

Цель данной задачи – загрузить набор данных на SAS LASR Analytic Server для того, чтобы использовать его в SAS Visual Analytics. До того, как запустить эту задачу, необходимо убедиться, что LASR сервер запущен. Задача «Upload to LASR» находится во вкладке Tasks-Data.

На картинке ниже показана примерная настройка задачи «Upload to LASR»:

Задача «Upload to LASR» не гарантирует, что файл данных останется в памяти LASR, если кто-то (например, администратор SAS Visual Analytics) завершит его выгрузку или сервер отключится / перезагрузится.

Возможный более предпочтительный процесс - прямая запись SAS Enterprise Guide в папку AUTOLOAD SAS Visual Analytics на сервере.

Экспорт отчета SAS Visual Analytics в формат PDF

В SAS Enterprise Guide вы можете экспортировать отчет SAS Visual Analytics в формат PDF,как это показано на картинке ниже:

Извлечение данных из отчетов SAS Visual Analytics в SAS Enterprise Guide

После того как вы откроете отчет в SAS Enterprise Guide, вы сможете извлечь данные. На картинке ниже показано, как это можно реализовать.

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

Интеграция хранимых процессов из SAS Enterprise Guide в отчеты SAS Visual Analytics

Отчеты SAS Visual Analytics могут использовать хранимые процессы. При создании отчета просто добавьте существующий хранимый процесс в отчет через вкладку «Объекты» в конструкторе отчетов, как показано на рисунке ниже.

Хранимый процесс может быть создан в SAS Enterprise Guide, как показано на рисунке 9 ниже. Чтобы найти сохраненный процесс в SAS Enterprise Guide, перейдите на панель папок SAS и затем «Показать: сохраненный процесс».

Панель кнопок как динамический текстовый объект

Приведенный ниже отчет содержит заголовок, в котором отображается текст, а также значение выбранного периода.

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

В этом примере используется вычисляемый элемент данных (Report Description ), созданный в конструкторе. Выражение для вычисляемого элемента данных использует операторы объединения и форматирования для объединения текстовой и числовой информации. Выражение в визуальном и текстовом режиме:

Взаимодействия должны быть настроены следующим образом:

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

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

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

Добавляем еще одно взаимодействие:

Столбец Процент от общего итога

Возможность добавлять процент от итога в сводную таблицу - это отличный инструмент для создания отчетов, повышающий их ценность. Для того, чтобы создать процент от общего итога, кликните правой кнопкой мыши на числовой столбец, выберите «Создать» - «% от итога»:

После создания он автоматически появится во вкладке «Данные» в категории «Агрегированный показатель»:

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

Рассмотрим некоторые способы использования данного столбца: 

Сводные таблицы

Обратите внимание на две сводные таблицы ниже. Обратите внимание, что для каждой сводной аблицы элемент Итого по расходам (в процентах от общей суммы) суммируется до 100%.

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

Датчики/индикаторы

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

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

Столбчатые диаграммы

Возможности SAS VA позволяют столбчатым диаграммам использовать либо действительные значения, либо нормализованные до 100% группы. Это значит, что не важно, какое измерение назначено роли, столбчатая диаграмма автоматически создаст процент от общего для каждой группы и построит его в шкале от 0 до 100%

Пример представлен ниже:

Диаграмма слева - в оттенках синего цвета - показывает разбивку товарных линеек в каждом регионе. Совокупность всех регионов будет равна 100%. Чтобы реализовать эту концепцию, можно создать пользовательскую категорию, чтобы объединить все регионы в категорию «Все регионы», чтобы одна полоса представляла процент от общего количества регионов. Как вы можете видеть, при использовании взаимодействия типа “brush”, разбивка «Все регионы» соответствует суммированным регионам на диаграмме слева.

Back to Top