尝试从旧版表中获取每月汇总数据。含义日期列是字符串:
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”
为什么不运行此查询以及可以采取哪些措施来避免此问题?
由于
答案 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