如何将大table加载到tableau中进行数据可视化?

How to load large table into tableau for data visualization?

我可以将 tableau 连接到我的数据库,但是 table 这里的大小确实很大。每次我尝试将 table 加载到 tableau 时,它都会崩溃,我找不到任何解决方法。 table 大小从 1000 万到 4 亿行不等。我应该如何处理这个问题有什么建议吗?

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

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

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

这个问题有两种解读方式:

  1. 数据源(可能是单个 table、视图等)有 10M 到 400M 行,Tableau 在加载过程中的某个时刻崩溃。在这种情况下,我建议您联系 Tableau 技术支持。他们真的很喜欢听到这样的情况并帮助人们度过难关。

  2. 您正在尝试创建具有 N 条记录的可视化效果(例如文本 table 或交叉表),显示的行数为 10M 到 400M。在这种情况下,您将进入 Tableau 不适合的领域。具有 1000 万行的文本 table 除了导出到其他内容之外不会对任何事情都有用,在这种情况下,有比 Tableau 更好的工具来执行此操作(例如构建的 export/import 工具进入大多数数据库)。

您没有 "load" 将数据输入 Tableau,而是将 Tableau 指向外部数据源。然后 Tableau 向外部数据源发送查询,仅请求创建您设计的可视化所需的摘要信息(也称为查询结果)。

因此,举一个极端的例子,如果您将 CNT(记录数)放在列架子上,Tableau 将向外部数据库发送一个简单的简短查询,要求它报告记录数。类似于 "select count(*) from xxx".

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

因此,第一步是确保数据库能够按需执行,而不管 Tableau。

这是最纯粹的回应。现在来看一些乱七八糟的细节。可以在 Tableau 中设计一个非常复杂的可视化,它会发送一个复杂的查询,要求一个非常大的结果集。例如,您可以设计一个仪表板,在地图上为数据库中的每一行绘制一个点,然后每次在地图上的标记上挥动鼠标时刷新大量数据。

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

正如其他人所建议的那样,您可以使用 Tableau 数据提取来卸载工作负载并缓存数据以供 Tableau 快速使用。数据提取类似于存储在 Tableau 中的优化实体化视图。数据提取对于加速 Tableau 非常有帮助,但如果您想要高性能,请过滤和聚合您的数据提取以仅包含支持您的视图所需的数据和详细程度。如果您盲目地提取整个数据库,您只是将所有数据从一种形式的数据库复制到另一种形式。

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

  1. 将数据上传到 BigQuery(您可以将多个文件附加到一个 table)。
  2. Link 即 table 将 Tableau 作为外部数据源

Tableau 随后会在请求新的 'view' 时向 BigQuery 发送类似于 SQL 的命令。查询在 Google 的计算硬件上得到快速处理,然后将少量信息发送回 Tableau。

这种方法让我可以在 MacBook 上可视化一个 100gb 的移动通话记录数据集,其中包含约 10 亿行。