多图表缓存

Multiple chart caching

设置: 我创建了一个连接到 API 的数据工作室连接器,我用它来绘制数据工作室报告上的图表。我已经设置了 getData() 方法来在从 API 请求数据之前检查缓存中的数据。如果未缓存,则获取数据然后缓存它。

问题: 我在报告中有多个具有相同指标的图表。每个图表将在页面初始加载时同时调用 getData() 方法。由于它们都同时发生,因此尚未缓存任何数据。每个 getData() 方法调用都认为这是第一次获取该位数据。因此,即使我正在缓存数据,它也无法使用缓存的数据,因为它们是同时被调用的。

有什么办法可以解决这个问题吗?有没有办法让图表同步调用 getData() 方法?

这是 getData() 方法的一些输出。我在每个图表上设置了两个具有相同指标的图表。如果将它们分开调用,则会缓存第二张图表。

Chart 1:
Dec 15, 2020, 12:26:32 PM Debug => NOT CACHED | key: fKes4 | timestamp: 2020-12-15T18:26:32.647Z
Chart 2:
Dec 15, 2020, 12:26:32 PM Debug => NOT CACHED | key: fKes4 | timestamp: 2020-12-15T18:26:32.799Z

据我所知,这是不可能的。您报告中的所有视觉对象将同时调用 getData,并且它应该是异步的。

但是,假设您可以更改被叫 API,您可以解决此行为,修改被叫 API 使其不要一次接听多个 API 电话.这样,您的 getData 函数的第二次调用可能会等待第一次调用的缓存内容。我不会说这是一项改进或值得付出努力,但它肯定会完成工作。

我的建议是不要使用社区连接器将 Data Studio 与 API 集成。创建一个 Cloud Functions 来使用您的 APIs 并将数据存储在 BigQuery 中,这将更容易维护并且性能更高。