Google Looker Studio - Google 数据工作室 |在 BigQuery 数据源中使用 table_suffix 过滤器性能不佳

问题描述 投票:0回答:1

语境

嗨, 在 bigquery 中,我有一个按 0 到 999 之间的整数分区的表。 每次我在 Looker Studio 中使用此数据源进行报告时,我都会使用参数过滤此列以获得正确的分区;之后,在日期列上使用另一个过滤器。 查询很快但非常昂贵。

目标

为了降低成本,我在我的大查询项目中将表分成了1000张通配符表,并以日期作为所有分区的分区。

所以,

  • 之前:我有 my_project.big_table 按 id 分区;
  • 现在:我有 my_project.table_ 按日期分区,我可以使用 table_suffix 得到正确的表

在 Looker Studio 中,我将数据源的自定义查询更改为:

SELECT a.*
FROM `my_project.big_table` AS a
WHERE a.date BETWEEN PARSE_DATE('%Y%m%d', @DS_START_DATE) AND PARSE_DATE('%Y%m%d', @DS_END_DATE)
      AND a.id = @id1     
      AND a.user_email =    @DS_USER_EMAIL

到:

SELECT a.*
FROM `my_project.table_*` AS a
WHERE a.date BETWEEN PARSE_DATE('%Y%m%d', @DS_START_DATE) AND PARSE_DATE('%Y%m%d', @DS_END_DATE)
      AND a._TABLE_SUFFIX = @id1      
      AND a.user_email =    @DS_USER_EMAIL

问题描述

上述更改导致仪表板性能出现严重问题。 现在每个页面花费超过 5' 来给我结果,而之前页面加载时间不到 10''。

我尝试使用:

  • FROM SQL中直接参数@id1但是没有自动代入导致错误
    Not found: Table my_project.table_@{id1} was not found in location EU 
  • an EXECUTE IMMEDIATE 但工具无法识别

当我尝试直接使用 1k 表后缀之一时,例如 id 400:

SELECT a.*
FROM `my_project.table_400` AS a
WHERE a.date BETWEEN PARSE_DATE('%Y%m%d', @DS_START_DATE) AND PARSE_DATE('%Y%m%d', @DS_END_DATE)
      AND a.user_email =    @DS_USER_EMAIL

表演和以前一模一样,但是,我必须过滤报告。

我知道通配符表在很多方面都有限制(例如缓存) 但是,在 BigQuery 上测试查询,花费的时间是 0/1 秒。

有什么我想念的/我可以在查询中更改的吗? 你有什么意见/建议吗?

非常感谢!

google-bigquery reporting google-data-studio
1个回答
0
投票

正如 OP 提到的,这是使用 Table Function 解决的。

Table Function 的行为就像 VIEW 但可以动态使用,因为它可以接受参数。

将答案发布为 community wiki 以造福于将来可能遇到此用例的社区。

随时编辑此答案以获取更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.