Hovedflow
MappingBeskrivelseLoadtype
DSA_P12XXX_Civilstande_EDW_PersonCivilstandIndlæsning af hvilke civilstande en person har haft.
PreSQLExpression
BeskrivelseExpression
/* Slet (prune) rækker i PersonCivilstand som har FraDato >= Tidligste HAENSTART_CIVILSTAND i data som skal indlæses*/ DELETE pc FROM $$EDW_DATABASE.dbo.PersonCivilstand pc inner hash join $$EDW_DATABASE.maps.Person p on p.SYS_BusinessKeyID=pc.FK_Person_BK_Person inner hash join ( SELECT RN = ROW_NUMBER() OVER (PARTITION BY PNR ORDER BY SYS_ExtractDate DESC, HAENSLUT_CIVILSTAND_TRUNC DESC, SYS_RowID DESC) , PNR, HAENSTART_CIVILSTAND_TRUNC, SYS_ExtractDate, sys_batchdate FROM $$DSA_DATABASE.dbo.DSA_P12XXX_Civilstande ) DSA_PersonCivilstand ON p.Personnummer=DSA_PersonCivilstand.PNR WHERE DSA_PersonCivilstand.RN = 1 AND pc.FraDato >= DSA_PersonCivilstand.HAENSTART_CIVILSTAND_TRUNC AND DSA_PersonCivilstand.sys_batchdate = @batchdate ; /* Opdater PersonCivilstand.TilDato, hvis den ligger efter ny HAENSTART_CIVILSTAND*/ UPDATE pc SET pc.TilDato=DSA_PersonCivilstand.HAENSTART_CIVILSTAND_TRUNC FROM $$EDW_DATABASE.dbo.PersonCivilstand pc inner join $$EDW_DATABASE.maps.Person p on p.SYS_BusinessKeyID=pc.FK_Person_BK_Person inner join ( select FK_Person_BK_Person, MAX(TilDato) MaxTilDato FROM $$EDW_DATABASE.dbo.PersonCivilstand group by FK_Person_BK_Person ) PcMaxTilDato on PcMaxTilDato.FK_Person_BK_Person=pc.FK_Person_BK_Person and PcMaxTilDato.MaxTilDato=pc.TilDato inner join ( SELECT RN = ROW_NUMBER() OVER (PARTITION BY PNR ORDER BY SYS_ExtractDate DESC, HAENSLUT_CIVILSTAND_TRUNC DESC, SYS_RowID DESC) , PNR, HAENSTART_CIVILSTAND_TRUNC, SYS_ExtractDate, sys_batchdate FROM $$DSA_DATABASE.dbo.DSA_P12XXX_Civilstande ) DSA_PersonCivilstand ON DSA_PersonCivilstand.PNR=p.Personnummer and DSA_PersonCivilstand.HAENSTART_CIVILSTAND_TRUNC <= PcMaxTilDato.MaxTilDato WHERE DSA_PersonCivilstand.RN = 1 AND DSA_PersonCivilstand.sys_batchdate = @batchdate ;
Primær kilde og destination
KildelagPrimær kilde tabelFilterExpression på primær kildetabelDestinationslagPrimær destinations tabel
DSAdbo.DSA_P12XXX_CivilstandeEDWdbo.PersonCivilstand
Sekundære kilder
KildelagKildetabelExpressionKolonneJoin typeOperatorKildelagKildetabelExpressionKolonneOrder
DSAdbo.DSA_P12XXX_CivilstandePNRLookup=EDWdbo.PersonPersonnummer1
DSAdbo.DSA_P12XXX_CivilstandeCIVSTLookup=EDWdbo.CivilstandCivilstandkode2
Forretningsregler
KildelagKildetabelKolonneForretningsregelDestinationslagDestinationstabelKolonne
EDWdbo.CivilstandCivilstandIDVærdien overføres direkteEDWdbo.PersonCivilstandFK_Civilstand_ID_Civilstand
EDWdbo.PersonSYS_BusinessKeyFKVærdien overføres direkteEDWdbo.PersonCivilstandFK_Person_BK_Person
DSAdbo.DSA_P12XXX_CivilstandeHAENSTART_CIVILSTAND_TRUNCVærdien overføres direkteEDWdbo.PersonCivilstandFraDato
DSAdbo.DSA_P12XXX_CivilstandeHAENSLUT_CIVILSTAND_TRUNCVærdien overføres direkteEDWdbo.PersonCivilstandTilDato
PostSQLExpression
BeskrivelseExpression
/* /* Udkommenteret da vi ikke anvender PostUpdateLog på nuværende tidspunkt, og det koster i indlæsnigen. XMK 20171222*/ INSERT INTO $$EDW_DATABASE.dbo.PersonCivilstand_PostUpdateLog ( [Beskrivelse] ,[Dato_For_Opdatering] ,[PersonCivilstandID_OpdateringsKilde] ,[FK_Civilstand_ID_Civilstand_OpdateringsKilde] ,[FraDato_OpdateringsKilde] ,[TilDato_OpdateringsKilde] ,[FK_Person_BK_Person_OpdateringsKilde] ,[SYS_KommuneId_OpdateringsKilde] ,[SYS_BatchDate_OpdateringsKilde] ,[SYS_RowID_OpdateringsKilde] ,[SYS_ExtractDate_OpdateringsKilde] ,[SYS_SourceFileID_OpdateringsKilde] ,[SYS_SourceSharedTableId_OpdateringsKilde] ,[PersonCivilstandID_OpdateringsMål] ,[FK_Civilstand_ID_Civilstand_OpdateringsMål] ,[FraDato_OpdateringsMål] ,[TilDato_OpdateringsMål] ,[FK_Person_BK_Person_OpdateringsMål] ,[SYS_KommuneId_OpdateringsMål] ,[SYS_BatchDate_OpdateringsMål] ,[SYS_RowID_OpdateringsMål] ,[SYS_ExtractDate_OpdateringsMål] ,[SYS_SourceFileID_OpdateringsMål] ,[SYS_SourceSharedTableId_OpdateringsMål] ) select 'Periode overlap i PersonCivilstand. TilDato i OpdateringsMål sættes til FraDato fra OpdateringsKilde.' AS Beskrivelse ,GetDate() as Dato_For_Opdatering ,pb.[PersonCivilstandID] ,pb.[FK_Civilstand_ID_Civilstand] ,pb.[FraDato] ,pb.[TilDato] ,pb.[FK_Person_BK_Person] ,pb.[SYS_KommuneId] ,pb.[SYS_BatchDate] ,pb.[SYS_RowID] ,pb.[SYS_ExtractDate] ,pb.[SYS_SourceFileID] ,pb.[SYS_SourceSharedTableId] ,pb2.[PersonCivilstandID] ,pb2.[FK_Civilstand_ID_Civilstand] ,pb2.[FraDato] ,pb2.[TilDato] ,pb2.[FK_Person_BK_Person] ,pb2.[SYS_KommuneId] ,pb2.[SYS_BatchDate] ,pb2.[SYS_RowID] ,pb2.[SYS_ExtractDate] ,pb2.[SYS_SourceFileID] ,pb2.[SYS_SourceSharedTableId] from $$EDW_DATABASE.dbo.PersonCivilstand pb inner hash join $$EDW_DATABASE.dbo.PersonCivilstand pb2 on pb2.fk_person_bk_person=pb.fk_person_bk_person AND pb.PersonCivilstandID <> pb2.PersonCivilstandID where ( pb.TilDato > pb2.FraDato and pb.FraDato < pb2.FraDato ) AND ISNULL(pb.FK_Person_BK_Person, -1) <> -1 AND ISNULL(pb2.FK_Person_BK_Person, -1) <> -1 ; */ UPDATE pb SET [TilDato] = pb2.[FraDato] from $$EDW_DATABASE.dbo.PersonCivilstand pb inner hash join $$EDW_DATABASE.dbo.PersonCivilstand pb2 on pb2.fk_person_bk_person=pb.fk_person_bk_person AND pb.PersonCivilstandID <> pb2.PersonCivilstandID where ( pb.TilDato > pb2.FraDato and pb.FraDato < pb2.FraDato ) AND ISNULL(pb.FK_Person_BK_Person, -1) <> -1 AND ISNULL(pb2.FK_Person_BK_Person, -1) <> -1 ;