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
这是我目前实际看到的屏幕截图:
这是图表实验室中的示例:
问得好。
有几种方法可以隐藏或过滤掉负值:
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/
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/
如果您使用脚本计算太阳高度角,那么您可以使用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/
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/
我正在使用 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
这是我目前实际看到的屏幕截图:
这是图表实验室中的示例:
问得好。
有几种方法可以隐藏或过滤掉负值:
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/
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/
如果您使用脚本计算太阳高度角,那么您可以使用
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/
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/