Join af tabeller med SAS skal det være hurtigt?



Similar documents
SPDE. Lagring af større datamængder. make connections share ideas be inspired. Henrik Dorf Chefkonsulent SAS Institute A/S

Opdatering af metadata via SAS -programmer

SAS Visual Analytics: Arkitektur, data flow og administration

OIO Dekstop applikation

* --- Alle labels kan nu bestemmes i PROC PRINT ;

VHDL programmering H2

Too Much. Workmate. A. Listen to Adrian talking about obesity. 1 Who is he especially worried about?

Hot & New in Symantec Management and Windows Protection

How To Boot A Cisco Ip Phone From A Cnet Vlan To A Vlan On A Cpower Box On A Ip Phone On A Network With A Network Vlan (Cisco) On A Powerline (Ip Phone) On An

SAS og Excel. Kender du fem forskellige måder at overføre data mellem SAS og Excel? Gert Nissen, seniorkonsulent

Student evaluation form

2 halvleg. 1 halvleg. Opvarmning. 2 halvleg. 3 halvleg. Advanced & Powerful. Basic PC-based Automation. Diagnose. Online Tools & Add-on s

Information og dokumentation Ledelsessystem for dokumentstyring Krav

Oversættelse af symbolsk maskinsprog. Sammenkædning og indlæsning af maskinsprog

ActionPhoto International

Why Do People Pay the Way They Do: The Case of Cards, Cash, and Internet Banking in the Context

! Crowdsourcing!the!Library!

DO, DON T og DORF. SAS -programmering

Nordic Master in Didactics of Mathematics

Management. Support HR

PROFESSIONAL BACHELOR IN

Informationsteknologi Serviceledelse Del 4: Procesreferencemodel

Questionnaire #1: The Patient (Spørgeskema, må gerne besvares på dansk)

Claus B. Jensen IT Auditor, CISA, CIA

SAP Best Practices. Færdigpakket branchespecifik og brancheovergribende knowhow. Tilgængelighed for SAP-kunder og SAP-partnere

Design and interiors. Index. Design og indretning

<Matthías saga digitalis 6.0/>

SharePoint Brugergruppe møde 15. august 2014

THE ROTARY FOUNDATION. Det hele begyndte med at Arch Klump fik en idé i 1917!

Software- og systemudvikling Softwaretest Del 1: Begreber og definitioner

Informationsteknologi Små computersystemers. Del 251: USB-fæstnet SCSI (UAS)

SRX. SRX Firewalls. Rasmus Elmholt V1.0

Avaya Brugergruppe dage

CAMP LOGOS administrated by Boligselskabet Sct. Jørgen (housing agency)

Skolestart. Solveig Gaarsmand Skole og Samfund Good ID 2007

Statistiske metoder i procesledelse Kapabilitet og performance Del 3: Analyse af maskinperformance for måleværdier på (diskrete) emner

Agil Business Process Management - i Finans

Nyheder i SAS Data Management med SAS version 9.4 Jens Dahl Mikkelsen Nordic CoE, Information Management

Business development. Linnea Jacobsen. 1. semester 2014

Vejledning til en europæisk COREfaktura-datamodel. CII-retningslinjer for implementering Del 1: Introduktion

Informationsteknologi Personlig identifikation ISO-overensstemmende kørekort Del 4: Prøvningsmetoder

Model Tub Design Jens Juul Eilersen

National strategi for Datamanagement Input fra Bevaring, Formidling og Genbrug. Birte Christensen-Dalsgaard Det Kongelige Bibliotek

FaSMEd meeting, Maria I.M. Febri

How To Price Power In Norsk

Sundhedsinformatik Kapacitetsbaseret roadmap for e-sundhedsarkitektur Del 1: Oversigt over nationale e-sundhedsinitiativer

Oracle Application Express

Innovation Days Industrial Communication

How To Write An International Safety Standard

How To Understand Software Quality

Konstruktiv designforskning

Innovation hvordan holder Radiometer den i live? , Tommy Bysted, Radiometer Medical ApS

