def get_queue_metrics( call: APICall, company_id, req_model: GetMetricsRequest ) -> GetMetricsResponse: ret = queue_bll.metrics.get_queue_metrics( company_id=company_id, from_date=req_model.from_date, to_date=req_model.to_date, interval=req_model.interval, queue_ids=req_model.queue_ids, ) queue_dicts = { queue: extract_properties_to_lists( ["date", "avg_waiting_time", "queue_length"], data ) for queue, data in ret.items() } return GetMetricsResponse( queues=[ QueueMetrics( queue=queue, dates=data["date"], avg_waiting_times=data["avg_waiting_time"], queue_lengths=data["queue_length"], ) if data else QueueMetrics(queue=queue) for queue, data in queue_dicts.items() ] )
def get_iterations_data(self, iter_buckets: dict) -> dict: """ Convert a list of bucket entries to `x`s array and `y`s array """ return extract_properties_to_lists( ("x", "y"), iter_buckets[self.name]["buckets"], self._get_iterations_data_single, )
def get_activity_series(active_only: bool = False) -> ActivityReportSeries: ret = worker_bll.stats.get_activity_report( company_id=company_id, from_date=req_model.from_date, to_date=req_model.to_date, interval=req_model.interval, active_only=active_only, ) if not ret: return ActivityReportSeries(dates=[], counts=[]) count_by_date = extract_properties_to_lists(["date", "count"], ret) return ActivityReportSeries(dates=count_by_date["date"], counts=count_by_date["count"])
def _get_variant_metric_stats( metric: str, agg_names: Sequence[str], stats: Sequence[dict], variant: Optional[str] = None, ) -> MetricStats: stat_by_name = extract_properties_to_lists(agg_names, stats) return MetricStats( metric=metric, variant=variant, dates=stat_by_name["date"], stats=[ AggregationStats(aggregation=name, values=aggs) for name, aggs in stat_by_name.items() if name != "date" ], )
task_id=task_id, batch_size=min(batch_size, 10_000), navigate_earlier=False, from_key_value=from_key_value, metric_variants=metric_variants, key=key, ) if not res.events: break events.extend(res.events) from_key_value = str(events[-1][scalar_key.field]) key = str(key) variants = { variant: extract_properties_to_lists(["value", scalar_key.field], events, target_keys=["y", key]) for variant, events in bucketize(events, key=itemgetter( "variant")).items() } call.kpis["events"] = len(events) scroll = ScalarMetricsIterRawScroll( from_key_value=str(events[-1][scalar_key.field]) if events else None, total=total, request=request, ) return make_response( returned=len(events),