SQL Server ed ALM su database


Il blog di Alessandro Alpi
Home Blogs | Home | Login | Contact | My Profile | RSS | About | Cerca

[SSIS] SkipRow e Conditional Split

Poco tempo fa, sul blog, mi è arrivata una richiesta come questa: “Visto che in DTS, via ActiveX Script si poteva fare SkipRow e quindi saltare n righe di una particolare sorgente dati, ora come posso implementare la stessa logica?”   In SSIS, un task che risolve la problematica è il conditional split.     Con questo task è possibile definire condizioni particolari ordinate in base a una determinata priorità. Per ogni condizione impostata (con in più quella di default, che 
Leggi tutto il post...
Categoria: SSIS 2005 tips
martedì, 12 giu 2007 Ore. 00.03

Scrivi un commento

Nome:
Blog:
E-Mail:
(l'indirizzo e-mail non verrà pubblicato, consente di essere avvertiti quando arrivano nuovi commenti a questo Post)
Codice:
Corpo:
Cookie:

Commenti

Autore: MalvinInviato il: 20 ago 2008 - 11.50
Ciao, riguardo alla funzionalità Conditional Split, mi servirebbe un modo per selezionare alcune righe in un flat file TXT.
Dato questo file:

300,2007,10,14.07,20.95,12.76,7.48,2243
100,2007,10,1615,1.156,12.85,80.1,146.8,8.39
101,2007,11,1936,.099
100,2007,10,1630,.91,12.98,77.9,103.9,8.39
100,2007,10,1645,.989,12.98,80.3,92.6,8.39
100,2007,10,1700,.858,12.32,81.7,77.4,8.39
100,2007,10,1715,.669,12.92,80.4,79,8.39
102,2007,76,0,12.85,9.06,5.185,-1.549,-1.695

Mi servono solo le righe che iniziano con 100 e 101, le altre vanno scartate..
Ho configurato il flat file connection ad un solo record contenente una riga per volta.
Come posso procedere? Con la condizione : SUBSTRING([Column 0],1,1) == "100" non funziona..

GRAZIE 1000, Malvin
Autore: alx_81Inviato il: 20 ago 2008 - 12.31
>Ciao,
Ciao,
Devi impostare nella tua sorgente FLAT FILE i tipi di dato delle colonne. La prima, definiamola "Colonna0", nel tuo caso mi sembra possa essere DT_I4 = Integer.
Se puoi farla numerica, la condizione del Conditional Split può essere:
[Column 0] == 100 || [Column 0] == 101

Questa è quella per i dati OK. Nell'else passeranno i dati diversi da 100 e da 101..

Se invece Colonna0 è stringa per forza di cose, la substring fatta come l'hai scritta tu non è corretta. Dovresti usarla in questo modo:

SUBSTRING(Colonna0, DaDove, PerQuantiCaratteri) e quindi:
SUBSTRING(Colonna0, 1, 3)

> GRAZIE 1000, Malvin
Di nulla! :-)
Autore: MalvinInviato il: 20 ago 2008 - 14.55
Ho usato Colonna 0 come stringa e come hai detto tu per substring. Tutto ok!
Che fesso a mettere 1,1 , potevo leggere meglio la sintassi per substring... :)


Ciao e grazie ancora!!!
Copyright © 2002-2007 - Blogs 2.0
dotNetHell.it | Home Page Blogs
ASP.NET 2.0 Windows 2003