If BigQuery does not offer minus or except , you can do the same with not exists :
select t1.* from table1 t1 where not exists (select 1 from table2 t2 where t2.col1 = t1.col1 and t2.col2 = t1.col2 . . . );
This works correctly for non-null values. For NULL values, you need a little more effort. And this can also be written as left join :
select t1.* from table1 t1 left join table2 t2 on t2.col1 = t1.col1 and t2.col2 = t1.col2 where t2.col1 is null;
One of them should be acceptable for bigquery.
source share