Informationsteknologi til læring, uddannelse og oplæring Informationsmodel for kompetencer Del 2: Informationsmodel for kompetenceniveau

1) Testing of general knowledge 25%. Each right question counts 1. Each wrong counts 0.5. Empty

Vejen til privat finansiering. 16. juni 2011

Baggrunds information om Alusta

Softwareudvikling Kvalitetskrav til og evaluering af softwareprodukter (SQuaRE) Fælles industriformat (CIF) til brugbare testrapporter

COACH BOT Modular e-course with virtual coach tool support

Jordundersøgelser Prøvetagning Del 5: Vejledning i undersøgelse af jordforurening på bymæssige og industrielle grunde

DEFINITE AND INDEFINITE FORM

ÆSTETISK INTERAKTION 6 MIE NØRGAARD, SAINT 2012

Casestudier, der understøtter IEC Bestemmelse af RF-felter og SAR-værdier i nærheden af radiokommunikationsbasestationer

Rubber condoms Guidance on the use of ISO 4074 in the quality management of natural rubber latex condoms

SAS programmer til Proc Means indlæg af Per Andersen / Capgemini Danmark A/S

Informationsteknologi Storage management Del 1: Oversigt

How To Become A Certified Master Consultant For Sharepoint

Azfar Bassir. Summary. Experience. Developer at SHFT

Paper Merges and Joins Timothy J Harrington, Trilogy Consulting Corporation

Akustik Metode til beregning af forventet høretab forårsaget af støj

PRESSEKIT INTERNATIONALE STUDERENDE

Olie- og naturgasindustrien Levetidsomkostninger Del 3: Retningslinier for implementering

Midlertidige Byrum Den øjeblikkelige invitation Camilla van Deurs, Arkitekt MAA, PhD

Sponsors ansvar ved outsourcing af en klinisk afprøvning. Dansk Selskab for GCP. Medlemsmøde 23 November 2010

The Effect of a Classroom Management Intervention Results from an RCT Anders Holm, Maria Keilow, Mette Friis-Hansen, and Rune Kristensen

Ny postlov i Norge New postal regulations in Norway. Frode Wold, Norway Post Nordic Address Forum, Iceland 5-6. may 2015

Ergonomi Fysisk miljø Anvendelse af internationale standarder for personer med særlige behov

Hub North Netværksarrangement d. 14. Juni 2011

Introduktion till SAS 9 Plattformen Helikopterkursen

GB INTRODUCTION manual:

Agenda. Nortel Management værktøj til CS1000 Telephony Manager (TM 3.x) Nyheder i TM 3.2 ECM (Enterprise Common Manager) Subscriber Manager

TESTDATABASE. Deviations and Reporting

OIOudvalget for e-handel. 14. September 2010 Ole Madsen

Transcription:

Join af tabeller med SAS skal det være hurtigt? Henrik Dorf, chefkonsulent, PS Commercial

Join af tabeller Skal det være hurtigt kræver det Valgmuligheder Viden Eksperimenter

Historien En af de første ting, jeg hørte om SAS DATA step, var: SAS kan blande, flette og sammensætte data på alle måder, man kan tænke sig også alle de måder som det nye SQL tilbyder. Og endda flere... (1985)

Valget mellem DATA step eller SQL SAS DATA step 1972 SAS-udviklet 4. generationsværktøj til databehandling Ofte anvendt i forbindelse med store datamængder Kræver færre computerressourcer Forudsætning: Hold data sorteret Structured Query Language 1979 Sprog designet til relationelle databaser Skræddersyet til transaktionsbaserede systemer Findes i forskellige varianter Kræver ofte flere ressourcer, men er afhængig af implementering

Hvilke joins findes? Type SAS DATA step SQL Konkatenering Set Union Flette Set by Union order by Kombinere Merge Join Update Merge by Update Modify Join Left join Right Join Full join Update + Insert Split Data output1-n Create table table1 Tabelopslag Formater: Keyed set med KEY= HASH-objekt Subselect join

