QueryIncompleteError: Your query did not finish in 300 seconds. Most likely something is wrong on our side

QueryIncompleteError: Your query did not finish in 300 seconds. Most likely something is wrong on our side

使用 Python Keen 客户端进行提取查询时,我们始终遇到相同的错误:

消息:您的查询未在 300 秒内完成。我们这边很可能出了什么问题。请通过 team@keen.io.

告诉我们

代码: QueryIncompleteError

查询的参数为:(JSON格式)

{
    "timezone": -18000,
    "event_collection": "Loaded a Page",
    "filters": [
        {
            "operator": "eq",
            "property_name": "reportType",
            "property_value": "Profile"
        }
    ],
    "timeframe": {
        "start": "2017-04-24",
        "end": "2017-06-19"
    }
}

我怀疑所请求的日期范围太大,Keen API 对数据集的大小感到窒息,但从错误消息中看不清楚。

你猜对了!当您的查询超时(运行时间超过 5 分钟)时,会发生此 504 错误。以下是减少查询运行时间的方法:

1.缩短查询的时间范围

时间范围越小,查询越快。查询一周的数据比查询 1 个月的数据快 4 倍(大约)。

一个相对简单的解决方法是通过将时间范围分为两个或更多部分来将此查询拆分为两个查询。

2。减少提取的属性数量。

extraction 查询类型接受名为 property_names 的参数。您可以在此处列出提取中所需的一系列属性。如果没有此参数,API 将 return all 属性添加到您的事件中。使用 property_names 仅提取所需的属性可以显着降低计算成本和查询开销。

3。缩小您的 collection 尺码

这在这种情况下可能不适用,因为看起来您的数据模型已经建立且合理,但分析 400M 事件的查询所花费的时间大约是分析 200M 事件的查询的两倍。因此,我们建议您不要将所有事件类型存储在一个 mega-collection 中。 Keen 旨在为每种类型的操作(注册、打开、消息等)设置多个 collection。例如,如果您将此 collection 缩小为 "Loaded a Profile Page",您的查询会快很多,因为它不必对所有其他报告类型进行排序。

对于遇到此错误的其他人,caching can also reduce query response times to milliseconds. Caching works for all analysis types 例如计数、总和、中位数等,除了 用于提取。