sas
Использование объединений в SAS
Поиск…
Вступление
Каждая база данных представляет собой набор различных таблиц, и каждая таблица содержит разные данные организованным образом. Во время работы с данными большая часть информации, которая нам нужна, разбросана более чем в одной таблице. Нам нужно объединение / слияние для получения желаемого результата.
В SAS мы используем объединения при работе с Proc SQL
и используем слияние при работе с Data step
. Теперь мы поговорим только о соединениях внутри Proc SQL
.
параметры
Тип соединения | Выход |
---|---|
Proc Sql | Процедура SQL внутри SAS |
Создать таблицу | Создает набор данных SAS |
Выбрать | Выбирает требуемые переменные из соответствующих наборов данных |
куда | Определяет конкретное условие |
Уволиться | Завершить процедуру |
замечания
Как упоминалось во введении, мы также можем использовать Merge
внутри data step
который будет обсуждаться в отдельной теме. Объединение играет очень важную роль для объединения и унификации данных в соответствии с требованием.
Вертикальное соединение
Вертикальное соединение добавляет набор данных B к набору данных A, обеспечивающий одинаковые переменные. Например, у нас есть продажи за январь'17 в наборе данных A и продажи за февраль 17 в наборе данных B. Чтобы создать набор данных C, в котором продаются как янв, так и февраль, мы используем Vertical Join.
PROC SQL;
CREATE TABLE C AS
SELECT *
FROM A
UNION
SELECT *
FROM B;
QUIT;
Теперь набор данных C имеет наблюдения от A и B и добавляется вертикально.
Внутреннее соединение
Внутреннее объединение создает набор данных, который содержит записи, имеющие соответствующие значения из обеих таблиц. Например, у нас есть набор данных А, содержащий информацию о клиенте и набор данных В, содержащий данные кредитной карты. Чтобы получить данные кредитной карты клиентов в наборе данных A, давайте создадим набор данных C
PROC SQL;
CREATE TABLE C AS
SELECT A.*, B.CC_NUM
FROM CUSTOMER A, CC_DETAILS B
WHERE A.CUSTOMERID=B.CUSTOMERID
QUIT;
Набор данных C будет иметь только соответствующие наблюдения из обоих наборов данных.
Left Join
Left join возвращает все наблюдения в левом наборе данных независимо от их значений ключей, но только наблюдения с соответствующими значениями ключа из правильного набора данных. Учитывая тот же пример, что и выше,
PROC SQL;
CREATE TABLE C AS
SELECT A.*, B.CC_NUMBER, B.START_DATE
FROM CUSTOMER A LEFT JOIN CC_DETAILS B
ON A.CUSTOMERID=B.CUSTOMERID
QUIT;
Набор данных C содержит все значения из левой таблицы, а также совпадающие значения из правой таблицы или отсутствующие значения в случае отсутствия соответствия.
Правое соединение
Как и левое соединение, правое соединение выбирает все наблюдения из нужного набора данных и сопоставленные записи из левой таблицы.
PROC SQL;
CREATE TABLE C AS
SELECT A.*, B.CC_NUMBER, B.START_DATE
FROM CUSTOMER A RIGHT JOIN CC_DETAILS B
ON A.CUSTOMERID=B.CUSTOMERID
QUIT;
В наборе данных C содержатся все значения из правой таблицы, а также совпадающие значения из левой таблицы или отсутствующие значения в случае отсутствия соответствия.
Полная регистрация
Полное соединение выбирает все наблюдения из обоих наборов данных, но отсутствуют значения, когда значение ключа в каждом наблюдении находится только в одной таблице.
PROC SQL;
CREATE TABLE C AS
SELECT A.*, B.CC_NUMBER, B.START_DATE
FROM CUSTOMER A FULL JOIN CC_DETAILS B
ON A.CUSTOMERID=B.CUSTOMERID
QUIT;
Dataset C будет содержать все записи из обеих таблиц и заполнять их .
для отсутствующих совпадений с обеих сторон.