问题排查

访问权限

无法将 Timeseries Insights DataSet Owner 添加到服务帐号

界面中可能不会显示“Timeseries Insights DataSet Owner”角色。 您可以在 gcloud 命令中使用角色 ID roles/timeseriesinsights.datasetsOwner 来授予必要的访问权限。

 gcloud projects add-iam-policy-binding "${PROJECT_ID}" \
      --member="serviceAccount:${SVC_ACCOUNT}" \
      --role=roles/timeseriesinsights.datasetsOwner \
      --condition=None

异常值检测

本部分介绍了一些常用的调试步骤,以帮助您了解 Timeseries Insights API 响应(如果它们与您的预期不同)。

空切片

对已加载的数据集执行时间序列数据分析查询时,您可能会收到空的响应

Example empty response,
{'name': 'projects/demo-project/datasets/demo-dataset',
'slices': []}

slices 为空表示在所请求的时间间隔 [detectionTime - TimeseriesParams.forecastHistory, detectionTime + TimeseriesParams.granularity] 中没有数据点。

或者,您也可以尝试使用 evaluateSlice API 尝试查询您希望在数据集中显示的显式切片。这会强制系统返回给定切片及其评估状态的时序。

ForecastResult.label INSUFFICIENT_DATA

在执行 Timeseries Insights API 查询evaluateSlice 时,您可能会发现将 INSUFFICIENT_DATA 视为每个切片的 ForecastResultLabel。这意味着我们没有足够的数据来对特定切片进行分类。

状态代码:3. 消息:Got density = xx。最小密度 = yy

在以下代码示例中,如果 90% 的数据点存在于请求的时间间隔 [detectionTime - TimeseriesParams.forecastHistory, detectionTime] 内,则用户要求 Timeseries Insights API 进行分类。Timeseries Insights API 无法提供分类,因为在时序间隔中只有 1% 的数据点是非空的。

"status": {
  "code": 3,
  "message": "Got density = 1. Min density = 90"
}

尝试对请求中的以下参数进行实验,以了解数据点可能不存在的原因。

  • DetectionTime 和 TimeseriesParams

    • 确保 [detectionTime - TimeseriesParams.forecastHistory, detectionTime + TimeseriesParams.granularity] 是数据集内所有可用事件的子范围,以便有足够的历史记录供 Timeseries Insights API 使用。这可能需要您选择接近时序末尾的 detectionTime

    • Timeseries Insights API 从 detectionTime 回顾时间以构建时序。时间回溯的时间以及时序中包含的点数由 TimeseriesParams.forecastHistory 和 TimeseriesParams.granularity 决定,

    • 如果不确定数据集中事件的实际密度,则从 minDensity = 0.0 开始。之后请微调该参数,以提高精确率。

如需了解参数定义,另请参阅时间序列概念