Ejemplo n.º 1
0
 def summaries(self,
               start_time,
               end_time,
               interval,
               summary_types,
               calculation_basis=CalculationBasis.TIME_WEIGHTED,
               time_type=TimestampCalculation.AUTO):
     """Return one or more summary values for each interval within a time range.
     """
     time_range = AF.Time.AFTimeRange(start_time, end_time)
     interval = AF.Time.AFTimeSpan.Parse(interval)
     summary_types = int(summary_types)
     calculation_basis = int(calculation_basis)
     time_type = int(time_type)
     pivalues = self._summaries(time_range, interval, summary_types,
                                calculation_basis, time_type)
     df = DataFrame()
     for summary in pivalues:
         key = SummaryType(summary.Key).name
         timestamps, values = zip(
             *[(PISeries.timestamp_to_index(value.Timestamp.UtcTime),
                value.Value) for value in summary.Value])
         df = df.join(DataFrame(data={key: values}, index=timestamps),
                      how='outer')
     return df
Ejemplo n.º 2
0
 def filtered_summaries(
         self,
         start_time,
         end_time,
         interval,
         filter_expression,
         summary_types,
         calculation_basis=CalculationBasis.TIME_WEIGHTED,
         filter_evaluation=ExpressionSampleType.EXPRESSION_RECORDED_VALUES,
         filter_interval=None,
         time_type=TimestampCalculation.AUTO):
     """Return one or more summary values for each interval within a time range.
     """
     time_range = AF.Time.AFTimeRange(start_time, end_time)
     interval = AF.Time.AFTimeSpan.Parse(interval)
     filter_expression = self._normalize_filter_expression(
         filter_expression)
     filter_interval = AF.Time.AFTimeSpan.Parse(filter_interval)
     pivalues = self._filtered_summaries(time_range, interval,
                                         filter_expression, summary_types,
                                         calculation_basis,
                                         filter_evaluation, filter_interval,
                                         time_type)
     df = DataFrame()
     for summary in pivalues:
         key = SummaryType(summary.Key).name
         timestamps, values = zip(
             *[(PISeries.timestamp_to_index(value.Timestamp.UtcTime),
                value.Value) for value in summary.Value])
         df = df.join(DataFrame(data={key: values}, index=timestamps),
                      how='outer')
     return df
Ejemplo n.º 3
0
 def summary(
     self,
     start_time,
     end_time,
     summary_types,
     calculation_basis=CalculationBasis.TIME_WEIGHTED,
     time_type=TimestampCalculation.AUTO,
 ):
     """Return one or more summary values over a single time range.
     """
     time_range = AF.Time.AFTimeRange(start_time, end_time)
     summary_types = int(summary_types)
     calculation_basis = int(calculation_basis)
     time_type = int(time_type)
     pivalues = self._summary(time_range, summary_types, calculation_basis,
                              time_type)
     df = DataFrame()
     for summary in pivalues:
         key = SummaryType(summary.Key).name
         value = summary.Value
         timestamp = PISeries.timestamp_to_index(value.Timestamp.UtcTime)
         value = value.Value
         df = df.join(DataFrame(data={key: value}, index=[timestamp]),
                      how="outer")
     return df
Ejemplo n.º 4
0
    def summaries(
        self,
        start_time,
        end_time,
        interval,
        summary_types,
        calculation_basis=CalculationBasis.TIME_WEIGHTED,
        time_type=TimestampCalculation.AUTO,
    ):
        """summaries

        Return one or more summary values for each interval within a time range

        Args:
            start_time (str or datetime): Containing the date, and possibly time,
                from which to retrieve the values. This is parsed, together
                with `end_time`, using
                :afsdk:`AF.Time.AFTimeRange <M_OSIsoft_AF_Time_AFTimeRange__ctor_1.htm>`.
            end_time (str or datetime): Containing the date, and possibly time,
                until which to retrieve values. This is parsed, together
                with `start_time`, using
                :afsdk:`AF.Time.AFTimeRange <M_OSIsoft_AF_Time_AFTimeRange__ctor_1.htm>`.
            interval (str): String containing the interval at which to extract
                data. This is parsed using
                :afsdk:`AF.Time.AFTimeSpan.Parse <M_OSIsoft_AF_Time_AFTimeSpan_Parse_1.htm>`.
            summary_types (int or PIConsts.SummaryType): Type(s) of summaries
                of the data within the requested time range.
            calculation_basis (int or PIConsts.CalculationBasis, optional):
                Event weighting within an interval. See :ref:`event_weighting`
                and :any:`CalculationBasis` for more information. Defaults to
                CalculationBasis.TIME_WEIGHTED.
            time_type (int or PIConsts.TimestampCalculation, optional):
                Timestamp to return for each of the requested summaries. See
                :ref:`summary_timestamps` and :any:`TimestampCalculation` for
                more information. Defaults to TimestampCalculation.AUTO.

        Returns:
            pandas.DataFrame: Dataframe with the unique timestamps as row index
                and the summary name as column name.
        """
        time_range = to_af_time_range(start_time, end_time)
        interval = AF.Time.AFTimeSpan.Parse(interval)
        summary_types = int(summary_types)
        calculation_basis = int(calculation_basis)
        time_type = int(time_type)
        pivalues = self._summaries(time_range, interval, summary_types,
                                   calculation_basis, time_type)
        df = DataFrame()
        for summary in pivalues:
            key = SummaryType(summary.Key).name
            timestamps, values = zip(
                *[(timestamp_to_index(value.Timestamp.UtcTime), value.Value)
                  for value in summary.Value])
            df = df.join(DataFrame(data={key: values}, index=timestamps),
                         how="outer")
        return df