Konkatenering A 1 1 1 1 2 2 2 1 3 3 3 1 B Obs k b c 1 2 2 2 2 3 3 2 3 4 4 2 data D ; Set A B ; run; proc sql ; create table S as select * from a union select * from b ; quit; b 1 1 1 1. 2 2 2 1. 3 3 3 1. 4 2. 2 2 5 3. 2 3 6 4. 2 4 1 1 1 1 2 2 2 1 3 2 2 2 4 3 3 1 5 3 3 2 6 4 4 2

Flette A 1 1 1 1 2 2 2 1 3 3 3 1 B Obs k b c 1 2 2 2 2 3 3 2 3 4 4 2 data D ; set A B ; By K; run; b 1 1 1 1. 2 2 2 1. 3 2. 2 2 4 3 3 1. 5 3. 2 3 6 4. 2 4 proc sql ; create table S as select * from a union select * from b order by k; quit; 1 1 1 1 2 2 2 1 3 2 2 2 4 3 3 1 5 3 3 2 6 4 4 2

Merge / join match merge A B 1 1 1 1 2 2 2 1 3 3 3 1 4 4 4 1 5 5 5 1 data D1; merge a b ; by k ; run; b 1 1 1 2 1 2 2 2 2 2 3 3 3 2 3 4 4 4 2 4 5 5 5 2 5 Obs k b c 1 1 1 2 2 2 2 2 3 3 3 2 4 4 4 2 5 5 5 2 proc sql ; create table S1 as select * from a join b on a.k=b.k; quit; Obs k a b c 1 1 1 1 1 2 2 2 2 1 3 3 3 3 1 4 4 4 4 1 5 5 5 5 1

Merge / join ikke match A 1 1 1 1 2 2 2 1 3 3 3 1 B Obs k b c 1 1 1 2 2 2 2 2 3 5 5 2 4 6 6 2 4 4 4 1 5 5 5 1 proc sql ; data D; create table S as select * merge a b ; by k ; run; from a join b on a.k=b.k; quit; b 1 1 1 2 1 2 2 2 2 2 3 3 3 1. b 1 1 1 1 1 2 2 2 1 2 3 5 5 1 5 4 4 4 1. 5 5 5 2 5 6 6. 2 6

Hvilken join? Join er mange ting (Inner) join Right join Left join Full join Cross join Som alle giver forskellige resultater

Join Inner A 1 1 1 1 2 2 2 1 3 3 3 1 B Obs k b c 1 1 1 2 2 2 2 2 3 5 5 2 4 4 4 1 5 5 5 1 proc sql ; 4 6 6 2 data D; merge a b ; by k ; run; b 1 1 1 2 1 2 2 2 2 2 3 3 3 1. create table S as select * from a inner join b on a.k=b.k; quit; b 1 1 1 1 1 2 2 2 1 2 3 5 5 1 5 4 4 4 1. 5 5 5 2 5 6 6. 2 6

Join Inner (default) A 1 1 1 1 B Obs k b c 1 1 1 2 2 2 2 1 2 2 2 2 3 3 3 1 3 5 5 2 4 4 4 1 4 6 6 2 5 5 5 1 proc sql ; data D; merge a b ; by k ; run; create table S as select * from a,b where a.k=b.k; quit; b 1 1 1 2 1 2 2 2 2 2 3 3 3 1. b 1 1 1 1 1 2 2 2 1 2 3 5 5 1 5 4 4 4 1. 5 5 5 2 5 6 6. 2 6

Join Right A 1 1 1 1 B Obs k b c 1 1 1 2 2 2 2 1 2 2 2 2 3 3 3 1 3 5 5 2 4 4 4 1 4 6 6 2 5 5 5 1 proc sql ; data D; create table S as select * merge a b ; by k ; run; from a right join b on a.k=b.k; quit; b 1 1 1 2 1 2 2 2 2 2 3 3 3 1. 4 4 4 1. b 1 1 1 1 1 2 2 2 1 2 3 5 5 1 5 4... 6 5 5 5 2 5 6 6. 2 6

