The problem was in the case where the CSV provided a new value for an attribute that replaced an existing value. Both the old and new value were being included in the tilestats instead of just the new.