This may be happening because Stitch’s BigQuery destination functions in an append-only fashion, as outlined in this section of our documentation. Any records extracted are appended to the destination table (including updates to existing records) and no de-duplication occurs during loading. As a result, you’ll see duplicate records contained in any tables replicated to your warehouse.
Stitch requests the past n days worth of data during each replication cycle, where n is the attribution window you’ve configured for your integration, and all of these records will be appended to your destination table.
You can account for this duplication in your destination queries. We have a guide to querying append-only tables that includes examples of how you can grab the latest version of each record.