Method: projects.locations.datasets.query

Execute a Timeseries Insights query over a loaded DataSet.

HTTP request

POST https://timeseriesinsights.googleapis.com/v1/{name=projects/*/locations/*/datasets/*}:query

The URL uses gRPC Transcoding syntax.

Path parameters

Parameters
name

string

Required. Loaded DataSet to be queried in the format of "projects/{project}/locations/{location}/datasets/{dataset}"

Request body

The request body contains data with the following structure:

JSON representation
{
  "detectionTime": string,
  "slicingParams": {
    object (SlicingParams)
  },
  "timeseriesParams": {
    object (TimeseriesParams)
  },
  "forecastParams": {
    object (ForecastParams)
  },
  "returnTimeseries": boolean,
  "numReturnedSlices": integer
}
Fields
detectionTime

string (Timestamp format)

Required. This is the point in time that we want to probe for anomalies.

The corresponding TimeseriesPoint is referred to as the detection point.

NOTE: As with any other time series point, the value is given by aggregating all events in the slice that are in the [detectionTime, detectionTime + granularity) time interval, where the granularity is specified in the timeseriesParams.granularity field.

A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z".

slicingParams

object (SlicingParams)

Parameters controlling how we will split the dataset into the slices that we will analyze.

timeseriesParams

object (TimeseriesParams)

Parameters controlling how we will build the time series used to predict the detectionTime value for each slice.

forecastParams

object (ForecastParams)

Parameters that control the time series forecasting models, such as the sensitivity of the anomaly detection.

returnTimeseries

boolean

If specified, we will return the actual and forecasted time for all returned slices.

The time series are returned in the EvaluatedSlice.history and EvaluatedSlice.forecast fields.

numReturnedSlices

integer

How many slices are returned in QueryDataSetResponse.slices.

The returned slices are tentatively the ones with the highest anomaly scores in the dataset that match the query, but it is not guaranteed.

Reducing this number will improve query performance, both in terms of latency and resource usage.

Defaults to 50.

Response body

Response for a query executed by the system.

If successful, the response body contains data with the following structure:

JSON representation
{
  "name": string,
  "slices": [
    {
      object (EvaluatedSlice)
    }
  ]
}
Fields
name

string

Loaded DataSet that was queried.

slices[]

object (EvaluatedSlice)

Slices sorted in descending order by their anomalyScore.

At most numReturnedSlices slices are present in this field.

Authorization scopes

Requires the following OAuth scope:

  • https://www.googleapis.com/auth/cloud-platform

For more information, see the Authentication Overview.

IAM Permissions

Requires the following IAM permission on the name resource:

  • timeseriesinsights.datasets.query

For more information, see the IAM documentation.

SlicingParams

Parameters that control how we slice the dataset and, optionally, filter slices that have some specific values on some dimensions (pinned dimensions).

JSON representation
{
  "dimensionNames": [
    string
  ],
  "pinnedDimensions": [
    {
      object (PinnedDimension)
    }
  ]
}
Fields
dimensionNames[]

string

Required. Dimensions over which we will group the events in slices. The names specified here come from the EventDimension.name field. At least one dimension name must be specified. All dimension names that do not exist in the queried DataSet will be ignored.

Currently only dimensions that hold string values can be specified here.

pinnedDimensions[]

object (PinnedDimension)

Optional. We will only analyze slices for which EvaluatedSlice.dimensions contain all of the following pinned dimensions. A query with a pinned dimension { name: "d3" stringVal: "v3" } will only analyze events which contain the dimension { name: "d3" stringVal: "v3" }. The pinnedDimensions and dimensionNames fields can not share the same dimension names.

Example a valid specification:

{
  dimensionNames: ["d1", "d2"],
  pinnedDimensions: [
    { name: "d3" stringVal: "v3" },
    { name: "d4" stringVal: "v4" }
  ]
}

In the previous example we will slice the dataset by dimensions "d1", "d2", "d3" and "d4", but we will only analyze slices for which "d3=v3" and "d4=v4".

The following example is invalid as "d2" is present in both dimensionNames and pinnedDimensions:

{
  dimensionNames: ["d1", "d2"],
  pinnedDimensions: [
    { name: "d2" stringVal: "v2" },
    { name: "d4" stringVal: "v4" }
  ]
}