Patch Time Series Entries
-
Patching time series entries (append or delete entries) can be performed via the Session
using session.Advanced.Defer, as described below.- You can handle a single document at a time.
- The patching action is defined by the provided JavaScript script.
-
Patching time series entries can also be done directly on the Store via Operations,
where multiple documents can be handled at a time. Learn more in Patching time series operations. -
In this page:
Usage
- Open a session
-
Construct a
PatchCommandData
instance and pass it the following:- The document ID that contains the time series
- The document change vector (or
null
) - A
PatchRequest
instance with a JavaScript that appends or removes time series entries
- Call
session.Advanced.Defer
and pass it thePatchCommandData
command.
Note that you can call Defer multiple times prior to calling SaveChanges. - Call
session.SaveChanges()
.
All patch requests added via Defer will be sent to the server for execution when SaveChanges is called.
Patching examples
In this example, we append 100 time series entries with random heart rate values to a document.
var baseline = DateTime.Today;
// Create arrays of timestamps and random values to patch
List<double> values = new List<double>();
List<DateTime> timeStamps = new List<DateTime>();
for (var i = 0; i < 100; i++)
{
values.Add(68 + Math.Round(19 * new Random().NextDouble()));
timeStamps.Add(baseline.AddSeconds(i));
}
session.Advanced.Defer(new PatchCommandData("users/1-A", null,
new PatchRequest
{
Script = @"
var i = 0;
for(i = 0; i < $values.length; i++)
{
timeseries(id(this), $timeseries)
.append (
new Date($timeStamps[i]),
$values[i],
$tag);
}",
Values =
{
{ "timeseries", "HeartRates" },
{ "timeStamps", timeStamps},
{ "values", values },
{ "tag", "watches/fitbit" }
}
}, null));
session.SaveChanges();
In this example, we remove a range of 50 time series entries from a document.
// Delete time-series entries
session.Advanced.Defer(new PatchCommandData("users/1-A", null,
new PatchRequest
{
Script = @"timeseries(this, $timeseries)
.delete(
$from,
$to
);",
Values =
{
{ "timeseries", "HeartRates" },
{ "from", baseline.AddSeconds(0) },
{ "to", baseline.AddSeconds(49) }
}
}, null));
session.SaveChanges();
Syntax
PatchCommandData
public PatchCommandData(string id, string changeVector,
PatchRequest patch, PatchRequest patchIfMissing)
Learn more about PatchCommandData
here.
PatchRequest
private class PatchRequest
{
// Patching script
public string Script { get; set; }
// Values that can be used by the patching script
public Dictionary<string, object> Values { get; set; }
//...
}
Learn more about PatchRequest
here.