AFSearch.HistogramAsync(TBin) Method
- Last UpdatedJan 12, 2026
- 3 minute read
- PI System
- AF SDK 3.2.0
- Developer
Generates a histogram using the specified weighting for items matching this search asynchronously.
Namespace: OSIsoft.AF.Search
Assembly: OSIsoft.AFSDK (in OSIsoft.AFSDK.dll) Version: 3.2.0.7
Syntax
public Task<AFBinnedResult<TBin>> HistogramAsync<TBin>( string field, IEnumerable<TBin> bins, UOM binUOM, CancellationToken cancellationToken ) where TBin : Object, IComparable<TBin>
Public Function HistogramAsync(Of TBin As {Object, IComparable(Of TBin)}) ( field As String, bins As IEnumerable(Of TBin), binUOM As UOM, cancellationToken As CancellationToken ) As Task(Of AFBinnedResult(Of TBin)) Dim instance As AFSearch Dim field As String Dim bins As IEnumerable(Of TBin) Dim binUOM As UOM Dim cancellationToken As CancellationToken Dim returnValue As Task(Of AFBinnedResult(Of TBin)) returnValue = instance.HistogramAsync(field, bins, binUOM, cancellationToken)
public: generic<typename TBin> where TBin : Object, IComparable<TBin> Task<AFBinnedResult<TBin>^>^ HistogramAsync( String^ field, IEnumerable<TBin>^ bins, UOM^ binUOM, CancellationToken cancellationToken )
member HistogramAsync : field : string * bins : IEnumerable<'TBin> * binUOM : UOM * cancellationToken : CancellationToken -> Task<AFBinnedResult<'TBin>> when 'TBin : Object and IComparable<'TBin>
Parameters
- field
- Type: SystemString
The field whose value should be binned. - bins
- Type: System.Collections.GenericIEnumerableTBin
The bins the field should be sorted into. - binUOM
- Type: OSIsoft.AF.UnitsOfMeasureUOM
The unit of measure associated with bin values. - cancellationToken
- Type: System.ThreadingCancellationToken
A token to control cancellation of the aggregation request.
Type Parameters
- TBin
- The type of the histogram bins.
Return Value
Type: TaskAFBinnedResultTBinA result containing the requested histogram or an error if the summaries could not be performed.
Remarks
| This call might use a background task to complete some of its work. See the Threading Overview for some matters to consider when execution transitions to another thread. |
Examples
// Get the Database PISystems myPISystems = new PISystems(); PISystem myPISystem = myPISystems.DefaultPISystem; if (myPISystem == null) throw new InvalidOperationException("Default PISystem was not found."); AFDatabase myDB = myPISystem.Databases[dbName]; if (myDB == null) throw new InvalidOperationException("Database was not found."); // Create a search to find all the event frames created from the 'Event' // template in the last year. using (AFEventFrameSearch eventSearch = new AFEventFrameSearch(myDB, "EventFrameSearch", @"Template:'Event' Start:>'t-1y'")) { eventSearch.CacheTimeout = TimeSpan.FromMinutes(10); // Generate a histogram by start month AFBinnedResult<AFTime> histogram = await eventSearch.HistogramAsync("StartTime", new AFTimeSpan(months: 1).GetIntervalTimes(new AFTimeRange("1-1y", "1+1mo")), binUOM: null, cancellationToken: CancellationToken.None); foreach (var bin in histogram.BinnedResults) { Console.WriteLine("Month: {0}, Count: {1}", bin.Key, bin.Value[AFSummaryTypes.Count]); } }