Hello @Amira Bedhiafi ,
This time, I noticed there 300 row of data missing from my datawarehouse data when comparing with the source table. the pipeline of this store procedure has been running successfully everyday but don't know why the data are still missing ?
I don't think there are any restriction under the data warehouse at all since the previous Engineers did not handover the work properly. I have no ideas why, however, I have the main part of store procedure attached if you don't mind to have a look into this for me please?
with distinct_recs as
(
SELECT [SITUATION_ID]
,[PERSON_ID]
,[AGE]
,[SITUATION_DATE]
,[ACTIVITY]
,[ACCOMMODATION_TYPE]
,[ACCOMMODATION_SUITABLE]
,[IN_TOUCH_ON_BIRTHDAY]
FROM [stg].[MO_CARE_LEAVER_SITUATIONS]
)
MERGE [prs].[dimCareLeaverSituations] AS t --
USING (SELECT row_number() OVER (ORDER BY [SITUATION_ID] DESC) + @CareLeaverSituationsPK AS [SituationPK]
,[SITUATION_ID] AS [SituationCodeBK]
,[PERSON_ID] AS [PersonCodeBK]
,[AGE] AS [Age]
,[SITUATION_DATE] AS [SituationDate]
,[ACTIVITY] AS [Activity]
,[ACCOMMODATION_TYPE] AS [AccommodationType]
,[ACCOMMODATION_SUITABLE] AS [AccommodationSuitable]
,[IN_TOUCH_ON_BIRTHDAY] AS [InTouchOnBirthday]
FROM distinct_recs) AS s
ON t.[SituationCodeBK] = s.[SituationCodeBK]
WHEN MATCHED
AND
ISNULL(t.[PersonCodeBK] ,'') <> ISNULL(s.[PersonCodeBK] ,'') OR
ISNULL(t.[Age] ,0) <> ISNULL(s.[Age] ,0) OR
ISNULL(t.[SituationDate] ,'1900-01-01') <> ISNULL(s.[SituationDate] ,'1900-01-01') OR
ISNULL(t.[Activity] ,'') <> ISNULL(s.[Activity] ,'') OR
ISNULL(t.[AccommodationType],'') <> ISNULL(s.[AccommodationType] ,'') OR
ISNULL(t.[AccommodationSuitable],'') <> ISNULL(s.[AccommodationSuitable] ,'') OR
ISNULL(t.[InTouchOnBirthday] ,'') <> ISNULL(s.[InTouchOnBirthday] ,'')
THEN UPDATE SET t.[PersonCodeBK]=s.[PersonCodeBK]
,t.[Age]=s.[Age]
,t.[SituationDate]=s.[SituationDate]
,t.[Activity]=s.[Activity]
,t.[AccommodationType]=s.[AccommodationType]
,t.[AccommodationSuitable]=s.[AccommodationSuitable]
,t.[InTouchOnBirthday]=s.[InTouchOnBirthday]
,t.UpdatedAt = sysutcdatetime()
,t.BatchID = 'DimCareLeaverSituations-' + CONVERT(NVARCHAR (128), sysutcdatetime(), 120)
WHEN NOT MATCHED BY TARGET
THEN INSERT ([SituationPK]
,[SituationCodeBK]
,[PersonCodeBK]
,[Age]
,[SituationDate]
,[Activity]
,[AccommodationType]
,[AccommodationSuitable]
,[InTouchOnBirthday]
,[CreatedAt]
,[UpdatedAt]
,[BatchID])
VALUES (s.[SituationPK]
,s.[SituationCodeBK]
,s.[PersonCodeBK]
,s.[Age]
,s.[SituationDate]
,s.[Activity]
,s.[AccommodationType]
,s.[AccommodationSuitable]
,s.[InTouchOnBirthday]
,sysutcdatetime()
,NULL
,'DimCareLeaverSituations-' + CONVERT(NVARCHAR (128), sysutcdatetime(), 120)
);
Many thanks
Nicky