def initializeAggregator(aggSpec, modelSpec):
    inputRecordSchema = (
        fieldmeta.FieldMetaInfo(modelSpec["timestampFieldName"],
                                fieldmeta.FieldMetaType.datetime,
                                fieldmeta.FieldMetaSpecial.timestamp),
        fieldmeta.FieldMetaInfo(modelSpec["valueFieldName"],
                                fieldmeta.FieldMetaType.float,
                                fieldmeta.FieldMetaSpecial.none),
    )

    dataAggregator = aggregator.Aggregator(aggregationInfo=dict(
        fields=([(modelSpec["valueFieldName"],
                  aggSpec["func"])] if aggSpec is not None else []),
        seconds=aggSpec["windowSize"] if aggSpec is not None else 0),
                                           inputFields=inputRecordSchema)
    return dataAggregator
예제 #2
0
  def __init__(self, inputFileObj, inputSpec, aggSpec, modelSpec):
    """
    :param inputFileObj: A file-like object that contains input metric data
    :param dict inputSpec: Input data specification per input_opt_schema.json
    :param dict aggSpec: Optional aggregation specification per
      agg_opt_schema.json or None if no aggregation is requested
    :param dict modelSpec: Model specification per model_opt_schema.json
    """
    self._inputSpec = inputSpec

    self._aggSpec = aggSpec

    self._modelSpec = modelSpec

    if "modelId" in modelSpec:
      self._modelId = modelSpec["modelId"]
    else:
      self._modelId = "Unknown"


    inputRecordSchema = (
      fieldmeta.FieldMetaInfo(modelSpec["timestampFieldName"],
                              fieldmeta.FieldMetaType.datetime,
                              fieldmeta.FieldMetaSpecial.timestamp),
      fieldmeta.FieldMetaInfo(modelSpec["valueFieldName"],
                              fieldmeta.FieldMetaType.float,
                              fieldmeta.FieldMetaSpecial.none),
    )

    self._aggregator = aggregator.Aggregator(
      aggregationInfo=dict(
        fields=([(modelSpec["valueFieldName"], aggSpec["func"])]
                if aggSpec is not None else []),
        seconds=aggSpec["windowSize"] if aggSpec is not None else 0
      ),
      inputFields=inputRecordSchema)

    self._modelRecordEncoder = record_stream.ModelRecordEncoder(
      fields=inputRecordSchema)

    self._model = self._createModel(modelSpec=modelSpec)

    self._anomalyLikelihood = AnomalyLikelihood()

    self._csvReader = self._createCsvReader(inputFileObj)