You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将BigQuery日数据按周一为周起始聚合为周数据时遇DATE_TRUNC报错求助

解决BigQuery中DATE_TRUNC报错并获取周一为起始的周聚合数据

报错原因

报错信息明确指出:Date字段是STRING类型,但DATE_TRUNC函数仅支持DATE、DATETIME或TIMESTAMP类型作为第一个参数,因此需要先将字符串格式的日期转换为DATE类型。

修正后的脚本

方法1:转换日期类型并指定周一为周起始

将Date字符串转换为DATE类型后,使用DATE_TRUNC(..., WEEK(MONDAY))设置周起始为周一:

INSERT INTO `table name` 

SELECT
  DATE_TRUNC(PARSE_DATE('%Y-%m-%d', Date), WEEK(MONDAY)) AS PARTITION_WEEK,
  COUNT(DISTINCT(clientId)) AS _DistClients
FROM `table name`
GROUP BY PARTITION_WEEK
ORDER BY PARTITION_WEEK DESC

注意:如果你的Date字段格式是YYYYMMDD(GA常见格式),请将PARSE_DATE的格式符改为'%Y%m%d'。

方法2:使用ISO周(默认周一为起始)

ISO周的定义就是以周一为一周的第一天,也可以直接用ISO_WEEK作为日期截断单位:

INSERT INTO `table name` 

SELECT
  DATE_TRUNC(PARSE_DATE('%Y-%m-%d', Date), ISO_WEEK) AS PARTITION_WEEK,
  COUNT(DISTINCT(clientId)) AS _DistClients
FROM `table name`
GROUP BY PARTITION_WEEK
ORDER BY PARTITION_WEEK DESC

验证结果

修正后查询返回的PARTITION_WEEK会是以周一为起始的日期,与你期望的结果格式一致:

PARTITION_WEEK_DistClients
2023-05-151234
2023-05-084321

内容的提问来源于stack exchange,提问作者Gary

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 07:37:44