performance - 商业智能数据源性能 - 大表
问题描述
我使用 Tableau 并有一个包含 140 个字段的表。由于表格的大小/宽度,性能很差。我想删除字段以提高阅读速度,但我的用户群非常大,每个字段至少有一个人使用,而 90% 的人使用相同的约 20 个字段。
这个问题的最佳解决方案是什么?(Tableau 是我们的 BI 工具,BigQuery 是我们的数据库)
到目前为止我所做的事情:在 Tableau 中,不清楚如何使用根据所选字段更改的动态数据源。理想情况下,我希望有更小的视图或非规范化表。当用户在 Tableau 中进行选择时,基础数据源会更新为具有该字段的表或视图。
我尝试了一个大视图的简单版本,但它的性能比我的大表差,并且读取的数据要多得多(请记住,我是 BigQuery,所以我非常关心由于成本而读取的字节数)
解决方案
建议1:提取数据。
特别是当涉及按查询字节付费的数据源时,(Big Query、Athena 等)提取非常有意义。取决于用户的数据必须有多“新鲜”。(当然所有用户都会说“直播是唯一的出路”,但请深入研究一下,看看它实际上可能是什么。)刷新可以安排在 15 分钟之内。刷新的真正力量来自“增量刷新”的形式,即只添加新记录(沿着 int 或日期的索引)。这是降低成本的好方法 - 如果您的 BigQuery 数据库是分区的 - (它应该是。)由于 Tableau 数据提取包含在 .hyper 文件中,这是一种 Tableau 自己的设计/控制结构,因此它们速度非常快,并且非常适合在 Tableau 中使用。
建议 2:创建 3 个(或更多)数据源。在验证这些数据源提供正确信息后,对它们进行认证。为用户提供清晰的描述。
- 原始大数据集。
- 90% 的约 20 个字段的子集。
- 10% 的剩余字段
- 1的提取物
- 2的提取物
- 3的提取物
重要的是,如果每个数据源中的字段名称匹配(即:从未手动更改过),那么用户应该很容易根据需要“放大”到更大的数据集。这意味着他们通常总是可以从一小部分数据开始探索,然后使用“替换数据源”功能切换到不同的数据源,同时保持相同的视图。(不过,如果要按比例缩小,这也行不通。)
推荐阅读
- reactjs - 使用 .map 创建 MUI 列表项时,提供给“ForwardRef(ListItemIcon)”的“字符串”类型的无效道具“子项”
- python - 如何使用requirements.txt为不同的python 3版本指定不同的包版本
- c# - 在将 SingleValueExtendedProperties 放入图形事件时遇到问题,当我在调试中查看它时它总是出现 null
- javascript - AngularJS ng-repeat 不适用于 Promise.all
- nginx - 运行 nginx 时,我无法访问 gunicorn 提供的 Flask 网站
- java - 如何在 IntelliJ IDEA 中使用 Opencsv 注释?
- java - 当一个模块的依赖也是同一个 IntelliJ 项目中的一个模块时,管理本地 Maven 依赖版本
- python - 如何在使用 Selenium Python 之前定位伪元素 ::before
- swift - 移除 UIAlertController 结束动画
- jquery - 在 jQuery Ajax 中传递多个参数?