Google bigquery 将列值作为日期部分参数传递
我试图生成一个工作日的字符串数组,并使用它查找一个月内每天出现的次数 我在BigQuery上使用标准sql 我的问题看起来像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
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(
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