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

时间:2016-01-04 12:58:08

标签: google-bigquery tableau-server

我们对组合BigQuery< - >非常满意具有实时连接的Tableau Server。但是,我们现在希望在Tableau Server上使用数据提取(500MB)(因为此数据源不是太大而且经常使用)。这需要刷新时间(1.5h +)。我们注意到只有0.1%是查询时间,其余的是数据导出。由于Tableau Server位于相同的平台和位置,因此延迟不应成为问题。

这类似于将BigQuery表缓慢导出到单个文件,可以使用"菊花链" 选项(wildcards)来解决。很遗憾,我们无法在Tableau中使用类似的逻辑与Google BigQuery数据提取刷新...

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

  1. 使用增量刷新:我们现有的BigQuery表行可以更改:如果您执行完全刷新,这些更改只能在Tableau中应用
  2. 使用菊花链选项将 BigQuery表导出到GCS 并使用 Tableau SDK 制作Tableau数据提取:这会导致相当大的开销。 ..
  3. 使用Tableau Server的自定义接收器(数据提取)编写数据流作业
  4. 尝试使用直接与BigQuery API通信的 Tableau Web连接器:我不认为这会更快吗?我没有看到有关使用Tableau Web连接器并行化调用的任何内容,但我还没有尝试过这种方法。
  5. 我们更喜欢非技术选项,以限制维护...有没有办法修改Tableau连接器以使用"菊花链" BigQuery的选项?

2 个答案:

答案 0 :(得分:1)

您已在BigQuery中上传了数据。您是否只能将该加载作业的输入(可能是CSV)用作Tableau的输入?

当我们使用Tableau和BigQuery时,我们也注意到提取缓慢但我们通常不这样做,因为你失去了BigQuery的能力。我们首先从实时数据连接开始,然后(如果需要)将其转换为自定义查询,该查询将该数据聚合成一个小得多的数据集,只需几秒钟即可提取。

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

答案 1 :(得分:1)

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

这是来自Google Cloud网站上的一篇文章,因此我认为这是最佳做法:

https://cloud.google.com/blog/products/gcp/the-switch-to-self-service-marketing-analytics-at-zulily-best-practices-for-using-tableau-with-bigquery

如果Tableau优化了BQ连接器以进行数据提取刷新,那就太好了。我们的Tableau Server环境也与BQ数据集位于同一GCP区域,并且刷新时间很慢。