Class Chunking
Support for splitting sequences into sequences of sequences subject to various constraints, as well as running a sequence of tasks in parallel.
Inherited Members
Namespace: Cognite.Extractor.Common
Assembly: Cognite.Common.dll
Syntax
public static class Chunking
Methods
| Edit this page View SourceChunkByHierarchy<T, K>(IEnumerable<T>, int, Func<T, K>, Func<T, K>, IEqualityComparer<K>?)
Chunk a list of entries with some sort of parent-child hierarchy into an ordered list where each element
contains all the parents of the next. The first list has no parents, or the parents are not in the list of given elements.
If maxSize
is set larger than 1, the lists are merged so that the first list may contain both
the first and second layers, etc. respecting the maximum number of elements in each chunk.
The final lists may be larger than maxSize
, it is only used to merge layers.
This is useful when pushing large numbers of assets to CDF.
Declaration
public static IEnumerable<IEnumerable<T>> ChunkByHierarchy<T, K>(this IEnumerable<T> input, int maxSize, Func<T, K> idSelector, Func<T, K> parentIdSelector, IEqualityComparer<K>? comparer = null) where K : notnull
Parameters
Type | Name | Description |
---|---|---|
IEnumerable<T> | input | Input list |
int | maxSize | Maximum number of elements when merging lists |
Func<T, K> | idSelector | Function to get id from each element |
Func<T, K> | parentIdSelector | Function to get parentId from each element |
IEqualityComparer<K> | comparer | Optional equalitycomparer |
Returns
Type | Description |
---|---|
IEnumerable<IEnumerable<T>> | A list of lists so that if they are consumed in order, all parents will be pushed ahead of children |
Type Parameters
Name | Description |
---|---|
T | Element to be grouped |
K | Type used for ids |
ChunkBy<T>(IEnumerable<T>, int)
Chunk the input sequence into a sequence of sequences subject to a constraint on the maximum number of elements per inner sequence.
Declaration
public static IEnumerable<IEnumerable<T>> ChunkBy<T>(this IEnumerable<T> input, int maxSize)
Parameters
Type | Name | Description |
---|---|---|
IEnumerable<T> | input | List of objects to be chunked |
int | maxSize | Maximum number of entires per list in the output |
Returns
Type | Description |
---|---|
IEnumerable<IEnumerable<T>> | A list of lists where each list is subject to |
Type Parameters
Name | Description |
---|---|
T | Input type |
ChunkBy<TKey, TVal>(IEnumerable<(TKey, IEnumerable<TVal>)>, int, int)
Chunk the input [(key, [values])] sequence into a sequence subject to constraints on the number of keys and total number of values per chunk. Keys should be unique.
Declaration
public static IEnumerable<IEnumerable<(TKey Key, IEnumerable<TVal> Values)>> ChunkBy<TKey, TVal>(this IEnumerable<(TKey, IEnumerable<TVal>)> points, int maxPerList, int maxKeys)
Parameters
Type | Name | Description |
---|---|---|
IEnumerable<(TKey, IEnumerable<TVal>)> | points | List of (key, [values]) that will be chunked |
int | maxPerList | Maximum number of entries per list of values in the output |
int | maxKeys | Maximum number of keys per list of groups in the output |
Returns
Type | Description |
---|---|
IEnumerable<IEnumerable<(TKey Key, IEnumerable<TVal> Values)>> | A chunking of the output subject to |
Type Parameters
Name | Description |
---|---|
TKey | Type of keys to group by, should be unique |
TVal | Value type |
RunThrottled(IEnumerable<Func<Task>>, int, Action<Task>?, CancellationToken)
Runs the generated tasks in parallell subject to the maximum parallelism.
Call the taskCompletedCallback
action for each completed task
Declaration
public static Task RunThrottled(this IEnumerable<Func<Task>> generators, int parallelism, Action<Task>? taskCompletedCallback, CancellationToken token)
Parameters
Type | Name | Description |
---|---|---|
IEnumerable<Func<Task>> | generators | Tasks to perform |
int | parallelism | Number of tasks to run in parallel |
Action<Task> | taskCompletedCallback | Action to call on task completion |
CancellationToken | token | Cancellation token |
Returns
Type | Description |
---|---|
Task |
RunThrottled(IEnumerable<Func<Task>>, int, CancellationToken)
Runs the generated tasks in parallell subject to the maximum parallelism.
Declaration
public static Task RunThrottled(this IEnumerable<Func<Task>> generators, int parallelism, CancellationToken token)
Parameters
Type | Name | Description |
---|---|---|
IEnumerable<Func<Task>> | generators | Tasks to perform |
int | parallelism | Number of tasks to run in parallel |
CancellationToken | token | Cancellation token |
Returns
Type | Description |
---|---|
Task |