Search

onze sponsors

microsoft_logo.gif


 

computrain_logo.JPG

Forum Login | Register
   Forum

 

Subject: Aantal lookups in BIDS SSIS
Prev Next
You are not authorized to post a reply.

Author Messages
Arjan FraaijUser is Offline

Posts:110

18-11-2009 11:47:37 Alert 

Hallo,

Ik heb een fact tabel waarin door de DWH ontwerper ongeveer 25 dimensions zijn gekoppeld. Als ik dit in SSIS defineer om vanuit de transformatie de DimKey's op te halen via lookup's. Krijg je dus 25 lookup's in de package en dan zegt BIDS: Visual studio is busy...... en dit duur heel lang.

De opplossing is om alle lookup's te verwijderen en dit gewoon te doen in de select statement voor het vullen van de fact table door 25 joins toe te voegen. 2,5mln records met 25 joins worden in 5 minuten verwerkt dus dit is nog redelijk snel.

Dit kan ik echter doen doordat alle database op dezelfde server staan.

SELECT
ISNULL(D1.DimKey1,-1) 
, etc
, measures
FROM
Transformation.Trn_Fact F
LEFT JOIN
DWH.Dimensions.Dim1 D1
ON D1.DimUID = F.Dim1UID

En deze join 25 keer herhalen voor de overige dim's
De connectie voor de DFT is die naar de database Staging

Stel nu de DWH database wordt verplaatst naar een andere server. Dan zou ik dus al een linked server moeten gaan defineren, welke dan een stuk trager zou zijn.

Een andere oplossing zou zijn om in het ETL proces voor alle Dimensions een lookup table bij te houden in de staging database zodat er geen linked server hoeft te worden gedefineerd.

Nu zit de logica echter in de select statements en niet in SSIS, dit is wellicht wel beter omdat je de SQL engine gebruikt.

Als de logica echter in SSIS zou zitten heb je meer mogelijkheden voor audit omdat je de error output van de lookup kan gebruiken voor tellingen ed.

Wie is al wel eens tegen dit soort problemen aangelopen en hoe heb je het opgelost?

Ik heb nog gekeken naar work-offline of validation uit te zetten maar zelfs dit is niet voldoende voor BIDS om normaal te kunnen functioneren.

Je zou nog kunnen bedenken om meerdere update packages te defineren en in de Transformatie tabel DimKey velden toe te voegen en deze middels lookups en updates te vullen met de dimkey waarde. Dit is echter een performance downgrade van het ETL proces of niet?

 

Gr,

Arjan

Rob PellicaanUser is Offline

Posts:11

18-11-2009 16:00:49 Alert 
25 Lookups zal een aanzienlijke aanslag plegen op het benodigde werkgeheugen, wat een deel van de traagheid kan veroorzaken. Heb je wel genoeg GBs aan RAM gereserveerd voor SSIS?

Overigens kan je in T-SQL de OUTPUT INTO clause ook gebruiken om een audit trail bij te houden.

Waarom zou je je DWH willen scheiden van je Staging Area op verschillende servers? Dan kan je ook geen T-SQL MERGE statement meer gebruiken....
Arjan FraaijUser is Offline

Posts:110

18-11-2009 16:38:22 Alert 
@Rob Het werkgeheugen wordt pas aangesproken tijdens het processen van de package niet tijdens de bouw hiervan. De VSS melding "Visual Studio is Busy" komt tijdens de bouw van de package. Een google zoek levert veel resultaat maar geen oplossing.

Deze klant heeft meerdere database clusters geplaatst, ODS / Staging / DWH waaraan geconformeerd moet worden er zijn ook verschillende SSIS servers die bepaalde stappen in het process verwerken. Dit omdat er meerdere staging & dwh omgevingen zijn voor verschillende divisies, landen, bron systemen. 40 landen, 120 sources en een berg data. Sommige activiteiten gebeuren dus inderdaad dubbel. Delta tabellen (DEL/SCD1/SCD2/SCD3/NEW) worden bijvoorbeeld van de staging overgeheveld naar een DWH server om daar de load uit te voeren op basis van SP's om geen gebruik te hoeven maken van Linked-Servers. Ook zijn de sources hoewel ze voor de zelfde processen in de organisatie worden gebruikt, bijvoorbeeld Sales proces niet dezelfde applicaties. Ook wordt door de verdere splitsing van packages een verbeterde herstartbaarheid gegarandeerd.

Het grootste verlies is dat je niet de volledige kracht van SSIS gebruikt om veel in memory te kunnen doen.

Het is wellicht niet ideaal omdat je inderdaad bepaalde T-SQL functionaliteit niet meer kan gebruiken omdat databases over meedere servers zijn verspreidt. Hier heb je echter dan toch SSIS voor :-) deze heeft ook een merge-join.... Union All.....

Een andere reden voor de splitsing is de load van de servers, ze willen geen Henk Valk systeempje aanschaffen. De servers zijn nu 4x4core intel 5500 series CPU, 32GB mem, Windows 2008 64Bits, SQL 2008 ENT 64Bits.. Single-Instance clusters

Gr,
Arjan
Arjan FraaijUser is Offline

Posts:110

19-11-2009 07:59:19 Alert 

Rob, nog bedankt voor het herinnderen aan de OUTPUT INTO optie...

Kasper de JongeUser is Offline

Posts:4

23-12-2009 14:37:13 Alert 

 Hoi Arjan,

 

Ik heb ook zoiets gehad bij een project, je zegt dat validation uitzetten geen optie was ? Maar er zijn 2 manieren om validation uit te zette, dmv  ValidateExternalMetadata op de data source of via DelayValidation to True on package elements. Dit zou ervoor moeten zorgen dat de externe systemen nooit worden aangesproken terwijl je in BIDS aan het werk bent. Dat is volgens mij toch echt het probleem bij jou op dit moment. Zie ook mijn blogpost over dit onderwerp.

Kasper de Jonge

You are not authorized to post a reply.
Forums > Forums > Business Intelligence > Aantal lookups in BIDS SSIS



ActiveForums 3.6
  
Copyright (c) 2012 PASS Nederland   Privacy Statement  Terms Of Use