2017-02-04 119 views
1

我們在SAS環境中有一個大型的數據集,其中有3000萬條記錄和小型數據集,每條記錄有100000條記錄。加入較小的數據集與大型數據集

我們必須將這些較小的數據集與「大型」表結合在一起,大型數據集加入較小的數據集需要大約30-40分鐘。

如果我們單獨爲5-6個數據集運行作業,則花費了大量時間。如果我們將所有這些數據集合併到一個數據集中,然後進行左連接,與個人相比,它會花費更少的時間嗎?另外,WORK中存在空間緊縮,所以我們也必須考慮這一點。

+0

你怎麼看這些數據集?你有SQL數據庫嗎?或者你做REST API調用? –

+0

@ evgeny.myasishchev我們使用SAS企業,所以所有的數據集都在SAS上。沒有API調用。 – rns

+2

如果你有足夠數量的RAM(小表的大小小於RAM),完美的解決方案是SAS散列表。 –

回答

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

乾杯