Google bigquery 将列值作为日期部分参数传递

Google bigquery 将列值作为日期部分参数传递,google-bigquery,Google Bigquery,我试图生成一个工作日的字符串数组,并使用它查找一个月内每天出现的次数 我在BigQuery上使用标准sql 我的问题看起来像 with weeks as (select array['SUNDAY','MONDAY','TUESDAY','WEDNESDAY','THURSDAY','FRIDAY','SATURDAY'] as wk) select DATE_DIFF('2019-01-31','2019-01-01',WEEK(wk)) AS week_weekday_diff from

我试图生成一个工作日的字符串数组,并使用它查找一个月内每天出现的次数

我在BigQuery上使用标准sql

我的问题看起来像

with weeks as (select array['SUNDAY','MONDAY','TUESDAY','WEDNESDAY','THURSDAY','FRIDAY','SATURDAY'] as wk)
select DATE_DIFF('2019-01-31','2019-01-01',WEEK(wk)) AS week_weekday_diff 
from weeks, unnest(wk) as wk

但是,查询失败,出现错误
,需要一个星期的有效日期部分参数,但找到wk
。wk是一个列值,包含周中的天数,
Week
是一个函数,它需要文本
DAYOFWEEK
。是否有一种方法可以将列值作为参数传递

尝试您的查询时,我注意到返回的错误是:

select DATE_DIFF('2019-01-31','2019-01-01',WEEK('WEDNESDAY')) AS week_weekday_diff; 
由于功能周()预计会出现以下情况:

select DATE_DIFF('2019-01-31','2019-01-01',WEEK(`WEDNESDAY`)) AS week_weekday_diff; 


我认为WEEK()只接受公开格式的WEEKDAY,因此任何字符串都不应有效。

下面是BigQuery标准SQL

错误“需要周的有效日期部分参数,但找到wk”

结果

Row weekday     cnt  
1   SUNDAY      4    
2   MONDAY      4    
3   TUESDAY     5    
4   WEDNESDAY   5    
5   THURSDAY    5    
6   FRIDAY      4    
7   SATURDAY    4    
WEEK(<WEEKDAY>): Valid values for WEEKDAY are literal SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, and SATURDAY.   
#standardSQL
WITH weekdays AS (SELECT ['SUNDAY','MONDAY','TUESDAY','WEDNESDAY','THURSDAY','FRIDAY','SATURDAY'] AS wk)
SELECT wk[ORDINAL(pos)] weekday, COUNT(1) cnt
FROM weekdays, 
  UNNEST(GENERATE_DATE_ARRAY('2019-01-01','2019-01-31')) day, 
  UNNEST([EXTRACT(DAYOFWEEK FROM day)]) pos
GROUP BY pos, weekday
ORDER BY pos
Row weekday     cnt  
1   SUNDAY      4    
2   MONDAY      4    
3   TUESDAY     5    
4   WEDNESDAY   5    
5   THURSDAY    5    
6   FRIDAY      4    
7   SATURDAY    4