Domanda

Sfondo

Ho una tabella dimensionale che ha un singolo record per ogni giorno. Ogni record ha una chiave primaria, quindi i dati di esempio sarebbero:

Dimension Table
---------------

---------------------------------
| ID   | DateTime               |
---------------------------------
| 1083 | 04/10/2008 10:02:00 PM |
---------------------------------

Quello che sto cercando di fare è prendere la mia colonna di dati di origine che ha un valore datetime SQL (come 04/10/2008 10:02:00 PM ) e fare in modo che SSIS dia ciò che il primario la chiave dalla tabella delle dimensioni dovrebbe essere ( 1083 nell'esempio sopra). Sto cercando di adattarlo al flusso di dati all'interno del mio pacchetto ed evitare di utilizzare tabelle di gestione temporanea.

Vorrei chiamare una funzione di database durante il mio flusso di dati affinché il mio pacchetto SSIS rilevi il timeid per un record datetime . Ho provato a usare DeriveColumn ma questo non sembra consentire l'uso di T-SQL; piuttosto solo funzioni integrate in ANSI SQL.

Domanda

C'è un altro modo per farlo all'interno del flusso di dati? O dovrò utilizzare le tabelle di gestione temporanea e utilizzare un SQLTask al di fuori del flusso di dati per manipolare i miei dati?

È stato utile?

Soluzione

Se ti capisco, hai un data mart con una dimensione temporale e devi ottenere il timeId che corrisponde a un determinato momento.

Se è corretto, allora si desidera utilizzare un componente di ricerca. Per la tabella di riferimento usa qualcosa come SELECT timeId, timeStamp FROM TimeDimension , quindi cerca la colonna di input che contiene il timestamp. Usa timeId come colonna di output e ora ogni riga nel tuo flusso di dati avrà il timeId che corrisponde al suo timestamp.

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