Подготовьте данные SAS для заполнения временной таблицы SQL Server, используйте эту временную таблицу для объединения с базовой таблицей SQL Server в SAS EG - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть сценарий, в котором мне нужно выбрать данные из таблицы Teradata в базе данных A. Используйте этот набор результатов для заполнения временной таблицы сервера SQL.Эта временная таблица должна объединяться с базовой таблицей SQL-сервера.Результирующий набор этого должен быть экспортирован в другую таблицу базы данных.Нужно сделать это в руководстве SAS для предприятий

. Таков мой подход. Сначала создайте набор данных SAS

STEP 1

proc sql;
  connect to teradata(user="abc" pw="def" database=cust fast load=yes mode=Teradata);
create table tmp_result as
select  from connection to teradata
(
SELECT 
Cust_id,
Name,
Product
 FROM Teradata table where ProductId=10
)DISCONNECT FROM TERADATA;
QUIT;

STEP 2

proc sql;
connect to odbc(dsn=temp user="abc" pw="def" connection=shared);
create table ##tmp
(
Cust_id int
Name varchar(100),
Product varchar(50);
)disconnect from ODBC;
QUIT;

ШАГ 3 - вставить данные во временную таблицу из первого набора данных SAS

шаг 4 - создать базовую таблицу сервера sql из приведенного ниже запроса на выборку

SELECT *
FROM base sql server table join temp table (above temp table)

шаг5 снова создайте набор данных sas из вышеуказанного набора результатов шага 4, а затем на последнем шаге

шаг 6 вставьте набор результатов шага 5 в базу данных таблицы teradata B.

Мне нужна помощь с моимподход ... Я все еще работаю над этим решением, но мне нужен ваш вклад, если мой подход верен

Спасибо заранее ..

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

В зависимости от объемов данных При экспорте из Teradata вам потребуется либо TPT=NO FASTEXPORT=YES, либо TPT=YES FASTEXPORT=YES, чтобы использовать устаревший оператор FastExport или Teradata Parallel Transporter Export.Последнее предпочтительнее первого, если в вашей среде SAS установлен TPT.Отправляя данные обратно в Teradata, замените FASTEXPORT на FASTLOAD или, в зависимости от доступных объемов данных и TPT, рассмотрите TPT=YES MULTISTMT=YES, в котором будет использоваться оператор потока.

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

Надеюсь, это поможет.

0 голосов
/ 17 декабря 2018

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

     libname teralib teradata server=myserver user=myuserid pwd=mypass;
     libname sqllib sqlsvr user=testuser password=testpass;
     libname saslib "somelocation"; /* you do not need this unless your manipulating 
   something in SAS*/

 proc sql;
 create teralib.yourotherteradatatable as
select a.id, b.col from sqllib.yoursqltable a
inner join teralib.yourteradatatable b
on a.yourinterstedcol = b.yourinterstedcol;
quit;
...