BigQuery:加入日期非常慢 _table_suffix

BigQuery: very slow join on date and _table_suffix

在我的查询中,我希望从分区 table 中获取数据,其中每个用户都需要不同的分区,具体取决于用户特定的日期。这需要我加入用户和日期 = 分区。这个连接非常非常慢。大约需要 12 分钟才能到达 运行!

查询的基本结构如下:

SELECT
 t1.user_id
 ,t1.date
 ,t2.some_field
FROM `t1`   AS t1
JOIN `t2_*` AS t2
 ON t1.user_id = t2.user_id
 AND t2._table_suffix = FORMAT_DATE("%Y%m%d", t1.date)

如何更快地获得相同的结果?

一些加快查询速度的事情(从 12 分钟到 1 分钟):

  1. 将 t2 table 预过滤到与 t1
  2. 连接相关的分区
  3. 将日期字段添加到 t2 的 CTE 以加快与 t1 的连接

看起来像这样:

WITH t1_dates AS (
 SELECT
 MIN(date) min_date
 ,MAX(date max_date
 FROM
 `t1`
)

, t2_v2 AS (
 SELECT
 user_id
 ,some_field
 ,PARSE_DATE("%Y%m%d", t2._table_suffix) date

 from t2_*
 ,t1_dates

 where _table_suffix BETWEEN FORMAT_DATE("%Y%m%d",t1_dates.min_date) 
                         AND FORMAT_DATE("%Y%m%d",t1_dates.max_date) 
)

SELECT
 t1.user_id
 ,t1.date
 ,t2.some_field
FROM `t1`   AS t1
JOIN t2_v2 AS t2
 ON t1.user_id = t2.user_id
 AND t2.date = t1.date