Att veta en kunds ålder när en transaktion inträffar är ett återkommande krav i många BI-projekt. Detta kan åstadkommas genom att extrahera födelsedatum från personnummret och sedan subtrahera transaktionsdatumet med detta datum när man kör sin ETL i SSIS.
Detta görs lämpligen i SSIS med hjälp av data flow-komponenten Derived Column. Förutsatt att du har lagt in en OLE DB Datasource eller annan datakälla så gör du bara följande:
1. Lägg in en Derived Column task i ditt data flow.
2. Koppla dataflödet från din datakälla till din Derived Column task.
3. Lägg in följande expression i Expressionfältet:
(DT_I4)(ISNULL(Personnummer) ? NULL(DT_I4) : FLOOR(DATEDIFF(”dd”,(DT_DBTIMESTAMP)(SUBSTRING(Personnummer,1,4) + ”-” + SUBSTRING(Personnummer,5,2) + ”-” + SUBSTRING(Personnummer,7,2)),Samtalsdatum) / 365.25))
4. Se till att en ny kolumn skapas genom att ”Derived Column” är satt till ”Add as new column”.
5. Döp fältet till ”Alder” eller liknande.
Notera att ovanstående förutsätter ett fyrsiffrigt år i personummret. Om du bara har två siffor att lira med så är det bara att ändra första substring-uttrycket till
”19″ + SUBSTRING(Personnummer,1,4)
Du har nu skapat en ny kolumn innehållande ett heltal för ålder för varje rad i ditt dataflöde.