Deedle


DelayedSeries

Namespace: Deedle

This type exposes a single static method DelayedSeries.Create that can be used for constructing data series (of type Series<K, V>) with lazily loaded data. You can use this functionality to create series that represents e.g. an entire price history in a database, but only loads data that are actually needed. For more information see the lazy data loading tutorial.

Example

Assuming we have a function generate lo hi that generates data in the specified DateTime range, we can create lazy series as follows:

1: 
2: 
3: 
4: 
let ls = DelayedSeries.Create(min, max, fun (lo, lob) (hi, hib) -> 
  async { 
    printfn "Query: %A - %A" (lo, lob) (hi, hib)
    return generate lo hi })

The arguments min and max specfify the complete range of the series. The function passed to Create is called with minimal and maximal required key (lo and hi) and with two values that specify boundary behaviour.

val ls : obj

Full name: docs.ls
val min : e1:'T -> e2:'T -> 'T (requires comparison)

Full name: Microsoft.FSharp.Core.Operators.min
val max : e1:'T -> e2:'T -> 'T (requires comparison)

Full name: Microsoft.FSharp.Core.Operators.max
val async : AsyncBuilder

Full name: Microsoft.FSharp.Core.ExtraTopLevelOperators.async
val printfn : format:Printf.TextWriterFormat<'T> -> 'T

Full name: Microsoft.FSharp.Core.ExtraTopLevelOperators.printfn

Static members

Static memberDescription
Create(min, max, loader)
Signature: (min:'?491339 * max:'?491339 * loader:Func<'?491339,BoundaryBehavior,'?491339,BoundaryBehavior,Task<seq<KeyValuePair<'?491339,'?491340>>>>) -> Series<'?491339,'?491340>
Type parameters: '?491339, '?491340
Create(min, max, loader)
Signature: (min:'?491336 * max:'?491336 * loader:('?491336 * BoundaryBehavior -> '?491336 * BoundaryBehavior -> Async<seq<KeyValuePair<'?491336,'?491337>>>)) -> Series<'?491336,'?491337>
Type parameters: '?491336, '?491337
FromIndexVectorLoader(...)
Signature: (scheme:IAddressingScheme * vectorBuilder:IVectorBuilder * indexBuilder:IIndexBuilder * min:'K * max:'K * loader:('K * BoundaryBehavior -> 'K * BoundaryBehavior -> Async<IIndex<'K> * IVector<'V>>)) -> Series<'K,'V>
Type parameters: 'K, 'V
FromIndexVectorLoader(...)
Signature: (scheme:IAddressingScheme * vectorBuilder:IVectorBuilder * indexBuilder:IIndexBuilder * min:'K * max:'K * loader:Func<'K,BoundaryBehavior,'K,BoundaryBehavior,Task<IIndex<'K> * IVector<'V>>>) -> Series<'K,'V>
Type parameters: 'K, 'V
FromValueLoader(min, max, loader)
Signature: (min:'K * max:'K * loader:('K * BoundaryBehavior -> 'K * BoundaryBehavior -> Async<seq<KeyValuePair<'K,'V>>>)) -> Series<'K,'V>
Type parameters: 'K, 'V

An F#-friendly function that creates lazily loaded series. The method requires the overall range of the series (smallest and greatest key) and a function that loads the data. The function is called with two tuples that specify lower and upper boundary. It returns an asynchronous workflow that produces the data.

Parameters

  • min - The smallest key that should be present in the created series.
  • min - The greatests key that should be present in the created series.
  • loader - A function which returns an asynchronous workflow that loads the data in a specified range. The function is called with two tuples consisting of key and BoundaryBehavior values. The keys specify lower and upper boundary and BoundaryBehavior values can be either Inclusive or Exclusive.

Remarks

For more information see the lazy data loading tutorial.

FromValueLoader(min, max, loader)
Signature: (min:'K * max:'K * loader:Func<'K,BoundaryBehavior,'K,BoundaryBehavior,Task<seq<KeyValuePair<'K,'V>>>>) -> Series<'K,'V>
Type parameters: 'K, 'V

A C#-friendly function that creates lazily loaded series. The method requires the overall range of the series (smallest and greatest key) and a function that loads the data. In this overload, the function is a Func delegate taking information about the requested range and returning Task<T> that produces the data.

Parameters

  • min - The smallest key that should be present in the created series.
  • min - The greatests key that should be present in the created series.
  • loader - A delegate which returns a task that loads the data in a specified range. The delegate is called with four arguments specifying the minimal and maximal key and two BoundaryBehavior values specifying whether the low and high ranges are inclusive or exclusive.

Remarks

For more information see the lazy data loading tutorial. The operation calls loader (and so creates the tasks) on the thread that is requesting the result.

Fork me on GitHub