Join Left A 1 1 1 1 B Obs k b c 1 1 1 2 2 2 2 1 2 2 2 2 3 3 3 1 3 5 5 2 4 4 4 1 4 6 6 2 5 5 5 1 proc sql ; data D; merge a b ; by k ; run; create table S as select * from a left join b on a.k=b.k; quit; Obs K A c b 1 1 1 2 1 2 2 2 2 2 3 3 3 1. 4 4 4 1. 5 5 5 2 5 b 1 1 1 1 1 2 2 2 1 2 3 3 3 1. 4 4 4 1. 5 5 5 1 5 6 6. 2 6

Join Full A 1 1 1 1 B Obs k b c 1 1 1 2 2 2 2 1 2 2 2 2 3 3 3 1 3 5 5 2 4 4 4 1 4 6 6 2 5 5 5 1 proc sql ; data D; merge a b ; by k ; run; b 1 1 1 2 1 2 2 2 2 2 3 3 3 1. 4 4 4 1. 5 5 5 2 5 6 6. 2 6 create table S as select * from a full join b on a.k=b.k; quit; b 1 1 1 1 1 2 2 2 1 2 3 3 3 1. 4 4 4 1. 5 5 5 1 5 6... 6

Join Cross A 1 1 1 1 2 2 2 1 3 3 3 1 4 4 4 1 5 5 5 1 data D; merge a b ; by k ; run; Obs K A c b 1 1 1 2 1 2 2 2 2 2 3 3 3 1. 4 4 4 1. 5 5 5 2 5 B Obs k Obs b k c a c b 1 1 1 1 1 2 1 1 1 2 2 2 1 1 2 2 3 2 3 2 3 1 1 3 5 4 5 4 2 4 1 1 4 6 5 6 5 2 5 1 1 6 1 1 1 2 proc sql ; create table S as select * from a cross join b on a.k=b.k; quit; 7 2 2 1 2 8 3 3 1 2 9 4 4 1 2 10 5 5 1 2 11 1 1 1 5 12 2 2 1 5 13 3 3 1 5 14 4 4 1 5 15 5 5 1 5 16 1 1 1 6 17 2 2 1 6 18 3 3 1 6 19 4 4 1 6 20 5 5 1 6 6 6. 2 6

Join Cross A B Obs k Obs b k c a c b 1 1 1 1 1 1 1 1 1 2 1 1 1 2 2 2 1 1 2 2 2 1 2 2 3 2 3 2 3 1 1 3 3 3 1 3 5 4 5 4 2 4 1 1 4 4 4 1 4 6 5 6 5 2 5 1 1 6 1 1 1 2 5 5 5 1 data D; merge a b ; by k ; run; b 1 1 1 2 1 2 2 2 2 2 3 3 3 1. 4 4 4 1. 5 5 5 2 5 6 6. 2 6 proc sql ; create table S as select * 7 2 2 1 2 8 3 3 1 2 9 4 4 1 2 10 5 5 1 2 from a cross join b on a.k=b.k; NOTE: The execution of this query involves performing quit; one or more Cartesian product joins that cannot be optimized 11 1 1 1 5 12 2 2 1 5 13 3 3 1 5 14 4 4 1 5 15 5 5 1 5 16 1 1 1 6 17 2 2 1 6 18 3 3 1 6 19 4 4 1 6 20 5 5 1 6

Cartesian product Meget ressourcekrævende på memory (og paging) NOTE: The execution of this query involves performing one or more Cartesian product joins that cannot be optimized

Optimering I/O Anvendte ressourcer er Inputtabeller Outputtabel A S B Utility files

Optimering Hvad kan vi måle? Inputtabeller Outputtabel Pladsforbrug A S B Utility files

Optimering Speciel monitorering Inputtabeller Outputtabel A S B Utility files

Optimering Working set-måling Udviklet til formålet

