2017-02-04 1 views
1

Wir haben einen großen Datensatz in SAS-Umgebung mit 30 Millionen Datensätzen und kleinen Datensätzen mit jeweils 100 000 Datensätzen.Verknüpfen kleiner Datensätze mit großem Dataset

Wir müssen diese kleineren Datensätze mit der "Großen" Tabelle verbinden und es dauert etwa 30-40 Minuten, um den kleineren Datensatz mit großem Datensatz zu verbinden.

Wenn wir den Job für 5-6 Datensätze einzeln ausführen, dauerte es eine Menge Zeit. Wenn wir alle diese Datensätze zu einem einzigen Datensatz zusammenführen und dann den linken Join ausführen, wird es im Vergleich zu einzelnen weniger Zeit benötigen? Außerdem gibt es in WORK Raumknappheit, also müssen wir das auch berücksichtigen.

+0

Wie lesen Sie diese Datensätze? Haben Sie dort eine SQL-Datenbank? Oder führen Sie REST-API-Aufrufe aus? –

+0

@ evgeny.myasishchev verwenden wir SAS-Unternehmen, so dass alle Datensätze auf SAS sind. kein API-Aufruf – rns

+2

Wenn Sie genügend RAM haben (Größe der kleinen Tabellen ist kleiner als RAM), ist die perfekte Lösung eine SAS-Hash-Tabelle. –

Antwort

0

Versuchen ein Hashverknüpfung

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

Die beste Lösung für diese Art von Szenario zu verwenden, ist die Anweisung ändern, ändert dies die Hauptdatenmenge an Ort und Stelle, ohne es von Grund auf neu zu erstellen. Denken Sie immer daran, eine Sicherungskopie der Datensätze zu haben, die Sie sind Ändern, denn wenn etwas während der Verarbeitung schief geht, wird der Datensatz unbrauchbar sein.

Dieses Papier hat viele Informationen, aber es gibt viele Dokumente zu finden.

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

Prost

Verwandte Themen