Google bigquery 使用来自联接表的引用在BigQuery中查询分区表

Google bigquery 使用来自联接表的引用在BigQuery中查询分区表,google-bigquery,Google Bigquery,我想运行一个查询,使用表B中的值对表a进行分区。 例如: #standard SQL select A.user_id from my_project.xxx A inner join my_project.yyy B on A._partitiontime = timestamp(B.date) where B.date = '2018-01-01' 此查询将扫描表A中的所有分区,并且不考虑我在where子句中指定的用于分区的日期。我尝试过以几种不同的方式运行这个查询,但都产生了相同的结果—

我想运行一个查询,使用表B中的值对表a进行分区。 例如:

#standard SQL
select A.user_id
from my_project.xxx A
inner join my_project.yyy B
on A._partitiontime = timestamp(B.date)
where B.date = '2018-01-01'
此查询将扫描表A中的所有分区,并且不考虑我在where子句中指定的用于分区的日期。我尝试过以几种不同的方式运行这个查询,但都产生了相同的结果——扫描表A中的所有分区。 有什么办法吗

提前感谢。

关于您的用例:

尽可能接近表来表示谓词筛选器 标识符。需要计算多个参数的复杂查询 用于解析谓词的查询的阶段,例如内部 查询或子查询不会从查询中删除分区

以下查询不修剪分区注意子查询的使用:

#standardSQL
SELECT
  t1.name,
  t2.category
FROM
  table1 t1
INNER JOIN
  table2 t2
ON
  t1.id_field = t2.field2
WHERE
  t1.ts = (SELECT timestamp from table3 where key = 2)
现在有了BigQueryBeta,就有了一种修剪分区的方法

基本上,定义脚本变量来捕获子查询的动态部分。然后,在后续的查询中,脚本变量被用作过滤器来修剪要扫描的分区

声明日期过滤器数组 默认选择数组_AGGdate FROM B,其中。。。; 选择一个用户标识 来自我的_project.xxx A 内部加入我的_项目.yyy B 在A.。_partitiontime=timestampB.date上 其中,UNNESTdate过滤器中的.\u分区时间
恐怕这个解决方案也会扫描整个表。。查询首先扫描表1中的所有分区,然后根据表3应用的条件筛选相关数据。如果您阅读了我的消息,我确认这会扫描所有表,而不会删除分区,这意味着它会扫描所有表。感谢奔腾10。我刚意识到你在陈述谷歌文档。。如果我理解正确,那么我的问题的答案是——没有办法使用不同表中的值来修剪分区。