1- from data_processor import DataProcessor
2- from models .table import TableSchema
3- from processors .utils import add_suffix_to_column_names
4- from query .query_bq import QueryBigQuery
51from sqlglot import alias , column , condition , func , parse_one , select
62from sqlglot .expressions import Select
73
4+ from data_check .data_processor import DataProcessor
5+ from data_check .models .table import TableSchema
6+ from data_check .query .query_bq import QueryBigQuery
7+
8+ from .utils import add_suffix_to_column_names
9+
810
911class BigQueryProcessor (DataProcessor ):
1012 def __init__ (self , query1 : str , query2 : str ) -> None :
@@ -70,7 +72,7 @@ def get_query_insight_tables_primary_keys(self) -> Select:
7072 )
7173
7274 query = (
73- self .with_statement_query .with_ ("agg_diff_keys" , as_ = agg_diff_keys )
75+ self .with_statement_query_sampled .with_ ("agg_diff_keys" , as_ = agg_diff_keys )
7476 .select (
7577 "total_rows" ,
7678 "missing_primary_key_in_table1" ,
@@ -89,6 +91,16 @@ def get_query_insight_tables_primary_keys(self) -> Select:
8991
9092 return query
9193
94+ def get_query_check_primary_keys_unique (self , table_name : str ) -> Select :
95+ """Check if the primary keys are unique for a given row"""
96+ return (
97+ self .with_statement_query_sampled .select (
98+ alias (func ("count" , "*" ), "total_rows" ),
99+ ).from_ (table_name , dialect = self .dialect ).group_by (self .primary_key ).having (
100+ func ("count" , "*" ) > 1
101+ )
102+ )
103+
92104 def get_query_exclusive_primary_keys (
93105 self , exclusive_to : str , limit : int = 500
94106 ) -> Select :
@@ -102,7 +114,7 @@ def get_query_exclusive_primary_keys(
102114 )
103115
104116 return (
105- self .with_statement_query .select (
117+ self .with_statement_query_sampled .select (
106118 column (self .primary_key , table = "table1" ), * table1_columns_renamed
107119 )
108120 .from_ ("table1" )
@@ -119,7 +131,7 @@ def get_query_exclusive_primary_keys(
119131 )
120132
121133 return (
122- self .with_statement_query .select (
134+ self .with_statement_query_sampled .select (
123135 column (self .primary_key , table = "table2" ), * table1_columns_renamed
124136 )
125137 .from_ ("table2" )
0 commit comments