【问题标题】:Bigquery and TableauBigquery 和 Tableau
【发布时间】:2019-11-19 18:02:17
【问题描述】:

我将 Tableau 与 Bigquery 连接起来,并在 Dash 板上工作。听到的问题是 Bigquery 对每次查询选择的数据收费。

我的表是 200GB 数据。当有人在 Tableau 上查询仪表板时,它会在总查询上运行。使用仪表板上的任何过滤器,它会再次在总表上运行。

在 200GB 数据上,如果有人对不同的分析进行 5 次过滤,bigquery 将计算 200*5 = 1 TB(几乎)。在测试分析的一天中,我们被收取了 30TB 的分析费用。但是后面的表只有200GB。无论如何,每次有任何更改时,我都可以限制 Tableau 在 Bigquery 上的总数据上运行吗?

【问题讨论】:

  • 这个问题的一个问题是它关于配置工具而不是关于编程

标签: google-bigquery tableau-api


【解决方案1】:

Tableau 中的提取确实是一种有效的策略。但仅当您使用自定义查询时。如果您直接访问该表,它将无法正常工作,因为这会将 200Gb 下载到您的计算机上。

限制数据量的其他选项有:

  • 不调用任何您不需要的列。通过在 Tableau 中隐藏未使用的字段来做到这一点。它不会在发送到 BigQuery 的查询中包含这些字段。否则,它是一个 SELECT *,然后即使您不使用这些字段,您也需要支付全部 200Gb 的费用。
  • 我们经常使用的另一个选项是对我们的表进行分区。例如,如果您有日期字段,则每天的数据分区。使用 TABLE_DATE_RANGE 和 TABLE_QUERY 函数,您可以巧妙地限制分区数量,从而限制 Tableau 将查询的行数。我通常将这些表通配符函数的复杂性隐藏在视图中。然后我使用 Tableau 中的视图。另一种选择是使用 Tableau 中的参数来控制 TABLE_DATE_RANGE。

【讨论】:

    【解决方案2】:

    1) 我现在也在学习 BQ + Tableau。而且我发现 Tableau 中的 BQ 必须使用“提取”。使用此选项,您还可以节省构建仪表板的时间。所以我当前的管道是“构建查询 > 将其添加到 Tableau > 制作仪表板 > 将仪表板上传到 Tableau Online > 为 Extract 计划更新

    2) 您可以向 Google 发送 Custom Quota Request 并设置每个项目/每个用户的限制。

    3) 如果您的每个查询每次触及 200GB,请考虑优化这些查询(不要使用 SELECT *,仅使用您需要的日期等)

    【讨论】:

    • 感谢您的 cmets。您如何安排从 BQ 到 Tableau Server 的数据提取。 Tableau Server 的配置应该是什么。它会影响 Tableau Dashboard 的运行速度吗?
    • 你可以在这里找到信息onlinehelp.tableau.com/current/server/en-us/publish.htm。我认为它使仪表板更快,因为您无需在每次访问它们时都询问数据。
    【解决方案3】:

    我发现的最佳方法是根据没有时间戳的日期(日)字段在 BQ 中对表进行分区。 BQ 允许您按天级别字段对表进行分区。这里重要的是,即使该字段是没有时间戳的日期/日期,它也应该是 BQ 表中的 TIMESTAMP 数据类型。也就是说,您最终会在 BQ 中得到一列,其中的数据如下所示:

    2018-01-01 00:00:00.000 UTC
    

    该字段需要是 TIMESTAMP 数据类型(即使数据中没有时间)的原因是,当您在 Tableau 中创建可视化项时,它会生成 SQL 以针对 BQ 运行,并让分区字段由Tableau 生成的 SQL 必须是 TIMESTAMP 数据类型。

    在 Tableau 中,您应该始终对分区字段进行过滤,而 BQ 只会扫描过滤器范围内的行。

    我尝试对 DATE 数据类型进行分区,并在 GCP 中查找日志,发现正在扫描整个表。更改为 TIMESTAMP 解决了这个问题。

    【讨论】:

      【解决方案4】:

      关于 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 仅支持日期分区),以便您可以限制数据使用。

      【讨论】:

        猜你喜欢
        • 2017-06-23
        • 2022-09-28
        • 2021-10-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-18
        • 1970-01-01
        相关资源
        最近更新 更多