Not all data sets are continuous. Data can be inserted for times but when queried the data is checked for gaps and if at requested level of aggregation there is a gap then an additional 'null’ values are inserted to signal the gap.
The following example illustrates populating some sparse data into the first few seconds of 1970. We’ll populate values for 10,11,12,14,15,20 and 30 seconds and then query from 0 to 40 seconds.
$ curl -n http://api.ivyroot.com/api.1/measures -d "name=DataBySecond&frequency=second"
{"id":26,"user":"api"}
$ curl -n http://api.ivyroot.local:8000/api.0/measures/26/10 -d "value=110"
$ curl -n http://api.ivyroot.local:8000/api.0/measures/26/11 -d "value=111"
$ curl -n http://api.ivyroot.local:8000/api.0/measures/26/12 -d "value=112"
$ curl -n http://api.ivyroot.local:8000/api.0/measures/26/14 -d "value=114"
$ curl -n http://api.ivyroot.local:8000/api.0/measures/26/15 -d "value=115"
$ curl -n http://api.ivyroot.local:8000/api.0/measures/26/20 -d "value=1110"
$ curl -n http://api.ivyroot.local:8000/api.0/measures/26/30 -d "value=1120"
$ curl -n http://api.ivyroot.local:8000/api.2/measures/26/s/0/40
{"status":2,"name":"DataBySecond","uri":"/measures/40","frequency":"second","values":[[0,"110"],[1,"111"],[2,"112"],[3,null],[4,"114"],[5,"115"],[6,null],[10,"1110"],[11,null],[20,"1120"]],"user":"api","scope":"40/s/0/30","starred":0,"ever":{"count":7,"earliest":"110","last":20,"min":"110","max":"1120","sum":"2792","updated_at":1266249109,"latest":"1120","avg":"398.857142857","first":0},"id":40,"unit":""}