3

使用 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 阻塞了该数据集的大小,但从错误消息中并不清楚。

4

1 回答 1

5

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

1.缩短查询的时间范围

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

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

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

提取查询类型接受一个名为 的参数property_names。在这里,您可以列出提取时需要的一组属性。如果没有此参数,API 将返回事件的所有属性。使用property_names仅提取所需的属性可以显着降低您的计算成本和查询的开销。

3. 减少你的收藏规模

这可能不适用于这种情况,因为看起来您的数据模型已经建立并且合理,但是分析 400M 事件的查询所花费的时间大约是分析 200M 事件的查询的两倍。出于这个原因,我们建议您不要将所有事件类型存储在一个大型集合中。Keen 旨在为每种类型的操作(注册、打开、消息等)提供多个集合。例如,如果您将此集合范围缩小为“加载个人资料页面”,您的查询会快很多,因为它不必对所有其他报告类型进行排序。

对于遇到此错误的其他人,缓存还可以将查询响应时间减少到毫秒。缓存适用于所有分析类型,如计数、总和、中位数等,提取除外。

于 2017-06-21T00:07:41.187 回答