Google bigquery 从Google BigQuery提取刷新Tableau数据需要很长时间

Google bigquery 从Google BigQuery提取刷新Tableau数据需要很长时间,google-bigquery,tableau-api,Google Bigquery,Tableau Api,我们非常满意BigQuery Tableau服务器与实时连接的结合。但是,我们现在希望在Tableau服务器上使用数据提取(500MB)(因为该数据源不是太大,而且使用非常频繁)。刷新时间过长(1.5h+)。我们注意到只有0.1%是查询时间,其余是数据导出。由于Tableau服务器位于相同的平台和位置,因此延迟不应该是一个问题 这类似于将BigQuery表缓慢导出到单个文件,这可以通过使用“菊花链”选项()来解决。不幸的是,我们不能在Tableau中使用与Google BigQuery数据提取刷

我们非常满意BigQuery Tableau服务器与实时连接的结合。但是,我们现在希望在Tableau服务器上使用数据提取(500MB)(因为该数据源不是太大,而且使用非常频繁)。刷新时间过长(1.5h+)。我们注意到只有0.1%是查询时间,其余是数据导出。由于Tableau服务器位于相同的平台和位置,因此延迟不应该是一个问题

这类似于将BigQuery表缓慢导出到单个文件,这可以通过使用“菊花链”选项()来解决。不幸的是,我们不能在Tableau中使用与Google BigQuery数据提取刷新类似的逻辑

我们已经确定了一些方法,但对我们目前的想法不满意:

  • 使用增量刷新:我们现有的BigQuery表行可能会更改:只有在进行完全刷新时,才能在Tableau中应用这些更改
  • 使用菊花链选项将BigQuery表导出到GCS,并使用提取表格数据:这将导致相当大的开销
  • 使用Tableau Server的自定义接收器(数据提取)编写数据流作业
  • 使用直接与BigQueryAPI通信的Tableau web连接器进行试验:我不认为这会更快吗?我没有看到任何关于使用Tableau web Connector并行调用的内容,但我还没有尝试过这种方法

  • 我们更喜欢非技术性选项,以限制维护。。。有没有办法修改Tableau连接器以使用BigQuery的“菊花链”选项?

    您已经在BigQuery中上载了数据。难道你不能仅仅使用加载作业的输入(可能是CSV)作为Tableau的输入吗

    当我们使用Tableau和BigQuery时,我们也注意到提取速度很慢,但我们通常不会这样做,因为您会失去BigQuery的功能。我们首先从一个实时数据连接开始,然后(如果需要)将其转换为一个自定义查询,该查询将数据聚合为一个更小的数据集,并在几秒钟内提取


    使用BigQuery和Tableau实现更高性能的另一种方法是预先聚合或连接表。加入巨大的表可能会很慢,所以如果你使用了很多你可能会考虑生成一个去重化的数据集,它会首先完成所有的连接。您将得到一个包含大量重复项和大量列的数据集。但是,如果您只选择Tableau中需要的内容(隐藏未使用的字段!),那么这些列将不会计入您的查询成本。

    我看到的一个建议类似于您的第2点,即将BQ表导出到Google云存储,然后使用Tableau Extract API从GCS中的平面文件创建.tde

    这是谷歌云网站上的一篇文章,因此我认为这是最佳实践:

    这里有一篇文章提供了实现上述目标的分步指南


    如果Tableau使用BigQuery存储API优化用于提取刷新的BQ连接器,那就太好了。我们的Tableau服务器环境也与BQ数据集位于同一GCP区域,刷新速度较慢。

    谢谢您的提示。不幸的是,我们有很多传统的仪表板依赖于一个表中的数据(不是使用多个表的首选方法)。由于我们没有足够的预算/时间来改造仪表盘,这种方法不会奏效。BigQuery最大的成功在于它的速度和强大的规模。它可以在几秒钟内聚合大量数据。一般来说,在处理大型数据集时,Tableau中的数据提取往往更适合已聚合的数据。为了获得最佳性能,大部分查询工作必须位于BigQuery端,Tableau更像是一个可伸缩的前端。否则,您将BQ更多地用作数据存储而不是查询引擎。正如@Wouter所建议的,最好构建一些自定义查询并提取结果,而不是从Tableau中提取数据和查询。