Xaye.Fred.Fred.GetSeriesObservations C# (CSharp) Méthode

GetSeriesObservations() public méthode

Get the observations or data values for an economic data series. Corresponds to http://api.stlouisfed.org/fred/series/observations
public GetSeriesObservations ( string seriesId, System.DateTime observationStart, System.DateTime observationEnd, System.DateTime realtimeStart, System.DateTime realtimeEnd, IEnumerable vintageDates, int limit = 100000, int offset, SortOrder order = SortOrder.Ascending, Transformation transformation = Transformation.None, Frequency frequency = Frequency.None, AggregationMethod method = AggregationMethod.Average, OutputType outputType = OutputType.RealTime ) : IEnumerable
seriesId string The id for a series.
observationStart System.DateTime The start of the observation period.
observationEnd System.DateTime The end of the observation period.
realtimeStart System.DateTime The start of the real-time period.
realtimeEnd System.DateTime The end of the real-time period.
vintageDates IEnumerable A comma separated string of YYYY-MM-DD formatted dates in history (e.g. 2000-01-01,2005-02-24). /// Vintage dates are used to download data as it existed on these specified dates in history. Vintage dates can be /// specified instead of a real-time period using realtime_start and realtime_end. /// /// Sometimes it may be useful to enter a vintage date that is not a date when the data values were revised. /// For instance you may want to know the latest available revisions on 2001-09-11 (World Trade Center and /// Pentagon attacks) or as of a Federal Open Market Committee (FOMC) meeting date. Entering a vintage date is /// also useful to compare series on different releases with different release dates.
limit int The maximum number of results to return. An integer between 1 and 100000, optional, default: 100000
offset int non-negative integer, optional, default: 0
order SortOrder Sort results is ascending or descending observation_date order.
transformation Transformation Type of data value transformation.
frequency Frequency An optional parameter that indicates a lower frequency to aggregate values to. /// The FRED frequency aggregation feature converts higher frequency data series into lower frequency data series /// (e.g. converts a monthly data series into an annual data series). In FRED, the highest frequency data is daily, /// and the lowest frequency data is annual. There are 3 aggregation methods available- average, sum, and end of period.
method AggregationMethod A key that indicates the aggregation method used for frequency aggregation.
outputType OutputType Output type: /// 1. Observations by Real-Time Period /// 2. Observations by Vintage Date, All Observations /// 3. Observations by Vintage Date, New and Revised Observations Only /// 4. Observations, Initial Release Only ///
Résultat IEnumerable
        public IEnumerable<Observation> GetSeriesObservations(string seriesId, DateTime observationStart,
            DateTime observationEnd, DateTime realtimeStart,
            DateTime realtimeEnd,
            IEnumerable<DateTime> vintageDates, int limit = 100000,
            int offset = 0, SortOrder order = SortOrder.Ascending,
            Transformation transformation = Transformation.None,
            Frequency frequency = Frequency.None,
            AggregationMethod method = AggregationMethod.Average,
            OutputType outputType = OutputType.RealTime)
        {
            var vintageString = vintageDates.Aggregate(Empty,
                (current, vintageDate) =>
                    current + (vintageDate.ToFredDateString() + ","));
            if (vintageString.Length > 0)
            {
                vintageString = vintageString.Substring(0, vintageString.Length - 1);
            }

            var realtimeStartStr = (vintageString.Length == 0) ? realtimeStart.ToFredDateString() : Empty;
            var realtimeEndStr = (vintageString.Length == 0) ? realtimeEnd.ToFredDateString() : Empty;
            var url = Format(Urls.SeriesObservations, _key, seriesId, realtimeStartStr,
                realtimeEndStr, limit, offset, Extensions.ToString(order),
                observationStart.ToFredDateString(),
                observationEnd.ToFredDateString(),
                Extensions.ToString(transformation), Extensions.ToString(frequency),
                Extensions.ToString(method), Extensions.ToString(outputType), "xml", vintageString);

            return GetRoot(url).Elements("observation").Select(
                element =>
                {
                    var valElm = element.Attribute("value");
                    double? value = null;
                    if (!IsNullOrWhiteSpace(valElm?.Value))
                    {
                        double dOut;
                        var success = double.TryParse(valElm.Value, out dOut);
                        if (success)
                        {
                            value = dOut;
                        }
                    }

                    return new Observation
                    {
                        RealtimeStart = element.Attribute("realtime_start").Value.ToFredDate(),
                        RealtimeEnd = element.Attribute("realtime_end").Value.ToFredDate(),
                        Date = element.Attribute("date").Value.ToFredDate(),
                        Value = value
                    };
                }
                ).ToList();
        }

