Использовать SAS? Используйте SQL для оптимизации своей работы.

  1. Введение
  2. Преимущества использования SQL в SAS
  3. Пример набора данных
  4. Пример # 1: объединение наборов данных
  5. Пример # 2: Добавление значений в новый столбец
  6. Пример # 3: Выбор уникальных значений в столбце
  7. Вывод

1. Введение

Как человек, которому пришлось быстро освоить SAS на новом рабочем месте, я был рад увидеть, что могу использовать свои существующие знания SQL в дополнение к группе аналитиков моей компании, которая в основном использует SAS. Как правило, я обнаружил, что большая часть того, что вы можете делать на других платформах SQL, таких как MySQL и PostgreSQL, применимы, хотя синтаксис может отличаться.

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

2. Несколько преимуществ использования SQL в SAS

  1. Читаемость: язык SQL удобен для чтения и интуитивно понятен.
  2. SQL может выполнять несколько функций, таких как манипулирование, суммирование и сортировка за один шаг.
  3. Если вы уже знаете SQL и не знакомы с SAS, вы можете немедленно начать вносить свой вклад в свою команду.
  4. Объединение шагов с данными SQL и SAS может привести к упрощению рабочих процессов.
  5. SQL - это стандартный язык ANSI, используемый в большинстве баз данных.

3. Наш пример набора данных

Две таблицы, которые мы используем в примерах, взяты из набора данных об одежде Патагонии, созданного Бет Моррисон. Обратите внимание, что для этих примеров я использую SAS Studio, хотя тот же синтаксис может использоваться на других платформах SAS, таких как SAS Viya или SAS Enterprise.

4. Пример №1: объединение наборов данных

Предположим, вы хотите узнать, какие предметы одежды в таблице «clothing_list» подходят для земли или воды. В этом случае вам нужно присоединить таблицу «clothing_category» к таблице «clothing_list», используя общий столбец «item_category».

SAS: эквивалент объединения или слияния таблиц в SAS потенциально может быть многоэтапным процессом. Обратитесь к документации SAS здесь.

SQL: объединение таблиц с помощью SQL-SAS несложно и может сэкономить ваше время. Обратите внимание, что «JOIN» и «LEFT JOIN» одинаковы в SQL-SAS.

PROC SQL;
SELECT *
FROM clothing_category
JOIN clothing_list
    ON
clothing_category.item_category = clothing_list.item_category;
QUIT;

5. Пример № 2: Добавление значений в новый столбец

Предположим, вы хотите присвоить значения новому столбцу на основе значений другого столбца. Здесь мы добавим столбец со значением, в котором будет указано, стоит ли каждый элемент в списке «clothing_list» менее 100 или более 100 долларов.

SAS: в SAS вы можете запустить шаг DATA, создать новый столбец «price_category» с помощью функции LENGTH, а затем использовать оператор «IF-THEN-ELSE» для присвоения значений строкам в колонка.

DATA work.output_table;
SET work.clothing_list;
LENGTH price_category $50.; 
    IF item_price < 100 THEN price_category = 'Less than $100';
    ELSE IF item_price > 100 THEN price_category = 'More than $100';
    ELSE price_category = 'Not available';
RUN;

SQL: вместо выполнения DATA STEP с использованием SAS с несколькими операторами IF можно использовать операторы CASE WHEN в SQL-SAS. Это также дает вам возможность агрегировать (GROUP BY), упорядочивать (ORDER BY) и многое другое за один шаг.

PROC SQL;
SELECT item_category, item_name, item_price,
 (CASE
        WHEN item_price < 100 THEN 'Less than $100'
        WHEN item_price > 100 THEN 'More than $100'
        ELSE 'Not available'
  END) AS price_category
FROM work.clothing_list
;
QUIT;

Запуск любого из приведенных выше блоков кода приведет к выводу следующей таблицы:

6. Пример № 3: Выбор уникальных значений в столбце

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

SAS: В SAS вы можете найти уникальные значения с помощью PROC SORT:

PROC SORT DATA = work.clothing_list
          OUT = work.unique_values
          (KEEP = item_price) 
          DUPOUT = work.duplicate_table
          (KEEP = item_price) 
          NODUPKEY
          ;
    BY item_price; /*this is the column of interest*/
RUN;

В этом случае в SAS замечательно то, что опция «DUPOUT» выводит таблицу дополнительных повторяющихся значений в таблице «work.duplicate_table» в дополнение к выходной таблице «work.unique_values», которая содержит список уникальных цены на товары. У вас также есть возможность вывести целые совпадающие строки.

«NODUPKEY» указывает SAS сохранять только первое вхождение для каждого уникального значения столбца, указанного в операторе BY в выходной таблице.

SQL: в SQL просто напишите несколько строк, как показано ниже, чтобы получить тот же результат, что и таблица с уникальными значениями выше. Примечание. Это НЕ приведет к выводу таблицы с лишними дублированными строками.

PROC SQL;
SELECT DISTINCT item_price
FROM clothing_list;
QUIT;

7. Заключение

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

Как вы используете SQL в SAS для улучшения рабочего процесса? Хотите узнать больше о том, как SQL-SAS может сэкономить ваше время и упростить код? Позвольте мне знать в комментариях ниже!

- Джимми