Domanda

Qual è il modo migliore per progettare un pacchetto SSIS? Sto caricando più dimensioni e fatti come parte di un progetto. Sarebbe meglio:

  1. Hai 1 pacchetto e 1 flusso di dati con tutti i dati estratti e carica la logica in 1 flusso di dati?
  2. Hai 1 pacchetto e più flussi di dati con ciascun flusso di dati che assume la logica per 1 dimensione?
  3. Hai 1 pacchetto per dimensione e poi un pacchetto principale che li chiama tutti?

Dopo aver fatto qualche ricerca, 2 e 3 sembrano essere opzioni più praticabili. Qualche esperto là fuori che vuole condividere la propria esperienza e / o proporre un'alternativa?

È stato utile?

Soluzione

Il Project Real di Microsoft è un eccellente esempio di molte buone pratiche:

  • Progettazione e configurazione del pacchetto per la modellazione dimensionale
  • Registrazione dei pacchetti
  • Il partizionamento

È basato su SQL 2005 ma è molto applicabile al 2008. Supporta l'opzione n. 3.

Altri suggerimenti

Potresti anche considerare di avere più pacchetti chiamati da un processo di SQL Server Agent.

Vorrei spesso scegliere l'opzione 3. Questo è il metodo usato nel libro Kimball Microsoft Data Warehouse Toolkit, che vale la pena leggere.

http://www.amazon.co.uk/Microsoft-Data-Warehouse-Toolkit-Intelligence/dp/0471267155/ref=sr_1_1?ie=UTF8&s=books&qid=1245347732&sr = 8-1

Penso che la risposta non sia altrettanto chiara ... Allo stesso modo in cui spesso non c'è "il migliore" design per un DWH, penso che non ci sia nessuno "migliore" metodo del pacchetto.

Dipende abbastanza dal numero di dimensioni, dal numero di dimensioni correlate e dalla struttura dei dati nell'area di gestione temporanea.

Mi piacciono molto gli approcci di Project Real (menzionati sopra), soprattutto se la registrazione dei pacchetti è stata fatta abbastanza bene. Penso di aver letto da qualche parte che Denali (SQL 2011) avrà il logging / tracking SSIS integrato, ma non sono sicuro dei dettagli.

Da un punto di vista chiamante, sceglierei un lavoro dell'agente SQL, che chiama un pacchetto principale che chiama quindi tutti i pacchetti figlio e gestisce tra loro la gestione degli errori / logica / e-mail ecc., utilizzando le tabelle Log / Error per tracciare e gestire il flusso del pacchetto. SSIS consente set di logici molto più complessi dell'agente SQL (ad esempio, chiamare questo pacchetto figlio se tutte le attività A e B e C sono terminate e non l'attività D)

Inoltre, sceglierei un pacchetto per dimensione Snowflaked, poiché di solito dai dati di gestione temporanea una tabella di origine genererà un numero di dimensioni con fiocchi di neve (ad esempio DimProduct, DimProductCategory, DimProductSubCategory). Sarebbe sensato leggere i dati una volta dentro nel task flusso di dati (DFT) e scrivere su più tabelle. Vorrei utilizzare un contenitore per dimensione per la separazione della logica.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top