Использовать SAS? Используйте SQL для оптимизации своей работы.
- Введение
- Преимущества использования SQL в SAS
- Пример набора данных
- Пример # 1: объединение наборов данных
- Пример # 2: Добавление значений в новый столбец
- Пример # 3: Выбор уникальных значений в столбце
- Вывод
1. Введение
Как человек, которому пришлось быстро освоить SAS на новом рабочем месте, я был рад увидеть, что могу использовать свои существующие знания SQL в дополнение к группе аналитиков моей компании, которая в основном использует SAS. Как правило, я обнаружил, что большая часть того, что вы можете делать на других платформах SQL, таких как MySQL и PostgreSQL, применимы, хотя синтаксис может отличаться.
После устранения неполадок с нашим существующим кодом SAS я смог показать своим коллегам несколько удобных способов, с помощью которых SQL может улучшить наши рабочие процессы. Ниже я продемонстрирую некоторые из этих методов на трех примерах.
2. Несколько преимуществ использования SQL в SAS
- Читаемость: язык SQL удобен для чтения и интуитивно понятен.
- SQL может выполнять несколько функций, таких как манипулирование, суммирование и сортировка за один шаг.
- Если вы уже знаете SQL и не знакомы с SAS, вы можете немедленно начать вносить свой вклад в свою команду.
- Объединение шагов с данными SQL и SAS может привести к упрощению рабочих процессов.
- 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 может сэкономить ваше время и упростить код? Позвольте мне знать в комментариях ниже!
- Джимми