Google bigquery 带有subselect的BigQuery通配符日期范围似乎返回null

Google bigquery 带有subselect的BigQuery通配符日期范围似乎返回null,google-bigquery,Google Bigquery,我正在尝试创建一个季度报告,其中一些日期是通过查找查询生成的。输入为开始日期=20181001和结束日期=20191231。虽然我可以查询整个范围,但我不需要Q1/2/3,所以我会在日期之间动态生成 当我在带有table\u后缀的子查询中使用它们时,问题就出现了 动态生成的不起作用;它看起来返回null并查询整个表,而不是日期分区的表。但是当我在子查询中硬编码值时,它们工作得很好 如果我查询两个日期查找表,它们看起来是相同的 . 所以我不知道这个错误是从哪里来的 CREATE TEMP FUNC

我正在尝试创建一个季度报告,其中一些日期是通过查找查询生成的。输入为
开始日期=20181001
结束日期=20191231
。虽然我可以查询整个范围,但我不需要
Q1/2/3
,所以我会在
日期之间动态生成

当我在带有
table\u后缀的子查询中使用它们时,问题就出现了

动态生成的不起作用;它看起来返回null并查询整个表,而不是日期分区的表。但是当我在子查询中硬编码值时,它们工作得很好

如果我查询两个日期查找表,它们看起来是相同的 . 所以我不知道这个错误是从哪里来的

CREATE TEMP FUNCTION  start_end() AS ( [parse_date('%Y%m%d','{start_date}'), parse_date('%Y%m%d','{end_date}')] );
CREATE TEMP FUNCTION wildcard_format(date_object date) as (replace(cast(date_object as string),"-",""));

-- create a calendar table 1 column "day" and one row for each day in the desired timeframe
WITH
  calendar AS (
  SELECT
    extract(quarter from day) quarter
    ,extract(year from day) year
    ,day
  FROM
    UNNEST(GENERATE_DATE_ARRAY( start_end()[OFFSET(0)], start_end()[OFFSET(1)], INTERVAL 1 DAY) ) AS day 
),

dynamically_created as (
select 
    wildcard_format(min(day))  start_py
    ,wildcard_format(max(case when year = extract (year from parse_date('%Y%m%d','{start_date}')) then day else null end))  end_py
    ,wildcard_format(min(case when year = extract (year from parse_date('%Y%m%d','{end_date}')) then day else null end))  start_cy
    ,wildcard_format(max(day)) end_cy
from 
   calendar 
where quarter = extract (quarter from parse_date('%Y%m%d','{end_date}'))
),

hard_coded as (
  SELECT 
    '20181001' as start_py
    ,'20181231' as end_py
    ,'20191001' as start_cy
    ,'20191231' as end_cy    
),

sesh_data as (
select 
    *
from 
`projectid.datasetid.summary_*` 
where  
    (SELECT _table_suffix between start_py AND end_py FROM dynamically_created) #not working
    (SELECT _table_suffix between start_py AND end_py FROM hard_coded) #working
),

select * from sesh_data

刚刚注意到图像是错误的,它只显示了10月份的日期范围。与讨论的问题无关,但您能提供一点数据样本吗?不幸的是,如果没有漫长的批准流程,就不能。我假设这个问题在任何通配符表上都会出现。我说你在复制问题时遇到了困难,对吗?是的,我不知道你的数据到底是怎样的