问题排查

访问

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

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

 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 查询您预计存在于数据集中的显式 slice。这会强制系统返回给定 slice 的时序以及其评估状态。

ForecastResult.label INSUFFICIENT_DATA

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

状态代码:3。消息:收到密度 = xx。最小密度 = yy

在以下代码示例中,用户请求 Timeseries Insights API 在 90% 的数据点位于请求的时间间隔 [detectionTime - TimeseriesParams.forecastHistory, detectionTime] 内时进行分类。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 开始。稍后可以对该参数进行微调,以提高精确度。

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