BQ doesn't have primary keys. Perhaps you are thinking of the id that can be supplied with the streaming insert? This has very loose guarantees on what is de-duplicated (~5m iirc)
I mentioned elsewhere on Google Cloud the most elegant way of doing this is with Google Cloud Dataflow [1]
(work at G)
[0]https://stackoverflow.com/questions/38446499/bigquery-dedupl...
[1]https://cloud.google.com/blog/big-data/2017/06/how-qubit-ded...