@@ -459,20 +459,27 @@ def view(self, view_def: CubeViewDef) -> pandas.DataFrame:
459459 c for c in self .keys if c not in key_index and c not in set (key_agg )
460460 }
461461 key_index0 = key_index
462- key_columns0 = sorted (set_key_columns )
463462 if view_def .ignore_unique :
464- key_index = [k for k in key_index if len (self .values_for_key [k ]) > 1 ]
465- key_columns = [k for k in set_key_columns if len (self .values_for_key [k ]) > 1 ]
463+ unique = {
464+ k for k , v in self .values_for_key .items () if k in self .keys and len (v ) <= 1
465+ }
466+ key_index = [k for k in key_index if k not in unique ]
467+ key_columns = [k for k in set_key_columns if k not in unique ]
466468 else :
467469 key_columns = sorted (set_key_columns )
470+ unique = set ()
468471
469472 _md = lambda s : {k : v for k , v in self .values_for_key .items () if k in s } # noqa: E731
470- assert (
471- key_index
472- ), f"key_index should not be empty, got { key_index0 !r} , unique={ _md (key_index0 )} "
473- assert (
474- key_columns
475- ), f"key_columns should not be empty, got { key_columns0 !r} , unique={ _md (key_columns0 )} "
473+ assert key_index , (
474+ f"key_index should not be empty, got initially { key_index0 !r} , "
475+ f"unique={ _md (key_index0 )} "
476+ )
477+ assert set (key_columns ) | set (key_index ) | set (key_agg ) | unique == set (self .keys ), (
478+ f"key_columns + key_index + key_agg + unique != keys, left="
479+ f"{ set (self .keys ) - (set (key_columns ) | set (key_index ) | set (key_agg ) | unique )} , "
480+ f"unique={ unique } , index={ set (key_index )} , columns={ set (key_columns )} , "
481+ f"agg={ set (key_agg )} , keys={ set (self .keys )} , values={ values } "
482+ )
476483
477484 if view_def .order :
478485 assert set (view_def .order ) <= set_key_columns , (
0 commit comments