|
77 | 77 | qualify row_number() over(
|
78 | 78 | partition by src_db, src_schema, src_table, trg_db, trg_schema, trg_table, column_name, pipe_name
|
79 | 79 | order by last_data_diff_timestamp desc
|
80 |
| - ) = 1 |
| 80 | + ) = 1 --get last schema diff result |
81 | 81 |
|
82 | 82 | ),
|
83 | 83 |
|
84 | 84 | base as (
|
85 | 85 |
|
86 | 86 | select t.*
|
87 |
| - ,listagg(column_name, ',') as col_list |
| 87 | + ,listagg(v.column_name, ',') as col_list |
88 | 88 | ,'cast(md5_binary(concat_ws(''||'','
|
89 |
| - || listagg('ifnull(nullif(upper(trim(cast(' || column_name || ' as varchar))), ''''), ''^^'')', ',' ) |
| 89 | + || listagg('ifnull(nullif(upper(trim(cast(' || v.column_name || ' as varchar))), ''''), ''^^'')', ',' ) |
90 | 90 | || ' )) as binary(16)) as hashdiff' as hash_calc
|
91 |
| - ,listagg('ifnull(nullif(upper(trim(cast(src.'|| column_name ||' as varchar))),''''),''^^'')= ifnull(nullif(upper(trim(cast(trg.'|| column_name ||' as varchar))),''''),''^^'') as '|| column_name || '_is_equal', ',' ) as is_equal |
92 |
| - ,listagg('sum(case when '|| column_name ||'_is_equal then 1 else 0 end) as '|| column_name || '_diff', ',' ) as diff_calc |
93 |
| - ,listagg(column_name ||'_diff / cnt as '|| column_name, ',') as result_calc |
| 91 | + ,listagg('ifnull(nullif(upper(trim(cast(src.'|| v.column_name ||' as varchar))),''''),''^^'')= ifnull(nullif(upper(trim(cast(trg.'|| v.column_name ||' as varchar))),''''),''^^'') as '|| v.column_name || '_is_equal', ',' ) as is_equal |
| 92 | + ,listagg('sum(case when '|| v.column_name ||'_is_equal then 1 else 0 end) as '|| v.column_name || '_diff', ',' ) as diff_calc |
| 93 | + ,listagg(v.column_name ||'_diff / cnt as '|| v.column_name, ',') as result_calc |
94 | 94 |
|
95 |
| - from {{ configured_table_model }}_final t |
96 |
| - join schema_validation v |
| 95 | + from {{ configured_table_model }}_final as t |
| 96 | + join schema_validation as v |
97 | 97 | on t.src_schema = v.src_schema
|
98 | 98 | and t.src_table = v.src_table
|
99 | 99 | where true
|
100 | 100 | --excluded columns i.e always changing column, added or removed column
|
101 |
| - and (not array_contains(upper(column_name)::variant, t.exclude_columns)) |
| 101 | + and (not array_contains(upper(v.column_name)::variant, t.exclude_columns)) |
102 | 102 | and (
|
103 | 103 | case
|
104 |
| - when array_size(include_columns) > 0 |
105 |
| - then array_contains(column_name::variant, t.include_columns) |
| 104 | + when array_size(t.include_columns) > 0 |
| 105 | + then array_contains(v.column_name::variant, t.include_columns) |
106 | 106 | else true
|
107 | 107 | end
|
108 | 108 | )
|
|
0 commit comments