Optimering Working set-måling Udviklet til formålet Måler størrelsen på foldere eller filer Skriver logfil 1:,Count,Date,Time,D:\SASWORK\_TD6600,D:\SASUTIL\sas_util0001000019C8_kohdoxp5,D:\SASWORK\_TD6600\a.sas7bdat*,D:\SASWO RK\_TD6600\s.sas7bdat.lck 2:,0,24052010,180228,570215682,0,162542592,0 2:,1,24052010,180229,570215682,0,162542592,0 2:,2,24052010,180230,570215682,0,162542592,0 2:,3,24052010,180231,570215682,0,162542592,0 2:,4,24052010,180232,570215682,0,162542592,0 2:,5,24052010,180233,570215682,0,162542592,0 Stopper, når sidste målepunkt forsvinder D:\SASWORK\_TD6600\s.sas7bdat.lck

Optimering Demo

Workspace SQL: Join

Workspace SQL: Join WORK.S SAS Utility Work.a

Workspace DATA step: Merge

Workspace SQL: Join + DATA step: Merge

Workspace SQL: Union

Workspace DATA step: Set

Workspace SQL: Union og DATA step: Set

SAS emulerer SQL På observationer Inner join data D1; merge a(in=f1) b (in=f2); by k ; if F1 and F2 ; run; Left join Right join data D1; merge a(in=f1) b (in=f2); by k ; if F1 ; run; data D1; merge a(in=f1) b (in=f2); by k ; if F2 ; run;

Split A 1 1 1 1 2 2 1 1 3 3 1 1 4 4 1 1 5 5 1 1 data D1 D2 D3 ; SET A ; Proc sql ; Create table D1 as select * from a where K=1 ; Create table D2 as select * from a where K=2 ; Create table D3 as select * from a where K>2 ; Run; IF K=1 then output D1 ; ELSE IF K=2 then output D2; Else output D3;; run; Obs a c Obs a c 1 Obs 1 1 a c 1 1 1 1 1 1 Obs a c Obs a c 1 Obs 1 1 a c 1 1 1 1 1 1

Split A 1 1 1 1 2 2 1 1 3 3 1 1 4 4 1 1 5 5 1 1 data D1 D2 D3 ; SET A ; Proc sql ; Create table D1 as select * from a where K=1 ; Create table D2 as select * from a where K=2 ; Create table D3 as select * from a where K>2 ; Run; IF K=1 then output D1 ; ELSE IF K=2 then output D2; Else output D3;; run; Obs a c Obs a c 1 Obs 1 1 a c 1 1 1 1 1 1 Obs a c Obs a c 1 Obs 1 1 a c 1 1 1 1 1 1

Update SQL kræver grundig forberedelse 1 1 1 1 2 2 1 1 3 3 1 1 1 2 6. 2 4 6 2 3 7 6. 4 4 1 1 5 5 1 1 1 1 1 1 2 2 6 1 3 3 1 1 4 4 6 2 5 5 1 1 6 7 6. data A ; update A B ; By k; run; Proc SQL; update.. ; Insert.; run;

Update 1 1 1 1 2 2 1 1 3 3 1 1 1 2 6. 2 4 6 2 3 7 6. 4 4 1 1 5 5 1 1 1 1 1 1 2 2 6 1 3 3 1 1 4 4 6 2 5 5 1 1 6 7 6. data A ; update A B ; By k; run; Proc SQL; update.. ; Insert.; run;

Update test Nemt at teste SAS -program SQL kræver ny tabel 1 1 1 1 2 2 1 1 3 3 1 1 1 2 6. 2 4 6 2 3 7 6. 4 4 1 1 5 5 1 1 data A _test; 1 1 1 1 2 2 6 1 3 3 1 1 run; update A B ; By k; 4 4 6 2 5 5 1 1 6 7 6.

Opsummering Ingen metode er universel SQL Er hurtig at konstruere Er standard for RDBMS Indeholder implicit funktionalitet Kan være hurtigere DATA step Egen notation Mere fleksibel Kan være hurtigere

Husk altid Hold orden (= data sorteret)

Mere information http://support.sas.com/rnd/scalability

Mere information http://support.sas.com/rnd

Henrik Dorf henrik.dorf@sdk.sas.com