@@ -18,8 +18,10 @@ def jsonify_error(table1: List[str], table2: List[str], dbt_model: str, error: s
1818def jsonify (
1919 diff : DiffResultWrapper ,
2020 dbt_model : str ,
21+ dataset1_columns : Dict [str , Tuple [str , str , Any , Any , Any ]],
22+ dataset2_columns : Dict [str , Tuple [str , str , Any , Any , Any ]],
23+ columns_diff : Dict [str , List [str ]],
2124 with_summary : bool = False ,
22- with_columns : Optional [Dict [str , List [str ]]] = None ,
2325) -> "JsonDiff" :
2426 """
2527 Converts the diff result into a JSON-serializable format.
@@ -53,16 +55,13 @@ def jsonify(
5355 if with_summary :
5456 summary = _jsonify_diff_summary (diff .get_stats_dict (is_dbt = True ))
5557
56- columns = None
57- if with_columns :
58- columns = _jsonify_columns_diff (with_columns , list (key_columns ))
58+ columns = _jsonify_columns_diff (dataset1_columns , dataset2_columns , columns_diff , list (key_columns ))
5959
6060 is_different = bool (
6161 t1_exclusive_rows
6262 or t2_exclusive_rows
6363 or diff_rows
64- or with_columns
65- and (with_columns ["added" ] or with_columns ["removed" ] or with_columns ["changed" ])
64+ or (columns_diff ["added" ] or columns_diff ["removed" ] or columns_diff ["changed" ])
6665 )
6766 return JsonDiff (
6867 status = "success" ,
@@ -137,9 +136,15 @@ class ExclusiveColumns:
137136 dataset1 : List [str ]
138137 dataset2 : List [str ]
139138
139+ @dataclass
140+ class Column :
141+ name : str
142+ type : str
140143
141144@dataclass
142145class JsonColumnsSummary :
146+ dataset1 : List [Column ]
147+ dataset2 : List [Column ]
143148 primaryKey : List [str ]
144149 exclusive : ExclusiveColumns
145150 typeChanged : List [str ]
@@ -179,7 +184,7 @@ class JsonDiff:
179184 summary : Optional [JsonDiffSummary ]
180185 columns : Optional [JsonColumnsSummary ]
181186
182- version : str = "1.0 .0"
187+ version : str = "1.1 .0"
183188
184189
185190def _group_rows (
@@ -262,8 +267,20 @@ def _jsonify_diff_summary(stats_dict: dict) -> JsonDiffSummary:
262267 )
263268
264269
265- def _jsonify_columns_diff (columns_diff : Dict [str , List [str ]], key_columns : List [str ]) -> JsonColumnsSummary :
270+ def _jsonify_columns_diff (dataset1_columns : Dict [str , Tuple [str , str , Any , Any , Any ]],
271+ dataset2_columns : Dict [str , Tuple [str , str , Any , Any , Any ]],
272+ columns_diff : Dict [str , List [str ]], key_columns : List [str ]) -> JsonColumnsSummary :
266273 return JsonColumnsSummary (
274+ dataset1 = [
275+ Column (name = name , type = type_ )
276+ for (name , type_ , * _ )
277+ in dataset1_columns .values ()
278+ ],
279+ dataset2 = [
280+ Column (name = name , type = type_ )
281+ for (name , type_ , * _ )
282+ in dataset2_columns .values ()
283+ ],
267284 primaryKey = key_columns ,
268285 exclusive = ExclusiveColumns (
269286 dataset2 = list (columns_diff .get ("added" , [])),
0 commit comments