Loops 在BigQuery中执行循环

Loops 在BigQuery中执行循环,loops,google-bigquery,Loops,Google Bigquery,我在BigQuery中有一个表,如下所示: Type Start_Date End_Date Total_Spend TV 20180101 20180131 10000 Radio 20180107 20180207 5000 我想运行一个查询,该查询运行一个循环,该循环创建一个表,该表将每一行拆分为一个每日表: Type Date Spend TV 20180101 322,6 TV 2018010

我在BigQuery中有一个表,如下所示:

Type    Start_Date  End_Date   Total_Spend
TV      20180101   20180131    10000
Radio   20180107   20180207    5000
我想运行一个查询,该查询运行一个循环,该循环创建一个表,该表将每一行拆分为一个每日表:

Type     Date      Spend
TV       20180101   322,6
TV       20180102   322,6
TV       20180103   322,6
TV       20180104   322,6
TV       20180105   322,6
TV       20180106   322,6
TV       20180107   322,6
...
TV       20180131   322,6
Radio    20180107   161,3
Radio    20180108   161,3
Radio    20180109   161,3
...
Radio    20180207   161,3
我想创建的do循环基本上如下所示:

do date=start_date to end_date;
    spend = total_spend/(end_date-start_date+1);

但我不知道在BigQuery中如何做到这一点。有什么想法或建议吗?

下面是针对BigQuery标准SQL的

#standardSQL
SELECT type, FORMAT_DATE('%Y%m%d', day) day, 
  ROUND(Total_Spend / ARRAY_LENGTH(GENERATE_DATE_ARRAY(PARSE_DATE('%Y%m%d', Start_Date), PARSE_DATE('%Y%m%d', End_Date))), 2) Spend
FROM `project.dataset.table`, UNNEST(GENERATE_DATE_ARRAY(PARSE_DATE('%Y%m%d', Start_Date), PARSE_DATE('%Y%m%d', End_Date))) day
您可以使用问题中的样本数据测试、播放上述内容,如下例所示

#standardSQL
WITH `project.dataset.table` AS (
  SELECT 'TV' Type, '20180101' Start_Date, '20180131' End_Date, 10000 Total_Spend UNION ALL
  SELECT 'Radio', '20180107', '20180207', 5000 
)
SELECT type, FORMAT_DATE('%Y%m%d', day) day, 
  ROUND(Total_Spend / ARRAY_LENGTH(GENERATE_DATE_ARRAY(PARSE_DATE('%Y%m%d', Start_Date), PARSE_DATE('%Y%m%d', End_Date))), 2) Spend
FROM `project.dataset.table`, UNNEST(GENERATE_DATE_ARRAY(PARSE_DATE('%Y%m%d', Start_Date), PARSE_DATE('%Y%m%d', End_Date))) day
-- ORDER BY Type, day