R Interface based on the nanotime package
06 Jul 2020
Leonardo Silvestri

ztsdb types have been renamed to match the types in the nanotime R package. The four temporal types, nanotime, nanoival, nanoduration and nanoperiod now have the same name in R and in ztsdb, making the interface between ztsdb and R even closer.

Additionally, ztsdb's time-series type zts no longer maps to an xts but instead maps to a data.table with a first column of type nanotime. This first column has the name index.

This means that the R interface no longer suffers from not being able to represent the nanosecond precision in R that is native to ztsdb.

Here is an example of the new mapping (supposing we have a connection c1):

  c1 ? ++data.table(index = as.nanotime("1970-01-01 UTC") + 1:9, data=1:9)

  ## with the following output
  # index data
  # 1: 1970-01-01T00:00:00.000000001+00:00    1
  # 2: 1970-01-01T00:00:00.000000002+00:00    2
  # 3: 1970-01-01T00:00:00.000000003+00:00    3
  # 4: 1970-01-01T00:00:00.000000004+00:00    4
  # 5: 1970-01-01T00:00:00.000000005+00:00    5
  # 6: 1970-01-01T00:00:00.000000006+00:00    6

A data.table is created in R (remember that the ++ escape operator means that the data.table expression will be evaluated in R), sent over as part of the query and then the head function (which is not escaped) is applied on the ztsdb end to return the first 6 rows of the zts:

This type of query is of course not particularly useful, but it shows how close the interface between R and ztsdb is.