BigQuery - DATE_TRUNC错误

时间:2018-03-20 10:32:48

标签: date google-bigquery standard-sql

尝试从旧版表中获取每月汇总数据。含义日期列是字符串:

amount  date_create
100     2018-01-05
200     2018-02-03
300     2018-01-22

然而,命令

 Select DATE_TRUNC(DATE date_create, MONTH) as month, 
        sum(amount) as amount_m 
 from table  
 group by 1

返回以下错误:

  

错误:语法错误:预期“)”但得到标识符“date_create”

为什么不运行此查询以及可以采取哪些措施来避免此问题?

由于

4 个答案:

答案 0 :(得分:2)

看起来您打算使用df <- data.frame(classes = rep(LETTERS[1:2], c(4,3)), inc.num = c(3,5,6,10,1,2,10)) 而不是使用date_create关键字(这是您构建文字值的方式)。试试这个:

DATE

答案 1 :(得分:1)

我明白了:

date_trunc(cast(date_create as date), MONTH) as Month

答案 2 :(得分:1)

BigQuery Standard SQL的另一个选项 - 使用PARSE_DATE函数

   
#standardSQL
WITH `project.dataset.table` AS (
  SELECT 100 amount, '2018-01-05' date_create UNION ALL
  SELECT 200, '2018-02-03' UNION ALL
  SELECT 300, '2018-01-22' 
)
SELECT 
  DATE_TRUNC(PARSE_DATE('%Y-%m-%d', date_create), MONTH) AS month, 
  SUM(amount) AS amount_m 
FROM `project.dataset.table`  
GROUP BY 1  

结果为

Row month       amount_m     
1   2018-01-01  400  
2   2018-02-01  200  

在实践中 - 我更喜欢PARSE_DATE而不是CAST,因为之前的文档期望数据格式

答案 3 :(得分:0)

尝试在date_creat中添加双引号:

Select DATE_TRUNC('date_create', MONTH) as month, 
        sum(amount) as amount_m 
 from table  
 group by 1