@@ -6186,9 +6186,9 @@ def key_fn(node: Json) -> Union[str, Tuple[str, str]]:
61866186class TimeSeriesCommand (CLICommand ):
61876187 """
61886188 ```
6189- timeseries snapshot --name <time series> <aggregate search>
6189+ timeseries snapshot --name <time series> [--avg-factor <factor>] <aggregate search>
61906190 timeseries get --name <time series> --start <time> --end <time> --granularity <duration|integer>
6191- --group <group> --filter <var><op><value>
6191+ --group <group> --filter <var><op><value> --avg-factor <factor>
61926192 timeseries list
61936193 timeseries downsample
61946194 ```
@@ -6219,7 +6219,8 @@ class TimeSeriesCommand(CLICommand):
62196219 - `--group` - The variable(s) to select in the group. Can be repeated multiple times.
62206220 - `--filter` - The variable(s) to filter. Can be repeated multiple times.
62216221 - `--granularity` - The granularity of the time series. Can be a duration or an integer.
6222-
6222+ - `--avg-factor` - Factor used to divide values to compute the average.
6223+ This is required for very big numbers to avoid overflow.
62236224
62246225 ## Examples
62256226
@@ -6250,6 +6251,7 @@ def args_info(self) -> ArgsInfo:
62506251 "list" : [],
62516252 "snapshot" : [
62526253 ArgInfo ("--name" , help_text = "<time series>." ),
6254+ ArgInfo ("--avg-factor" , help_text = "<avg factor>." ),
62536255 ArgInfo (expects_value = True , value_hint = "search" ),
62546256 ],
62556257 "get" : [
@@ -6260,6 +6262,7 @@ def args_info(self) -> ArgsInfo:
62606262 ArgInfo ("--filter" , expects_value = True , can_occur_multiple_times = True , help_text = "<var><op><value>" ),
62616263 ArgInfo ("--granularity" , expects_value = True , help_text = "<duration|integer>" ),
62626264 ArgInfo ("--aggregation" , expects_value = True , possible_values = ["avg" , "sum" , "min" , "max" ]),
6265+ ArgInfo ("--avg-factor" , help_text = "<avg factor>." ),
62636266 ],
62646267 "downsample" : [],
62656268 }
@@ -6268,13 +6271,16 @@ def parse(self, arg: Optional[str] = None, ctx: CLIContext = EmptyContext, **kwa
62686271 async def snapshot_time_series (part : str ) -> AsyncIterator [str ]:
62696272 parser = NoExitArgumentParser ()
62706273 parser .add_argument ("--name" , type = str , required = True )
6274+ parser .add_argument ("--avg-factor" , type = int )
62716275 parsed , rest = parser .parse_known_args (args_parts_parser .parse (part ))
62726276 graph_name = ctx .graph_name
62736277 graph_db = self .dependencies .db_access .get_graph_db (graph_name )
62746278 model = await self .dependencies .model_handler .load_model (graph_name )
62756279 query = await self .dependencies .template_expander .parse_query (" " .join (rest ), ctx .section , env = ctx .env )
62766280 query_model = QueryModel (query , model , ctx .env )
6277- res = await self .dependencies .db_access .time_series_db .add_entries (parsed .name , query_model , graph_db )
6281+ res = await self .dependencies .db_access .time_series_db .add_entries (
6282+ parsed .name , query_model , graph_db , avg_factor = parsed .avg_factor
6283+ )
62786284 yield f"{ res } entries added to time series { parsed .name } ."
62796285
62806286 async def load_time_series (part : str ) -> Tuple [CLISourceContext , AsyncIterator [Json ]]:
@@ -6292,6 +6298,7 @@ def parse_duration_or_int(s: str) -> Union[int, timedelta]:
62926298 parser .add_argument ("--filter" , type = predicate_term .parse , nargs = "*" , default = None )
62936299 parser .add_argument ("--granularity" , type = parse_duration_or_int , default = 5 )
62946300 parser .add_argument ("--aggregation" , choices = ["avg" , "sum" , "min" , "max" ], default = "avg" )
6301+ parser .add_argument ("--avg-factor" , type = int )
62956302 p = parser .parse_args (args_parts_unquoted_parser .parse (part ))
62966303 timeout = if_set (ctx .env .get ("search_timeout" ), duration )
62976304 cursor = await self .dependencies .db_access .time_series_db .load_time_series (
@@ -6303,6 +6310,7 @@ def parse_duration_or_int(s: str) -> Union[int, timedelta]:
63036310 granularity = p .granularity ,
63046311 timeout = timeout ,
63056312 aggregation = p .aggregation ,
6313+ avg_factor = p .avg_factor ,
63066314 )
63076315 return CLISourceContext (cursor .count (), cursor .full_count (), cursor .stats ()), cursor
63086316
0 commit comments