def run(query, frum=Null): """ THIS FUNCTION IS SIMPLY SWITCHING BASED ON THE query["from"] CONTAINER, BUT IT IS ALSO PROCESSING A list CONTAINER; SEPARATE TO A ListContainer """ if frum == None: query_op = QueryOp.wrap(query) frum = query_op.frum else: query_op = QueryOp.wrap(query, frum.schema) if isinstance(frum, Container): return frum.query(query_op) elif isinstance(frum, (list, set, GeneratorType)): frum = wrap(list(frum)) elif isinstance(frum, Cube): if is_aggs(query_op): return cube_aggs(frum, query_op) elif isinstance(frum, QueryOp): frum = run(frum) else: Log.error("Do not know how to handle {{type}}", type=frum.__class__.__name__) if is_aggs(query_op): frum = list_aggs(frum, query_op) else: # SETOP # try: # if query.filter != None or query.esfilter != None: # Log.error("use 'where' clause") # except AttributeError: # pass if query_op.where is not TRUE_FILTER: frum = filter(frum, query_op.where) if query_op.sort: frum = sort(frum, query_op.sort, already_normalized=True) if query_op.select: frum = select(frum, query_op.select) if query_op.window: if isinstance(frum, Cube): frum = list(frum.values()) for param in query_op.window: window(frum, param) # AT THIS POINT frum IS IN LIST FORMAT, NOW PACKAGE RESULT if query_op.format == "cube": frum = convert.list2cube(frum) elif query_op.format == "table": frum = convert.list2table(frum) frum.meta.format = "table" else: frum = wrap({"meta": {"format": "list"}, "data": frum}) return frum
def run(query, container=Null): """ THIS FUNCTION IS SIMPLY SWITCHING BASED ON THE query["from"] CONTAINER, BUT IT IS ALSO PROCESSING A list CONTAINER; SEPARATE TO A ListContainer """ if container == None: container = wrap(query)['from'] query_op = QueryOp.wrap(query, container=container, namespace=container.schema) else: query_op = QueryOp.wrap(query, container, container.namespace) if container == None: from jx_python.containers.list_usingPythonList import DUAL return DUAL.query(query_op) elif isinstance(container, Container): return container.query(query_op) elif isinstance(container, (list, set) + generator_types): container = wrap(list(container)) elif isinstance(container, Cube): if is_aggs(query_op): return cube_aggs(container, query_op) elif isinstance(container, QueryOp): container = run(container) else: Log.error("Do not know how to handle {{type}}", type=container.__class__.__name__) if is_aggs(query_op): container = list_aggs(container, query_op) else: # SETOP if query_op.where is not TRUE: container = filter(container, query_op.where) if query_op.sort: container = sort(container, query_op.sort, already_normalized=True) if query_op.select: container = select(container, query_op.select) if query_op.window: if isinstance(container, Cube): container = list(container.values()) for param in query_op.window: window(container, param) # AT THIS POINT frum IS IN LIST FORMAT, NOW PACKAGE RESULT if query_op.format == "cube": container = convert.list2cube(container) elif query_op.format == "table": container = convert.list2table(container) container.meta.format = "table" else: container = wrap({"meta": {"format": "list"}, "data": container}) return container
def run(query, frum=None): """ THIS FUNCTION IS SIMPLY SWITCHING BASED ON THE query["from"] CONTAINER, BUT IT IS ALSO PROCESSING A list CONTAINER; SEPARATE TO A ListContainer """ query = QueryOp.wrap(query, frum.schema) frum = coalesce(frum, query["from"]) if isinstance(frum, Container): return frum.query(query) elif isinstance(frum, (list, set, GeneratorType)): frum = wrap(list(frum)) elif isinstance(frum, Cube): if is_aggs(query): return cube_aggs(frum, query) elif isinstance(frum, QueryOp): frum = run(frum) else: Log.error("Do not know how to handle {{type}}", type=frum.__class__.__name__) if is_aggs(query): frum = list_aggs(frum, query) else: # SETOP # try: # if query.filter != None or query.esfilter != None: # Log.error("use 'where' clause") # except AttributeError: # pass if query.where is not TRUE_FILTER: frum = filter(frum, query.where) if query.sort: frum = sort(frum, query.sort, already_normalized=True) if query.select: frum = select(frum, query.select) if query.window: if isinstance(frum, Cube): frum = list(frum.values()) for param in query.window: window(frum, param) # AT THIS POINT frum IS IN LIST FORMAT, NOW PACKAGE RESULT if query.format == "cube": frum = convert.list2cube(frum) elif query.format == "table": frum = convert.list2table(frum) frum.meta.format = "table" else: frum = wrap({ "meta": {"format": "list"}, "data": frum }) return frum
def run(query, container=Null): """ THIS FUNCTION IS SIMPLY SWITCHING BASED ON THE query["from"] CONTAINER, BUT IT IS ALSO PROCESSING A list CONTAINER; SEPARATE TO A ListContainer """ if container == None: container = wrap(query)['from'] query_op = QueryOp.wrap(query, container=container, namespace=container.schema) else: query_op = QueryOp.wrap(query, container, container.namespace) if container == None: from jx_python.containers.list_usingPythonList import DUAL return DUAL.query(query_op) elif isinstance(container, Container): return container.query(query_op) elif isinstance(container, (list, set) + generator_types): container = wrap(list(container)) elif isinstance(container, Cube): if is_aggs(query_op): return cube_aggs(container, query_op) elif isinstance(container, QueryOp): container = run(container) else: Log.error("Do not know how to handle {{type}}", type=container.__class__.__name__) if is_aggs(query_op): container = list_aggs(container, query_op) else: # SETOP if query_op.where is not TRUE: container = filter(container, query_op.where) if query_op.sort: container = sort(container, query_op.sort, already_normalized=True) if query_op.select: container = select(container, query_op.select) if query_op.window: if isinstance(container, Cube): container = list(container.values()) for param in query_op.window: window(container, param) # AT THIS POINT frum IS IN LIST FORMAT, NOW PACKAGE RESULT if query_op.format == "cube": container = convert.list2cube(container) elif query_op.format == "table": container = convert.list2table(container) container.meta.format = "table" else: container = wrap({ "meta": {"format": "list"}, "data": container }) return container
def format(self, format): if format == "table": frum = convert.list2table(self.data, self.schema.keys()) elif format == "cube": frum = convert.list2cube(self.data, self.schema.keys()) else: frum = self.to_dict() return frum
def format(self, format): if format == "table": frum = convert.list2table(self.data, self._schema.lookup.keys()) elif format == "cube": frum = convert.list2cube(self.data, self.schema.lookup.keys()) else: frum = self.__data__() return frum
if query.sort: frum = sort(frum, query.sort) if query.select: frum = select(frum, query.select) if query.window: if isinstance(frum, Cube): frum = list(frum.values()) for param in query.window: window(frum, param) # AT THIS POINT frum IS IN LIST FORMAT, NOW PACKAGE RESULT if query.format == "table": frum = convert.list2table(frum) frum.meta.format = "table" else: frum = wrap({"meta": {"format": "list"}, "data": frum}) return frum groupby = group_by.groupby def index(data, keys=None): # return dict that uses keys to index data o = Index(keys) if isinstance(data, Cube):