Ejemplo n.º 5
0
    def filtered_summaries(
        self,
        start_time,
        end_time,
        interval,
        filter_expression,
        summary_types,
        calculation_basis=None,
        filter_evaluation=None,
        filter_interval=None,
        time_type=None,
    ):
        """filtered_summaries

        Return one or more summary values for each interval within a time range

        Args:
            start_time (str or datetime): String containing the date, and possibly time,
                from which to retrieve the values. This is parsed, together
                with `end_time`, using
                :afsdk:`AF.Time.AFTimeRange <M_OSIsoft_AF_Time_AFTimeRange__ctor_1.htm>`.
            end_time (str or datetime): String containing the date, and possibly time,
                until which to retrieve values. This is parsed, together
                with `start_time`, using
                :afsdk:`AF.Time.AFTimeRange <M_OSIsoft_AF_Time_AFTimeRange__ctor_1.htm>`.
            interval (str): String containing the interval at which to extract
                data. This is parsed using
                :afsdk:`AF.Time.AFTimeSpan.Parse <M_OSIsoft_AF_Time_AFTimeSpan_Parse_1.htm>`.
            filter_expression (str, optional): Defaults to ''. Query on which
                data to include in the results. See :ref:`filtering_values`
                for more information on filter queries.
            summary_types (int or PIConsts.SummaryType): Type(s) of summaries
                of the data within the requested time range.
            calculation_basis (int or PIConsts.CalculationBasis, optional):
                Event weighting within an interval. See :ref:`event_weighting`
                and :any:`CalculationBasis` for more information. Defaults to
                CalculationBasis.TIME_WEIGHTED.
            filter_evaluation (int or PIConsts,ExpressionSampleType, optional):
                Determines whether the filter is applied to the raw events in
                the database, of if it is applied to an interpolated series
                with a regular interval. Defaults to
                ExpressionSampleType.EXPRESSION_RECORDED_VALUES.
            filter_interval (str, optional): String containing the interval at
                which to extract apply the filter. This is parsed using
                :afsdk:`AF.Time.AFTimeSpan.Parse <M_OSIsoft_AF_Time_AFTimeSpan_Parse_1.htm>`.
            time_type (int or PIConsts.TimestampCalculation, optional):
                Timestamp to return for each of the requested summaries. See
                :ref:`summary_timestamps` and :any:`TimestampCalculation` for
                more information. Defaults to TimestampCalculation.AUTO.

        Returns:
            pandas.DataFrame: Dataframe with the unique timestamps as row index
                and the summary name as column name.
        """
        time_range = to_af_time_range(start_time, end_time)
        interval = AF.Time.AFTimeSpan.Parse(interval)
        filter_expression = self._normalize_filter_expression(
            filter_expression)
        calculation_basis = get_enumerated_value(
            enumeration=CalculationBasis,
            value=calculation_basis,
            default=CalculationBasis.TIME_WEIGHTED,
        )
        filter_evaluation = get_enumerated_value(
            enumeration=ExpressionSampleType,
            value=filter_evaluation,
            default=ExpressionSampleType.EXPRESSION_RECORDED_VALUES,
        )
        time_type = get_enumerated_value(
            enumeration=TimestampCalculation,
            value=time_type,
            default=TimestampCalculation.AUTO,
        )
        filter_interval = AF.Time.AFTimeSpan.Parse(filter_interval)
        pivalues = self._filtered_summaries(
            time_range,
            interval,
            filter_expression,
            summary_types,
            calculation_basis,
            filter_evaluation,
            filter_interval,
            time_type,
        )
        df = DataFrame()
        for summary in pivalues:
            key = SummaryType(summary.Key).name
            timestamps, values = zip(
                *[(timestamp_to_index(value.Timestamp.UtcTime), value.Value)
                  for value in summary.Value])
            df = df.join(DataFrame(data={key: values}, index=timestamps),
                         how="outer")
        return df