Problem polega na tym, że atrybuty keys i values są metodami niezmiennej kolekcji kolumn sq_objects.c . Innym rozwiązaniem problemu jest użycie notacji dostępu do pozycji w celu uzyskania rzeczywistych kolumn:
func.jsonb_object_agg(
sq_objects.c["keys"],
sq_objects.c["values"]
).over(
partition_by=sq_objects.c.object_id
).label("attributes")