我将Tableau与Bigquery一起使用,并且正在使用Dash板。问题听到的是Bigquery对每次查询选择的数据的收费。
我的表是200GB数据。当某人查询Tableau上的仪表板时,它会在总查询上运行。使用仪表板上的任何过滤器,它将在总表上再次运行。
在200GB数据上,如果有人在不同分析中做了5个过滤器,则bigquery计算200 * 5 = 1 TB(差不多)。在测试分析的一天中,我们收取了30TB分析的费用。但是后面的表只有200GB。无论如何,每当有任何变化时,我可以限制Tableau运行Bigquery上的总数据吗?
答案 0 :(得分:1)
1)现在我也在学习BQ + Tableau。我发现Tableau中的BQ必须使用“Extract”。使用此选项,您还可以节省构建仪表板的时间。因此,我当前的管道是“构建查询>将其添加到Tableau>制作仪表板>将仪表板上载到Tableau Online>提取更新提取
2)您可以向Google发送Custom Quota Request并为每个用户/每个用户设置限制。
3)如果您的每个查询每次触摸200GB,请考虑优化这些查询(不要使用SELECT *,只使用您需要的日期等)
答案 1 :(得分:1)
Tableau中的摘录确实是一种有效的策略。但仅当您使用自定义查询时。如果您直接访问该表,则无法将200Gb下载到您的计算机上。
限制数据量的其他选项包括:
答案 2 :(得分:1)
我发现的最佳方法是根据没有时间戳的日期(日)字段在BQ中对表进行分区。 BQ允许您按日级别字段对表进行分区。这里重要的是,即使字段是没有时间戳的日期/日期,它也应该是BQ表中的TIMESTAMP数据类型。即你最终会在BQ中找到一个列,其数据如下:
2018-01-01 00:00:00.000 UTC
字段需要是TIMESTAMP数据类型的原因(即使数据中没有时间)是因为当您在Tableau中创建一个viz时,它将生成针对BQ运行的SQL以及要使用的分区字段Tableau生成的SQL需要是TIMESTAMP数据类型。
在Tableau中,您应始终对分区字段进行过滤,而BQ仅扫描过滤器范围内的行。
我尝试在DATE数据类型上进行分区,并在GCP中查找日志,并看到正在扫描整个表。更改为TIMESTAMP修复此问题。
答案 3 :(得分:0)
关于tableau和Big Query的事情是tableau使用您的查询(实时查询)计算过滤器值。我在项目日志中看到的是,它会根据您自己的查询创建过滤器。
select 'Custom SQL Query'.filtered_column from ( your_actual_datasource_query ) as 'Custom SQL Query' group by 'Custom SQL Query'.filtered_column
相反,尝试使用增量提取来创建tableau数据源,并尝试对查询日期进行分区(Big Query仅支持日期分区),以便限制数据使用。