@@ -318,10 +318,10 @@ def _parse_dimension(self, dim_def: dict, cube_name: str) -> Dimension | None:
318318 parts = []
319319 for w in whens :
320320 cond = _normalize_cube_sql (w .get ("sql" ), cube_name )
321- lbl = w .get ("label" , "" )
321+ lbl = w .get ("label" , "" ). replace ( "'" , "''" )
322322 parts .append (f"WHEN { cond } THEN '{ lbl } '" )
323323 if else_clause :
324- else_label = else_clause .get ("label" , "Unknown" )
324+ else_label = else_clause .get ("label" , "Unknown" ). replace ( "'" , "''" )
325325 parts .append (f"ELSE '{ else_label } '" )
326326 dim_sql = "CASE " + " " .join (parts ) + " END"
327327
@@ -719,7 +719,7 @@ def export(self, graph: SemanticGraph, output_path: str | Path) -> None:
719719 for model in resolved_models .values ():
720720 if model .meta and model .meta .get ("cube_type" ) == "view" :
721721 continue
722- cube = self ._export_cube (model , graph )
722+ cube = self ._export_cube (model , resolved_models )
723723 cubes .append (cube )
724724
725725 data = {"cubes" : cubes }
@@ -729,12 +729,12 @@ def export(self, graph: SemanticGraph, output_path: str | Path) -> None:
729729 with open (output_path , "w" ) as f :
730730 yaml .dump (data , f , sort_keys = False , default_flow_style = False )
731731
732- def _export_cube (self , model : Model , graph : SemanticGraph ) -> dict :
732+ def _export_cube (self , model : Model , resolved_models : dict [ str , Model ] ) -> dict :
733733 """Export model to Cube definition.
734734
735735 Args:
736736 model: Model to export
737- graph: Semantic graph ( for join discovery)
737+ resolved_models: Resolved (inheritance-applied) models dict for join target lookup
738738
739739 Returns:
740740 Cube definition dictionary
@@ -928,8 +928,8 @@ def _export_cube(self, model: Model, graph: SemanticGraph) -> dict:
928928 if relationship .type == "many_to_many" :
929929 continue
930930
931- # Find target model
932- target_model = graph . models .get (relationship .name )
931+ # Find target model from resolved models (inheritance-applied)
932+ target_model = resolved_models .get (relationship .name )
933933 if target_model :
934934 if relationship .type in ("many_to_one" , "one_to_one" ):
935935 local_key = relationship .sql_expr or relationship .foreign_key
0 commit comments