NEWID()
is by design returning unique (to your computer) GUID values. Whenever you run
SELECT NEWID()
You will see a different value.
It sounds like your UPSERT code needs to combine data from the source tables into a primary key that you can reliably use in future to determine if the given row needs to be inserted or updated.