I had the same issue for the last 2 weeks. I tried calibrating over and over with no luck. Out in the middle of nowhere, in park, or my backyard-it didn't matter.
When looking at the compass sensor reading interference was in the green in the 30s. Still no go.
Finally figured somehow my compass or the the hardware around my compass was magnetized. Went to home depot and bought a tool demagnetizer for $2.97.
Rubbed it all around the compass while the drone was off and tried to calibrate... still no good. Hmm.. dang it.
Left the mavic air on and placed the demagnetizer on the tail above the compass. Looked at the compass sensor and it spiked to 999. Removed the demagnetizer and it dropped back down to 31. I then tried calibrating and BINGO!!!
Ran 5 batteries in 3 locations separated by 20 miles today. Didn't have a single issue.
This is the demagnetizer I used.