2015-07-01 16 views
4

我能够连接画面与我的数据库,但桌子的大小真的很大。每次尝试将表格加载到画面时,都会崩溃,而且我无法找到任何解决办法。表格大小从1000万到4亿行不等。我应该如何处理这个问题的任何建议?如何将大表加载到画面以进行数据可视化?

回答

6

我发现了一个简单的解决方案,用于优化Tableau以处理非常大的数据集(10亿行):Google BigQuery,它本质上是一个托管数据仓库。

  1. 上传数据到BigQuery(您可以将多个文件附加到一个表中)。
  2. 链接该表到的Tableau作为外部数据源

的Tableau然后每当请求一个新的“视图”发送类似SQL命令至BigQuery。 Google的计算硬件可以快速处理查询,然后将少量信息发送回Tableau。

这种方法允许我在MacBook上可视化一个100亿行移动呼叫记录数据集,大约有10亿行。

+0

此解决方案非常棒,感谢分享! – python

0

不确定您的用例是什么,但我发现您不需要为一个Tableau视图提供所有数据。

您可以使用数据库中的视图或Tableau连接中的自定义SQL来解析/聚合数据。此外,尝试使用提取而不是实时数据库连接,因为它们会更快地执行预制。

我喜欢在数据库中使用视图,然后使用这些视图刷新Tableau Server上的Tableau数据提取。

1

有两种方法来解释这个问题:

  1. 数据源(其可以是单个表,视图,等等)具有10M到400M行和的Tableau在一些点崩溃加载过程。在这种情况下,我建议您联系Tableau技术支持。他们非常喜欢听到这样的情况,并通过它们帮助人们。

  2. 您正试图创建一个具有N个记录的可视化文件(如文本表或交叉表),从而生成10M到400M的显示行。在这种情况下,您将进入Tableau不适用的领域。一个包含10M行的文本表除了导出到别的东西外并不会有用,在这种情况下,有比Tableau更好的工具来完成此操作(例如内置于大多数数据库中的导出/导入工具)。

11

您不会将数据“加载”到Tableau中,因此可以将Tableau指向外部数据源。然后,Tableau将查询发送到外部数据源,仅请求创建您设计的可视化所需的摘要信息(又称查询结果)。

因此,对于极端的示例,如果将CNT(记录数)放置在列架子上,Tableau会向外部数据库发送一个简单的简短查询,要求它报告记录数。沿着“从xxx选择计数(*)”的行。

因此,即使外部数据库中有数十亿行,Tableau也会向数据库(查询)发送少量信息并接收少量信息(查询结果)以显示。这使得Tableau在其结束时速度非常快,并且性能取决于外部数据库对查询作出响应的速度。调整数据库取决于各种因素:内存和磁盘的类型和数量,索引设置方式等。

因此,第一步是确保数据库可以根据需要执行,而不管Tableau如何。

这就是纯粹的回应。现在有几个凌乱的细节。可以在Tableau中设计一个非常复杂的可视化文件,它将发送一个复杂的查询请求一个非常大的结果集。例如,您可以设计一个仪表板,为数据库中的每一行在地图上绘制一个点,然后每次将鼠标移动到地图上的标记上时刷新大量数据。

如果您有数百万或数十亿的数据行,并且您想要高性能,那么不要这样做。无论如何,用户无法读取6000万个点,他们当然不希望等待它们通过网络发送。相反,首先绘制汇总值,最小值,最大值,总和,平均值等,然后根据需求深入了解更多细节。

正如其他人所建议的那样,您可以使用Tableau提取工具将工作负载和缓存数据卸载到Tableau快速使用的表单中。提取与存储在Tableau中的优化实例化视图类似。提取对于加快Tableau非常有用,但如果要获得高性能,则可以过滤和聚合提取以仅包含支持视图所需的详细数据和级别。如果您盲目地提取整个数据库的摘录,则只需将所有数据从一种数据库形式复制到另一种形式。

+1

谢谢亚历克斯:)这是一个很有帮助的回应。我的数据库源是1010data 。 – python

+0

不客气。欢迎来到Stack Overflow。顺便说一句,感谢某人提供有用答复的最佳方式是接受并赞扬答案...... –

-1

我发现了一个简单的解决方案,用于优化Tableau以处理非常大的数据集(10亿行):Google BigQuery,它本质上是一个托管数据仓库。

将数据上传到BigQuery(您可以将多个文件附加到一个表中)。 将该表作为外部数据源链接到Tableau Tableau随后在每次请求新的“视图”时向SQL查询发送类似SQL的命令。 Google的计算硬件可以快速处理查询,然后将少量信息发送回Tableau。

这种方法允许我在MacBook上可视化一个100亿行移动呼叫记录数据集,大约有10亿行。

相关问题