报表最佳做法

保存和重复使用报表

建议您为定期运行的查询创建并保存报表,因为多次插入和删除同一个报表会浪费资源。使用相对日期范围(例如 YESTERDAYLAST_7_DAYS)可以使报表更便于重复使用。

安排定期生成报表

临时报表(即一次性报表)会浪费资源,因为它们单独生成,而且可能是对不完整数据集执行的。定期生成的报表则可以充分利用报表资源,因为它们是批量生成的,而且可以保证在前一天的数据处理完毕后才执行。 如需了解详情,请参阅在安排定期生成报表时可供使用的字段

轮询报表状态时使用指数退避算法

生成一个报表需要多长时间是无法预测的。生成报表所花费的时间可能从几秒到几小时不等,具体取决于许多因素,包括日期范围、要处理的数据量,等等。 另外,生成报表所用的时间与报表中返回的行数之间也没有关联。 因此,您需要定期检查正在生成的报表的状态,以确定它何时完成。此过程称为“轮询”。

虽然轮询很有必要,但在遇到需要很长时间才能生成的报表时,如果编写的实现代码效率低下,可能很快就会耗尽您的配额。因此,我们建议您使用指数退避算法来限制重试次数,从而节省配额。

如需了解详情,请参阅指数退避算法

分成多部分进行下载

报表文件的大小可能高达数千兆字节 (GB)。在单个请求中下载此类大报表可能会导致出现连接问题。此外,如果通过单个请求进行的下载操作发生中断,则完全无法接着下载;而且这种下载操作在失败后也无法接着下载。 因此,我们建议您分成多部分进行下载,将较大的下载文件拆分为多个较小的部分。如果某一个部分失败,还可以从该部分继续下载。

尽管分成多部分有很多好处,但每个部分都会产生一个单独的请求。因此,我们建议您让每个部分都不小于 10MB,以免浪费配额。但是,如果您的平均报表大小非常大,可以在网络连接速度允许的条件下,尽量增加每个部分的大小。

限制同时生成的报表的数量

如果您同时生成 10 个以上的报表,再有其他的报表生成请求时,系统就会对这些请求进行节流。 节流会增加生成报表所用的时间,在极端情况下可能会导致出现超时或错误。建议您将同时生成的报表的数量限制为不超过 5 个,以确保不超出可承受的上限。