Axibase 时序数据库——过滤掉时序图上的负值

Axibase Time Series Database - filter out negative values on time chart

我正在使用 Axibase Time Series Database 社区版 10552 版来存储我的光伏和太阳高度角数据。太阳高度角值在夜间为负值,我不想在我的图表上看到它们。

如何才能只查看正值?有人知道可以实现此目的的设置或技巧吗?

这是我当前的 Time Chart widget 配置:

[widget]
  type = chart
  title = PV power
  timespan = 3 day
  entity = pvout.25630

[series]
  label = Sun Altitude at (-35.3089, 149.2004)
  metric = sun_altitude
  color = orange
   [tags]
    lat = -35.3089 
    lon = 149.2004

这是我目前实际看到的屏幕截图:

这是图表实验室中的示例:

https://axibase.com/chartlab/3170e35d/2/

问得好。

有几种方法可以隐藏或过滤掉负值:

  1. replace-value设置使用表达式修改或过滤系列值:

    [widget]
      type = chart
      title = PV power
      timespan = 3 day
      entity = pvout.25630
    
    [series]
      label = Sun Altitude at (-35.3089, 149.2004)
      metric = sun_altitude
      color = orange
    
      replace-value = value < 0 ? null : value
    
      [tags]
       lat=-35.3089 
       lon=149.2004
    

此表达式将从系列中过滤掉所有小于 0 的值。

结果:https://axibase.com/chartlab/3170e35d/3/

  1. min-range-force设置可以用来设置y-axis:

    的最小范围
    [widget]
      type = chart
      title = PV power
      timespan = 3 day
      entity = pvout.25630
    
      min-range-force = 0
    
    [series]
      label = Sun Altitude at (-35.3089, 149.2004)
      metric = sun_altitude
      color = orange
    
      [tags]
       lat=-35.3089 
       lon=149.2004
    

结果:https://axibase.com/chartlab/3170e35d/4/

  1. 如果您使用脚本计算太阳高度角,那么您可以使用Math.max函数:

    [widget]
      type = chart
      title = PV power
      timespan = 3 day
    
    [series]
      label = Altitude
      #API: SunCalc.getPosition = function (date, lat, lng)
      value = var pos = SunCalc.getPosition(new Date(time), -35.3089, 149.2004);
      value = return Math.max(0, pos.altitude)
      frequency = 30 minute
      color = orange
    

结果:https://axibase.com/chartlab/3170e35d/5/

  1. value equation 可用于创建计算序列,不包括负值:

    [widget]
      type = chart
      title = PV power
      timespan = 3 day
      entity = pvout.25630
    
    [series]
      metric = sun_altitude
      display = false
      alias = sun_alt
    
     [tags]
      lat=-35.3089 
      lon=149.2004
    
    [series]
      label = Sun Altitude at (-35.3089, 149.2004)
      value = Math.max(0, value('sun_alt'))
      color = orange
    

在这种情况下,我们隐藏原始序列并分配一个别名,然后我们使用 value = Math.max(0, value('sun_alt')) 方程创建一个没有负值的新计算序列。

结果:https://axibase.com/chartlab/3170e35d/6/