2017-02-04 4 views
1

У нас есть большой набор данных в среде SAS, имеющий 30 миллионов записей и небольших наборов данных, имеющих по 100 000 записей.Объединение небольших наборов данных с большим набором данных

Мы должны оставить эти меньшие наборы данных с помощью «Большого» стола, и для соединения меньшего набора данных с большим набором данных требуется около 30-40 минут.

Если мы выполняем работу по 5-6 наборов данных по отдельности, это заняло много времени. Если мы объединим все эти наборы данных в одном наборе данных, а затем сделаем левое соединение, потребуется ли меньше времени по сравнению с индивидуальным? Кроме того, в WORK есть пространственный хруст, поэтому мы должны это учитывать.

+0

Как вы читаете эти наборы данных? Есть ли у вас база данных SQL? Или вы звоните в REST API? –

+0

@ evgeny.myasishchev мы используем предприятие SAS, поэтому все наборы данных находятся на SAS. нет вызова API. – rns

+2

Если у вас достаточно ОЗУ (размер небольших таблиц меньше ОЗУ), идеальным решением является SAS 'hash table'. –

ответ

0

Попробуйте хеширование

DATA want; 
IF 0 THEN SET SMALL_DATA_SET; 
if _N_ = 1 then do; 
declare hash HASH_NAME(dataset:"SMALL_DATA_SET", multidata:'y'); 
HASH_NAME.defineKEY("YOUR_KEY_VARIABLE"); 
HASH_NAME.defineData (ALL:'YES'); 
HASH_NAME.defineDone(); 
END; 
set BIG_DATA_SET; 
IF 
HASH_NAME.FIND(KEY:YOUR_KEY_VARIABLE) = 0 THEN OUTPUT; 
RUN; 
0

Лучшим решением для такого рода сценария является использование изменить заявления, это изменяет главный набор данных в месте, не воссоздавать с нуля. Всегда помните, что у вас есть резервная копия наборов данных: изменен, потому что, если что-то пойдет не так во время обработки, набор данных будет непригодным.

В этой статье много информации, но есть много документации, которую можно найти.

http://www.lexjansen.com/pnwsug/2006/PN01CurtisMackModify.pdf

Приветствия