import yaql import json data_source = json.load(open('input.json', 'r')) engine = yaql.factory.YaqlFactory().create() expression = engine('$.cars.groupBy($.transmission_type).toDict($[0],list($[1].name))') data = expression.evaluate(data=data_source) print dataJSON data (input.json):
{ "cars": [{ "name": "Toyota", "cc": 1600, "transmission_type": "manual" }, { "name": "Volkswagen", "cc": 1800, "transmission_type": "automatic" }, { "name": "Audi", "cc": 2600, "transmission_type": "automatic" } ] }Output:
{u'automatic': [u'Volkswagen', u'Audi'], u'manual': [u'Toyota']}
import yaql import yaml data_source = yaml.load(open('input.yaml', 'r')) engine = yaql.factory.YaqlFactory().create() expression = engine('$.cars.where($.transmission_type = "automatic").orderByDescending($.cc)') data = expression.evaluate(data=data_source) print dataYAML data (input.yaml):
cars: - name: Toyota cc: 1600 transmission_type: manual - name: Volkswagen cc: 1800 transmission_type: automatic - name: Audi cc: 2600 transmission_type: automaticOutput:
[{u'cc': 2600, u'transmission_type': u'automatic', u'name': u'Audi'}, {u'cc': 1800, u'transmission_type': u'automatic', u'name': u'Volkswagen'}]
$ python yaml-yaql.py Traceback (most recent call last): File "yaml-yaql.py", line 9, inorder = expression.evaluate(data=data_source) File "/usr/lib/python2.7/site-packages/yaql/language/expressions.py", line 165, in evaluate return self(utils.NO_VALUE, context, self.engine) File "/usr/lib/python2.7/site-packages/yaql/language/expressions.py", line 156, in __call__ return super(Statement, self).__call__(receiver, context, engine) File "/usr/lib/python2.7/site-packages/yaql/language/expressions.py", line 37, in __call__ return context(self.name, engine, receiver, context)(*self.args) File "/usr/lib/python2.7/site-packages/yaql/language/contexts.py", line 65, in data_context, use_convention, function_filter) File "/usr/lib/python2.7/site-packages/yaql/language/runner.py", line 49, in call name, all_overloads, engine, receiver, data_context, args, kwargs) File "/usr/lib/python2.7/site-packages/yaql/language/runner.py", line 117, in choose_overload args = tuple(arg_evaluator(i, arg) for i, arg in enumerate(args)) File "/usr/lib/python2.7/site-packages/yaql/language/runner.py", line 117, in args = tuple(arg_evaluator(i, arg) for i, arg in enumerate(args)) File "/usr/lib/python2.7/site-packages/yaql/language/runner.py", line 113, in and not isinstance(arg, expressions.Constant)) File "/usr/lib/python2.7/site-packages/yaql/language/expressions.py", line 37, in __call__ return context(self.name, engine, receiver, context)(*self.args) File "/usr/lib/python2.7/site-packages/yaql/language/contexts.py", line 65, in data_context, use_convention, function_filter) File "/usr/lib/python2.7/site-packages/yaql/language/runner.py", line 51, in call result = delegate() File "/usr/lib/python2.7/site-packages/yaql/language/runner.py", line 142, in return lambda: delegate() File "/usr/lib/python2.7/site-packages/yaql/language/specs.py", line 346, in func six.iteritems(keyword_args))) File "/usr/lib/python2.7/site-packages/yaql/standard_library/system.py", line 63, in op_dot return expr(receiver) File "/usr/lib/python2.7/site-packages/yaql/language/yaqltypes.py", line 293, in func engine, args, kwargs) File "/usr/lib/python2.7/site-packages/yaql/language/yaqltypes.py", line 260, in _call result = value(receiver, context, engine) File "/usr/lib/python2.7/site-packages/yaql/language/expressions.py", line 37, in __call__ return context(self.name, engine, receiver, context)(*self.args) File "/usr/lib/python2.7/site-packages/yaql/language/contexts.py", line 65, in data_context, use_convention, function_filter) File "/usr/lib/python2.7/site-packages/yaql/language/runner.py", line 46, in call raise exceptions.NoMethodRegisteredException(name, receiver) yaql.language.exceptions.NoMethodRegisteredException: Unknown method "orderDescendingBy" for receiver
Privacy Policy | Copyright2020 - All Rights Reserved. | Contact us
| Report website issues in Github
| Facebook page
| Google+ page