AFSearch.HistogramAsync(TBin) Method
- Last UpdatedNov 18, 2025
- 4 minute read
- PI System
- AF SDK 2024 R2
- 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.1.1.1182
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]); } }
' Get the Database Dim myPISystems As New PISystems() Dim myPISystem As PISystem = myPISystems.DefaultPISystem If myPISystem Is Nothing Then Throw New InvalidOperationException("Default PISystem was not found.") End If Dim myDB As AFDatabase = myPISystem.Databases(dbName) If myDB Is Nothing Then Throw New InvalidOperationException("Database was not found.") End If ' Create a search to find all the event frames created from the 'Event' ' template in the last year. Using eventSearch As New AFEventFrameSearch(myDB, "EventFrameSearch", "Template:'Event' Start:>'t-1y'") eventSearch.CacheTimeout = TimeSpan.FromMinutes(10) ' Generate a histogram by start month Dim histogram As AFBinnedResult(Of AFTime) = Await eventSearch.HistogramAsync("StartTime", New AFTimeSpan(months:=1).GetIntervalTimes(New AFTimeRange("1-1y", "1+1mo")), binUOM:=Nothing, cancellationToken:=CancellationToken.None) For Each bin As KeyValuePair(Of AFRange(Of AFTime), IReadOnlyDictionary(Of AFSummaryTypes, AFValue)) In histogram.BinnedResults Console.WriteLine("Month: {0}, Count: {1}", bin.Key, bin.Value(AFSummaryTypes.Count)) Next Return True End Using
No code example is currently available or this language may not be supported.
No code example is currently available or this language may not be supported.