superset - Superset 是否支持后台异步数据源刷新?
问题描述
我正在使用 Superset 构建实时仪表板,并且我希望在特定日期和时间在后台更新和缓存数据源(从 sqlLab 结果集构建)。
我将超集连接到 MySql 并在 SQLLab 中构建了一些查询。这些查询的结果用作构建图表和仪表板的数据源。问题是有时这些查询花费的时间太长并且图表/仪表板无法正确显示(例如查询超时 - 显示警告消息)。我配置了缓存时间和芹菜异步。worker,但是当这个缓存过期时,仪表板会被刷新,并执行与图表/数据源相关的查询,显示超时(或其他错误)消息。
实际结果:
- 图表/仪表板在刷新时显示超时警告消息。
预期成绩:
- 图表/仪表板总是从缓存中读取以避免运行长查询。
- 安排后台异步。在特定日期和时间刷新数据源。
更新——2019 年 12 月 9 日
我发现超集有一个 Celery 任务,它会根据不同的策略定期预热缓存。其中一种策略 (DashboardTagsStrategy) 使用自定义标签预热图表/仪表板的缓存。我知道,如果我们在 config.py 中添加 CELERYBEAT_SCHEDULE 部分,指定 crontab 并标记特定图表,我们可以在特定日期和时间安排后台异步数据源刷新。要遵循的步骤是:
- 在 SQL Lab 中执行查询。
- 将此查询的结果用作数据源。
- 基于此数据源构建图表。
- 标记此图表(我仍然不知道如何标记图表或仪表板)
- 在 config.py 中添加基于标签的预热缓存策略。
- 在图表(或数据源?¿)中配置缓存超时
解决方案
Superset 可以执行查询(也称为超集中的“数据源”)并将其结果缓存一段时间(数据源上的图表缓存超时参数)。您将使用此缓存来避免在数据“足够新鲜”时重新查询数据库 - 例如,可以将每日销售图表缓存 24 小时。
从概念上讲,Superset 是一种数据可视化工具,但不是数据准备/转换工具,因此,afaik 没有安排后台作业在特定日期/时间进行自动定期刷新的概念。
相反,您想要做的是在数据库中创建物化视图,并将这些视图/表用作超集查询和图表的数据源。
您将需要使用不同的工具来安排这些材料视图的刷新 - 这可能就像 cron 作业一样简单。
然后,您可以将这些物化视图用作图表的数据源。这些视图中的数据实际上是静态的,无需异步运行超集查询或将结果缓存在超集中。
推荐阅读
- unity3d - 不使用 AddForce 的 Unity 2D 中的击退
- pentaho - pentaho 除法 2 列
- git - 我是否需要克隆存储库以添加自定义分支
- php - 以 php 格式导出 csv,如 Microsoft excel 格式
- hadoop3 - hadoop 3.3.1 显示作业历史错误:线程“主”java.lang.IllegalArgumentException 中的异常:JobId 字符串:/output_dir 格式不正确
- vb.net - VS - vb 文件已损坏 - 意外的令牌和字符无效
- c# - 在 Azure Devops 管道中使用 Cosmos Db 进行单元测试失败
- javascript - 我使用 npm run build 后代理不起作用
- javascript - 自定义突出显示功能不适用于特殊字符 - React Native
- c++ - 尽管使用 C++ 17,为什么我无法用 shared_ptr 包装动态数组?