@@ -198,25 +198,25 @@ def get_transform(self, name):
198
198
f"{ suggestion } "
199
199
)
200
200
201
- def as_mql_expr (self , compiler , connection ):
201
+ def _get_target_path (self ):
202
202
previous = self
203
203
columns = []
204
204
while isinstance (previous , EmbeddedModelTransform ):
205
205
columns .insert (0 , previous .field .column )
206
206
previous = previous .lhs
207
- mql = previous .as_mql (compiler , connection )
208
- for column in columns :
209
- mql = {"$getField" : {"input" : mql , "field" : column }}
207
+ return columns , previous
208
+
209
+ def as_mql_expr (self , compiler , connection ):
210
+ columns , parent_field = self ._get_target_path ()
211
+ mql = parent_field .as_mql (compiler , connection )
212
+ for key in columns :
213
+ mql = {"$getField" : {"input" : mql , "field" : key }}
210
214
return mql
211
215
212
216
def as_mql_path (self , compiler , connection ):
213
- previous = self
214
- key_transforms = []
215
- while isinstance (previous , EmbeddedModelTransform ):
216
- key_transforms .insert (0 , previous .key_name )
217
- previous = previous .lhs
218
- mql = previous .as_mql (compiler , connection , as_path = True )
219
- mql_path = "." .join (key_transforms )
217
+ columns , parent_field = self ._get_target_path ()
218
+ mql = parent_field .as_mql (compiler , connection , as_path = True )
219
+ mql_path = "." .join (columns )
220
220
return f"{ mql } .{ mql_path } "
221
221
222
222
@property
0 commit comments