1. 异步查询

大部分场景下,神策分析都可以将分析结果实时返回给用户,例如在数秒或者不超过 30 秒的时间内返回并展现出结果。但在以下个别场景中,可能需要用户等待数分钟或者更久:

  1. 查询的数据量特别大,同时查询复杂度很高,且无法命中缓存;
  2. 查询的并发人数较多,且无法命中缓存;
  3. 查询返回的结果集特别大,例如查询一个用户群的列表,返回的结果集可能有几百兆或者更大。

考虑到尽可能不阻塞用户的查询工作,且避免因误操作关闭页面导致无法找回之前的查询结果,我们在产品中增加了异步查询功能。针对上述三个场景,允许用户将此查询保留至后台持续计算。当查询完成,通过消息通知及时告知用户查看或下载分析结果。


在进行大数据量查询时,等待查询区域出现「保留查询到后台,在当前页开始新的查询」按钮,点击后出现确认提示,点击「好的」以后,本次查询会进入列队进行后台查询,当前页可进行其他查询操作,当列队中的查询完成后会有系统通知。


导出数据本质上也是一次查询和文件生成的过程。所以在下载文件过程中,用户可以在当前页面等待文件的生成,也可以关闭提示窗。文件生成成功后,将在通知栏中提示当前用户,同样此文件会默认保存 7 日。

2. 队列查询记录

为了辅助「大数据量查询的用户」后台查询的分析内容,神策新增「队列查询记录」板块用户查看历史查询记录。此结果以快照的形式保存当时查询的结果,所以如果有新的数据入库,或涉及今日的实时数据,不会在此快照结果内。

目前,我们提供过去 7 日的查询记录。每十秒系统将会自动刷新一次查询状态,从而我们可以在此页面了解当前「全局查询情况」,对于整体查询资源以及数据查询结果耗时,提供有一个更好地预期。

可在此列表中逐个或批量取消「进行中」和「等待中」的查询项。鼠标 hover 在「失败」状态上,可查询失败原因。当然,如果查询最终失败,系统也会通过通知的方式及时提醒当前使用者。