Mænd, Mus og Metadata Henrik Dorf SAS Institute A/S
Intet er jo hvad det gir sig ud for Mus er en computermus Mænd er personer af begge køn der tager backup og ikke vil have en musearm Metadata er data der handler om noget andet.
Hvorfor interessere sig for Metadata? Fordi de er der
Hvor kan vi se Metadata?? Metadata omhandler omverdenen. Metadata er gemt i en metadatamodel
Metadata DI Studio:
Metadata Management Console
MetadataModellen Metadata browser
Metadataserver Administrerer adgangen til Metadata Svarer på alle Spørgsmål Håndterer Læse/Skrive rettigheder Aner ikke hvad den snakker om. Men svarer hurtigt og husker alt Metadata Server Metadata
Batch adgang til Metadata
Batch adgang til Metadata
Batch adgang til Metadata filename metaout "C:\temp\metaout.xml"; PROC METADATA REPOS="Foundation" Header=simple OUT =metaout IN="<GetMetadataObjects> <Reposid>$METAREPOSITORY</Reposid> <Type>SASLibrary</Type> <Objects/> <Ns>SAS</Ns> <Flags/> <Options/> </GetMetadataObjects>" VERBOSE; RUN; X "C:\temp\metaout.xml";
Proc Metadata output (XML) <?xml version="1.0"?> - <GetMetadataObjects> <Reposid>A0000001.A5OHX7YD</Reposid> <Type>SASLibrary</Type> - <Objects> <SASLibrary Id="A5OHX7YD.BL000001" Name="ATP_DATA" /> <SASLibrary Id="A5OHX7YD.BL0000RT" Name="sashelp" /> <SASLibrary Id="A5OHX7YD.BL0001JL" Name="work" /> <SASLibrary Id="A5OHX7YD.BL0001JM" Name="Source_data" /> <SASLibrary Id="A5OHX7YD.BL0001JN" Name="Target_data" /> <SASLibrary Id="A5OHX7YD.BL0002BD" Name="Source_Oracle1" /> <SASLibrary Id="A5OHX7YD.BL0002BE" Name="Oracle_target" /> </Objects> <Ns>SAS</Ns> <Flags>1</Flags> <Options /> </GetMetadataObjects>
Metadata Metadata Metadata Indeholder beskrivelse af omverdenen Skal kunne bruges til at gemme informationer om alt. Libames, Servere, Datasæt, Kolonner, Filer, Brugere, Schemas, Jobs, og alt andet Behov for en meget simpel struktur. Server Applikationerne ved hvordan denne viden skal anvendes.
Eksempler på metadata Libname INFO D:\SASDatata\info ; Et sasbibliotek " D:\SASDatata\info ; Implicit viden: Indeholder måske tabeller Ligger på en specifik maskine Bestemt operativsystem
Eksempler på metadata Proc print data=sashelp.class ; run ; En tabel : sashelp.class Implicit viden: Indeholder kolonner med data Ligger på en specifik maskine Libname findes allerede SAS versionen er relevant
Eksempler på metadata Filename inclass C:\temp\class.csv ; En flad fil: "C:\Temp\class.csv ; Implicit viden: Kommasepareret: indeholder kolonner af data Ligger på en specifik maskine Der kan være forbehold for lrecl Der kan være kolonnenavne i første linie Der kan være quotes om karakterfelter
Eksempler på metadata Filename inclass C:\temp\class.csv ; En flad fil: "C:\Temp\class.csv ;
Eksempler på metadata Filename inclass C:\temp\class.csv ; En flad fil: "C:\Temp\class.csv ;
Eksempler på metadata Filename inclass C:\temp\class.csv ; En flad fil: "C:\Temp\class.csv ;
Eksempler på metadata Filename inclass C:\temp\class.csv ; En flad fil: "C:\Temp\class.csv ;
Eksempler på metadata Filename inclass C:\temp\class.csv ; En flad fil: "C:\Temp\class.csv ;
Eksempler på metadata Filename inclass C:\temp\class.csv ; En flad fil: "C:\Temp\class.csv ;
Metadata struktur: Indholdet er styret af et Blueprint, en konstruktionstegning, som beskriver hvad der kan og skal være med i beskrivelsen af et objekt.
Blueprint Alle valg medfører et nyt blueprint:
Blueprint Forskellige Blueprint for Workspace Server Data step Batch Server
Metadata elementer: Objekter opbygges af Attributter Associationer til andre objekter
Metadata navngivning: URI: Uniform ressource Identifier omsobj:saslibrary/a5ohx7yd.bl0001jm
Metadata opbygning: ATTRIBUTTER:
Metadata opbygning: Associations
Metadata Objekt ID ID omsobj:saslibrary/a5ohx7yd.bl0001jn Name AT Source_data Libref AT Target MetadataCreated AT 23Oct2007:15:01:06 MetadataUpdated AT 23Oct2007:15:26:24 Tables AS omsobj:physicaltable/a5ohx7yd.bm0002bd Trees AS omsobj:tree/a5ohx7yd.ak0001jm UsingPackages AS omsobj:directory/a5ohx7yd.b00001jn UsingPrototypes AS omsobj:prototype/a5ohx7yd.aa00003r
Metadata Objekt ID ID omsobj:tree/a5ohx7yd.ak0001jm Tree Type AT BIP Folder MetadataCreated AT 23Oct2007:15:25:34 MetadataUpdated AT 23Oct2007:15:25:44 Name AT Target_data Members AS omsobj:saslibrary/a5ohx7yd.bl0001jn omsobj:physicaltable/a5ohx7yd.bm0002bd ParentTree AS omsobj:tree/a5ohx7yd.ak0001jl
Metadata Objekter Database Table Libname Database Server Database Schema Server Component Server Kontekst SASTabel Kolonne Tree SASLIBRARY SASTabel Kolonne SASTabel Kolonne
Metadata Objekt kæder Database Table Libname Database Server Database Schema Server Component Server Kontekst SASTabel Kolonne Tree SASLIBRARY SASTabel Kolonne SASTabel Kolonne
Metadata opbygning:
Metadata uendelige associationer:
Men hvad med batch?? Nu er der jo gået noget tid Måske er der dukket noget op.
Datastep API
Metadata Datastep API METADATA_PAUSED Function METADATA_PURGE Function METADATA_RESOLVE Function METADATA_VERSION Function
Metadata Datastep API 40 data _null_ ; 41 if _N_=1 then do; 42 rc=metadata_paused(); IF rc=0 then put "Metaserver is running"; 43 Else put "Metaserver not found/active"; 44 rc=metadata_version(); put "metaserver version " rc ; 45 end; 46 run; Metaserver is running metaserver version 5.01
Læse Metadata METADATA_GETATTR Function METADATA_GETNASL Function METADATA_GETNASN Function METADATA_GETNATR Function METADATA_GETNOBJ Function METADATA_GETNPRP Function METADATA_GETNTYP Function METADATA_GETPROP Function
Læse Metadata METADATA_GETATTR Function METADATA_GETNASL Function METADATA_GETNASN Function METADATA_GETNATR Function METADATA_GETNOBJ Function METADATA_GETNPRP Function METADATA_GETNTYP Function METADATA_GETPROP Function
Blueprint: Tree 82 data _null_; 83 length assoc $256; 84 rc=1; 85 n=1; 86 87 do while(rc>0); 88 89 /* Walk through all possible associations of this object. */ 90 91 rc=metadata_getnasl("omsobj:tree?@name='projekt 12'",n,assoc); 92 put n= assoc=; 93 n=n+1; 94 end; 95 run;
Blueprint: Tree associationsliste: n=1 assoc=accesscontrols n=2 assoc=associatedpsportlet n=3 assoc=changes n=4 assoc=documents n=5 assoc=extensions n=6 assoc=externalidentities n=7 assoc=groups n=8 assoc=implementors n=9 assoc=keywords n=10 assoc=localizedattributes n=11 assoc=members n=12 assoc=notes n=13 assoc=parenttree n=14 assoc=primarypropertygroup n=15 assoc=properties n=16 assoc=propertysets n=17 assoc=responsibleparties n=18 assoc=softwarecomponents n=19 assoc=sourcetransformations n=20 assoc=specsourcetransformations n=21 assoc=spectargettransformations n=22 assoc=subtrees n=23 assoc=targettransformations n=24 assoc=timestamps n=25 assoc=trees n=26 assoc=usedbyprototypes n=27 assoc=usingprototype n=28 assoc=variables n=29 assoc=properties n=30 assoc=properties
Blueprint: SASLibrary 138 data _null_; 139 length assoc $256; assoc=assoc; 140 rc=1; 141 n=1; 142 143 do while(rc>0); 144 145 /* Walk through all possible associations of this object. */ 146 147 rc=metadata_getnasl("omsobj:saslibrary?@name=' Target_data'",n,assoc); 148 put rc= n= assoc=; 149 n=n+1; 150 end; 151 run;
Blueprint: SASLibrary associationsliste: rc=35 n=1 assoc=accesscontrols rc=35 n=2 assoc=aliases rc=35 n=3 assoc=aliasfor rc=35 n=4 assoc=changes rc=35 n=5 assoc=defaultlogin rc=35 n=6 assoc=deployedcomponents rc=35 n=7 assoc=documents rc=35 n=8 assoc=extensions rc=35 n=9 assoc=externalidentities rc=35 n=10 assoc=groups rc=35 n=11 assoc=implementors rc=35 n=12 assoc=keywords rc=35 n=13 assoc=libraryconnection rc=35 n=14 assoc=localizedattributes rc=35 n=15 assoc=notes rc=35 n=16 assoc=primarypropertygroup rc=35 n=17 assoc=properties rc=35 n=18 assoc=propertysets rc=35 n=19 assoc=responsibleparties rc=35 n=20 assoc=sascatalogs rc=35 n=21 assoc=schemapackage rc=35 n=22 assoc=sourcetransformations rc=35 n=23 assoc=specsourcetransformations rc=35 n=24 assoc=spectargettransformations rc=35 n=25 assoc=tablecollections rc=35 n=26 assoc=tables rc=35 n=27 assoc=targettransformations rc=35 n=28 assoc=timestamps rc=35 n=29 assoc=trees rc=35 n=30 assoc=usedbypackages rc=35 n=31 assoc=usedbyprototypes rc=35 n=32 assoc=usingpackages rc=35 n=33 assoc=usingprototype rc=35 n=34 assoc=variables rc=35 n=35 assoc=properties
Skrive metadata METADATA_SETASSN Function METADATA_SETATTR Function METADATA_SETPROP Function
Opret nyt objekt METADATA_NEWOBJ Function
Fjern Metadata METADATA_DELASSN Function METADATA_DELOBJ Function Bedre at slette i: DI-Studio Management konsol OLAP-cube studio Osv
Læse Metadata 47 data _null_ ; 48 n=1; 49 length lib_uri $80; 50 antal =metadata_getnobj("omsobj:saslibrary?@id? '.'",1,lib_uri); 51 put antal= lib_uri=; 52 run; antal=7 lib_uri=omsobj:saslibrary\a5ohx7yd.bl0002be
Find Libnames 89 data _null_ ; 90 length lib_uri name $80; 91 lib_uri=lib_uri ; name=name; 92 antal =metadata_getnobj("omsobj:saslibrary?@id? '.'",1,lib_uri); 93 rc = metadata_getattr(lib_uri,"name",name); 94 put antal= lib_uri= rc name = ; 95 run; antal=7 lib_uri=omsobj:saslibrary\a5ohx7yd.bl0002be 0 name=oracle_target NOTE: DATA statement used (Total process time): real time 0.03 seconds cpu time 0.01 seconds
Find alle libnames 106 data _null_ ; 107 length lib_uri name $80; 108 lib_uri=lib_uri ; name=name; 109 antal =metadata_getnobj("omsobj:saslibrary?@id? '.'",1,lib_uri); 110 do n=1 to antal; 111 rc = metadata_getnobj("omsobj:saslibrary?@id? '.'",n,lib_uri); 112 rc = metadata_getattr(lib_uri,"name",name); 113 put antal= lib_uri= rc name = ; 114 end; 115 run; antal=7 lib_uri=omsobj:saslibrary\a5ohx7yd.bl0002be 0 name=oracle_target antal=7 lib_uri=omsobj:saslibrary\a5ohx7yd.bl0002bd 0 name=source_oracle1 antal=7 lib_uri=omsobj:saslibrary\a5ohx7yd.bl0001jn 0 name=target_data antal=7 lib_uri=omsobj:saslibrary\a5ohx7yd.bl0001jm 0 name=source_data antal=7 lib_uri=omsobj:saslibrary\a5ohx7yd.bl0001jl 0 name=work antal=7 lib_uri=omsobj:saslibrary\a5ohx7yd.bl0000rt 0 name=sashelp antal=7 lib_uri=omsobj:saslibrary\a5ohx7yd.bl000001 0 name=atp_data
Find alle libnames 129 data _null_ ; 130 length lib_uri path_uri name path $80; 131 lib_uri=lib_uri ; name=name; path_uri=path_uri ; path=path; 132 antal =metadata_getnobj("omsobj:saslibrary?@id? '.'",1,lib_uri); 133 do n=1 to antal; 134 rc = metadata_getnobj("omsobj:saslibrary?@id? '.'",n,lib_uri); 135 rc = metadata_getattr(lib_uri,"name",name); 136 rc =metadata_getnasn(lib_uri,"usingpackages",1,path_uri); 137 rc = metadata_getattr(path_uri,"directoryname",path); 138 put name = path=; 139 end; 140 run; name=oracle_target path=c:\migr\ora_target name=source_oracle1 path=c:\migr\ora_source name=target_data path=c:\migr\target name=source_data path=c:\migr\source name=work path=c:\temp name=sashelp path=sasenvironment\sascode\jobs name=atp_data path=d:\proj\atp\metadata
Find alle libnames 141 data libnames ; 142 length lib_uri path_uri name path $80; 143 lib_uri=lib_uri ; name=name; path_uri=path_uri ; path=path; 144 antal =metadata_getnobj("omsobj:saslibrary?@id? '.'",1,lib_uri); 145 do n=1 to antal; 146 rc = metadata_getnobj("omsobj:saslibrary?@id? '.'",n,lib_uri); 147 rc = metadata_getattr(lib_uri,"name",name); 148 rc =metadata_getnasn(lib_uri,"usingpackages",1,path_uri); 149 rc = metadata_getattr(path_uri,"directoryname",path); 150 keep name path; 151 output; 152 end; 153 run; NOTE: The data set WORK.LIBNAMES has 7 observations and 2 variables. NOTE: DATA statement used (Total process time): real time 0.51 seconds cpu time 0.09 seconds
Demo Demo: Læse metadata List deployed jobs List tabeller List act s brugere og objekter
Metadataoplysninger brugt til: Kontrollere metadata for dobbelt registreringer Brugerlister fordelt på afdelinger Rettighedshierarkier for brugere Dokumentere jobs der skal afvikles. Styre afviklingen af jobs ( User written ) i batch Oversigter Kvalitetskontrol Sammenligning af udv, test og prod.
Endorfiner Nyligt studier har afsløret hidtil ukendte kemiske reaktioner i hjerne, udløst ved IT-arbejde
Metadata-rus Decorfin [Det-går-fin] Fryden ved en vellykket opdatering. Medfører svage smil og en stille jubel. Vanedannende Personer med stærk udadvendt reaktion på Decorfin ender ofte som projektledere.
Metadata-rus Exorfin [Ik-sår-fin] Angstanfald ved en fejlet opdatering. Udløser ofte en svagt Decorfin dosis, hvorefter den langt stærkere Exorfin bruser gennem kroppen Handlingslammende Kan fremkalde tanker om karriereskift Sundhedsstyrelsen anbefaler max 1 Exorfin / 14 dag i korte perioder.
Backup af Metadata Skal man kunne gennemføre uden usikkerhed. Test det gerne, så rutinen er der. Kræver at backup er på plads Smart at have en ekstra Metadata server (8562)
Metadata server : Pause
Kopier ønskede backup
Metadata server: Resume
Demo Demo : opdateringer Opret mapper Sæt libnames på sastabeller Sæt admin_act på acts Opret job1-4 Afvikling af jobs ( kun læsning )
Opdateringer i metadata i batch: Editeret navnet på SAS tabeller så det indeholder LIBNAME Redefinere grund-tabellen i en masse OLAP kuber hvor data blev organiseret anderledes Tilknyttet objekter til ACE-definitioner for at sikre korrekt adgang i forhold til ønskede sikkerhedsniveauer Oprette brugere på basis af en liste af brugerid-er og afdelinger Indsætte standard preprocess på (alle) jobs. Oprette SASJob med saskode der placeres i Userwritten code i job. Indlægger Input og output tabeller efter behov. Defineret mange standardiserede csv definitioner, således at disse ikke skulle etableres pr. håndkraft.
Spørgsmål? Database Table Libname Database Server Database Schema Server Component Server Kontekst SASTabel Kolonne Tree SASLIBRARY SASTabel Kolonne SASTabel Kolonne