Same methods

Fred::GetSeriesObservations ( string seriesId, System.DateTime observationStart, System.DateTime observationEnd, System.DateTime realtimeStart, System.DateTime realtimeEnd, int limit = 100000, int offset, SortOrder order = SortOrder.Ascending, Transformation transformation = Transformation.None, Frequency frequency = Frequency.None, AggregationMethod method = AggregationMethod.Average, OutputType outputType = OutputType.RealTime ) : IEnumerable
Fred::GetSeriesObservations ( string seriesId, System.DateTime observationStart, System.DateTime observationEnd, IEnumerable vintageDates, int limit = 100000, int offset, SortOrder order = SortOrder.Ascending, Transformation transformation = Transformation.None, Frequency frequency = Frequency.None, AggregationMethod method = AggregationMethod.Average, OutputType outputType = OutputType.RealTime ) : IEnumerable
Fred::GetSeriesObservations ( string seriesId, System.DateTime observationStart, System.DateTime observationEnd, int limit = 100000, int offset, SortOrder order = SortOrder.Ascending, Transformation transformation = Transformation.None, Frequency frequency = Frequency.None, AggregationMethod method = AggregationMethod.Average, OutputType outputType = OutputType.RealTime ) : IEnumerable
Fred::GetSeriesObservations ( string seriesId, int limit = 100000, int offset, SortOrder order = SortOrder.Ascending, Transformation transformation = Transformation.None, Frequency frequency = Frequency.None, AggregationMethod method = AggregationMethod.Average, OutputType outputType = OutputType.RealTime ) : IEnumerable

Usage Example

Exemple #1
0
        internal Series(Fred fred) : base(fred)
        {
            _categories = new Lazy <IEnumerable <Category> >(() => UseRealtimeFields
                ? Fred.GetSeriesCategories(Id, RealtimeStart, RealtimeEnd)
                : Fred.GetSeriesCategories(Id));

            _release = new Lazy <Release>(() => UseRealtimeFields
                ? Fred.GetSeriesRelease(Id, RealtimeStart, RealtimeEnd)
                : Fred.GetSeriesRelease(Id));

            _data = new Lazy <List <Observation> >(
                () =>
            {
                const int limit = 100000;
                var data        = UseRealtimeFields
                        ? (List <Observation>)
                                  Fred.GetSeriesObservations(Id, ObservationStart, ObservationEnd, RealtimeStart,
                                                             RealtimeEnd, Enumerable.Empty <DateTime>())
                        : (List <Observation>)
                                  Fred.GetSeriesObservations(Id, ObservationStart, ObservationEnd);

                var count = data.Count;
                var call  = 1;
                while (count == limit)
                {
                    var start = UseRealtimeFields ? RealtimeStart : Fred.CstTime();
                    var end   = UseRealtimeFields ? RealtimeEnd : Fred.CstTime();
                    var more  =
                        (List <Observation>)
                        Fred.GetSeriesObservations(Id, ObservationStart, ObservationEnd, start,
                                                   end, Enumerable.Empty <DateTime>(), limit,
                                                   call * limit);
                    data.AddRange(more);
                    count = more.Count;
                    call++;
                }
                return(data);
            });
        }
All Usage Examples Of Xaye.Fred.Fred::GetSeriesObservations