Om de ETL jobs van een datawarehouse te activeren kun je diverse manieren toepassen. Je kunt een SSIS
package maken die alle onderliggen ETL packages aanroept. Je kunt ook een SSIS package maken die alle
Stored Procedures voor ETL verwerking aanroept. Tot slot kun je een Stored Procedure maken die alle ETL
jobs aanroept. De aanroep naar de ETL job kan een SQL agent job zijn, een cmd bestand die een T-SQL script
aanschopt of een stored procedure die direct het werk doet.
Mijn ervaring met een SSIS “Master Package” is dat dit traag is. SSIS start slecht op en werkt niet
prettig meer. Daarnaast moet je telkens handmatig aanpassingen doen in de package als er bijvoorbeeld een
nieuwe tabel bijkomt (dimensie of feit).
Momenteel werken wij met een mechanisme die agent jobs aanschopt die binnen een bepaalde “agent
jobcategorie” vallen. Stel je hebt een stermodel “boekhouding”. Alle ETL jobs (agent jobs) vallen in deze
categorie.
SELECT *
FROM msdb.dbo.sysjobs
JOIN msdb.dbo.syscategories ON ( syscategories.category_class = 1
AND sysjobs.category_id = syscategories.category_id
)
De laatste kolom “name” laat de categorie van de agentjob zien. Door een slimme procedure te bouwen kun je
alle jobs tegelijk of achter elkaar aanroepen en zo alle ETL processen laden om het Datawarehouse bij te
werken. Zodra er een nieuwe tabel/dimensie/feit wordt gegenereerd zal er automatisch een nieuwe agentjob
worden gemaakt binnen deze categorie en wordt deze ook automatisch meegeladen, weg handwerk.
Wat is jouw manier van werken ?