Поиск…


Вступление

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

В 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 будет содержать все записи из обеих таблиц и заполнять их . для отсутствующих совпадений с обеих сторон.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow