<html><body><div><br></div>&gt;&nbsp;<span style="color: rgb(0, 0, 0); font-family: Arial, sans-serif; line-height: 19px;">&nbsp;how build this formula for any cases, between one db source to x dbsources</span><div><font color="#000000" face="Arial, sans-serif"><span style="line-height: 19px;"><br></span></font></div><div><font color="#000000" face="Arial, sans-serif"><span style="line-height: 19px;">..do you mean something like that?</span></font></div><div><font color="#000000" face="Arial, sans-serif"><span style="line-height: 19px;"><br></span></font></div><div><font color="#000000" face="Arial, sans-serif"><span style="line-height: 19px;">$per=(period0, period1,.....,periodmax,periodknown); &nbsp;# all periods as defined in your visualizing system, plus the next (last) known</span></font></div><div><span style="line-height: 19px; color: rgb(0, 0, 0); font-family: Arial, sans-serif;">$gentext=(&lt;text0&gt;, &lt;text1&gt;,...,&lt;textmax&gt;,&lt;unknown&gt;); &nbsp;# texts to be generated for periods as above</span></div><div><span style="line-height: 19px; color: rgb(0, 0, 0); font-family: Arial, sans-serif;"># The &nbsp;is_unknown function below returns 1 for unknown period argument, otherwise 0</span></div><div><span style="line-height: 19px; color: rgb(0, 0, 0); font-family: Arial, sans-serif;">$i=0; while(is_unknown(per[$i]) == 1) $i++;&nbsp;</span></div><div><span style="line-height: 19px; color: rgb(0, 0, 0); font-family: Arial, sans-serif;">print $gentext[$i];</span></div><div><span style="line-height: 19px; color: rgb(0, 0, 0); font-family: Arial, sans-serif;"><br></span></div><div><span style="line-height: 19px; color: rgb(0, 0, 0); font-family: Arial, sans-serif;">BR</span></div><div><span style="line-height: 19px; color: rgb(0, 0, 0); font-family: Arial, sans-serif;">jh</span></div><div><span style="line-height: 19px; color: rgb(0, 0, 0); font-family: Arial, sans-serif;"><br></span></div><div><span style="line-height: 19px; color: rgb(0, 0, 0); font-family: Arial, sans-serif;"><br></span></div><div><p>---------- Původní zpráva ----------<br>Od: unicsonline &lt;unicsonline@gmail.com&gt;<br>Datum: 30. 1. 2013<br>Předmět: Re: [rrd-users] Probleme using several dbs and unknown values</p><br><blockquote><div><br>Hello Simon,<br><br>Thanks a lot for this tips ;)<br><br>It seems better but I have now to find how build this formula for any cases, between one db source to x dbsources (nb of periods -so dbs- is variable, and my graph command is generated by script)<br>
<br>For the second remark in this case I have not this problem, because I am sure that I have not more only one values in one db (all others dbs provide unkown values)<br><br><br><div>2013/1/30 Simon Hobson <span>&lt;<a href="mailto:linux@thehobsons.co.uk">linux@thehobsons.co.uk</a>&gt;</span><br>
<blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">unicsonline wrote:<br>
I am tracing a long time graph, where datas are dispatched along different dbs<br>
<br>
for example for period1, I use db1.rrd, for period2 I use db2.rrd, etc...<br>
<br>
<br>
Of course depending date my infos are present in only one dbs at the same time, and requests sent to an other one returns an unknown value.<br>
<br>
My problem is to deal with this unknown values.<br>
<br>
In a first try, I have used a workaround with a cdef adding all the values, and replacing unknown ones with a 0 :<br>
<br>
<br>
for example, with 3 periods:<br>
<br>
CDEF:TOTAL_period=0,period1,UN,0,period1,IF,+,period2,UN,0,period2,IF,+,period3,UN,0,period3,IF,+<br>
<br>
that works, average and max values are ok, but min and last are positionned to 0 (it's normal, because some unknown values are present, and are replaced by 0 in syntax)<br>
<br>
<br>
In fact the better syntax would be something like :<br>
<br>
if period1 != unkown use period1<br>
else period2 != unkown use period2<br>
else period3 != unkown use period3<br>
else use unknown<br>
<br>
to preserve unknown values.<br>
<br>
There are several ways you can do this. One I used in the past when I was switching between two sets fo DBs was to work on date. Basically, if date &lt; some fixed value then use A, else use B. I don't recall the syntax I used (it was a couple of years ago and I no longer have the code lying around), but it wasn't hard.<br>

<br>
But if all you want is the simple expression you've given - ie you will only ever use one source - then this would look something like :<br>
<br>
A,UN,B,A,IF<br>
Which means, if A is unknown then use B else use A. You can either use multiple CDEFs (easier to see), just expand the one - I'll put brackets in this one to show the grouping, you take them out to get a valid expression.<br>

(A,UN),((B,UN),C,B,IF),A,IF<br>
Which means If A is unknown then use the result of (if B is unknown then use C, else use B), else use A.<br>
So stripping out the brackets, you getA,UN,B,UN,C,B,IF,A,IF which I think should do what you want - unless I've got it wrong of course !<br>
<br>
Bear in mind that if (for example) you consolidate down to daily values, and your data collection switched part way through a day, then you'll have one day when two sources could have a value. Eg if your measured value was a steady 1, and you switched collection at mid day, then A and B would both contain 0.5 for that day. This can be worked around if it's a problem - it just makes the RPN more complicated.<br>

<br>
_______________________________________________<br>
rrd-users mailing list<br>
<a href="mailto:rrd-users@lists.oetiker.ch">rrd-users@lists.oetiker.ch</a><br>
<a href="https://lists.oetiker.ch/cgi-bin/listinfo/rrd-users">https://lists.oetiker.ch/cgi-bin/listinfo/rrd-users</a><br>
</blockquote></div><br><div style=""></div>
</div></blockquote></div></body></html>