'OUTPUT $action in SQL server, casing the updated rows output for a specific column
I am making merge upserts to my data warehouse. I don't need to keep the history on this particular object, so I'm using a type i slowly changing dimension. I'm using OUTPUT $action
so I can keep track of how many updates and inserts occurred per day.
My goal is to skip the logging step for updates where a particular column is updated (age, specifically), because I expect everyone who had a birthday to change ages (I can't include birthdate in the object for privacy). Counting those updates in the logging is undesirable.
So far, my logging is:
OUTPUT $action,
CASE $action
WHEN 'UPDATE' THEN 'Found matching key: updated existing record'
WHEN 'INSERT' THEN 'No matching key: inserted new record'
END
INTO @SummaryOfChanges(Change, Reason)
I want to add logic that says if the column age
is the column updated, then skip the logging step.
Unlike the inserted and deleted parts of $action
, I don't see a way to call back info about the updated rows. I've tried a variety of CASE
statements within the OUTPUT
step, but don't understand how to check if age
was one of the columns updated during the row merge. I can't seem to check if the source and target age
match within the OUTPUT
clause.
Why?
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|