【发布时间】:2020-01-12 12:41:30
【问题描述】:
我正在使用 Superset 构建实时仪表板,我希望在特定日期和时间在后台更新和缓存数据源(从 sqlLab 结果集构建)。
我将超集连接到 MySql 并在 SQLLab 中构建了一些查询。这些查询的结果用作构建图表和仪表板的数据源。问题是有时这些查询花费的时间太长并且图表/仪表板无法正确显示(例如查询超时 - 显示警告消息)。我配置了缓存时间和芹菜异步。 worker,但是当这个缓存过期时,仪表板会被刷新并执行与图表/数据源相关的查询,显示超时(或其他错误)消息。
实际结果:
- 图表/仪表板在刷新时显示超时警告消息。
预期结果:
- 图表/仪表板始终从缓存中读取以避免运行长查询。
- 安排后台异步。数据源在特定日期和时间刷新。
更新 -- 2019 年 9 月 12 日
我发现 superset 有一个 Celery 任务,它会根据不同的策略定期预热缓存。其中一种策略 (DashboardTagsStrategy) 使用自定义标签预热图表/仪表板的缓存。我知道如果我们在 config.py 中添加一个 CELERYBEAT_SCHEDULE 部分 指定 crontab 并标记特定图表,我们可以在特定日期和时间安排后台异步数据源刷新。要遵循的步骤是:
- 在 SQL Lab 中执行查询。
- 将此查询的结果用作数据源。
- 基于此数据源构建图表。
- 标记此图表(我仍然不知道如何标记图表或仪表板)
- 在 config.py 中添加基于标签的预热缓存策略。
- 在图表(或数据源?¿)中配置缓存超时
【问题讨论】:
-
您有没有找到一种方法来标记您的仪表板?我也在寻找标记预热缓存策略,但我似乎找不到标记仪表板的方法。