首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在BigQuery的DATE_ADD函数中使用计算的偏移量

无法在BigQuery的DATE_ADD函数中使用计算的偏移量
EN

Stack Overflow用户
提问于 2015-06-01 10:01:29
回答 2查看 250关注 0票数 1

我试图在Tableau中创建一个自定义查询,以便在谷歌的BigQuery上使用。目标是在Tableau中有一个偏移量参数,该参数可以更改基于date的WHERE子句中使用的偏移量。

在Tableau,它看起来是这样的:

代码语言:javascript
复制
  SELECT
DATE_ADD(UTC_USEC_TO_MONTH(CURRENT_DATE()),<Parameters.Offset>-1,"MONTH") as month_index,
COUNT(DISTINCT user_id, 1000000) as distinct_count
  FROM
[Orders]
  WHERE
order_date >= DATE_ADD(UTC_USEC_TO_MONTH(CURRENT_DATE()),<Parameters.Offset>-12,"MONTH")
  AND
order_date < DATE_ADD(UTC_USEC_TO_MONTH(CURRENT_DATE()),<Parameters.Offset>-1,"MONTH")

但是,BigQuery总是返回一个错误:

代码语言:javascript
复制
Error: DATE_ADD 2nd argument must have INT32 type.

当我使用简单算法在BigQuery编辑器中尝试相同的查询时,同样的错误会失败。

代码语言:javascript
复制
SELECT
DATE_ADD(UTC_USEC_TO_MONTH(CURRENT_DATE()),5-3,"MONTH") as month_index,
  FROM [Orders]

有什么解决办法吗?看来,到目前为止,我唯一的选择是在Tableau中做多个偏移。

谢谢你的帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-01 16:46:51

我承认这是DATE_ADD功能的一个漏洞。它可以被修复,但它需要一段时间才能将fix投入生产。

票数 2
EN

Stack Overflow用户

发布于 2015-06-02 05:30:58

这里有一个可能的解决办法。如果DATE_ADD的第一个参数是一个字符串,那么它似乎是可行的。然后,您可以将结果截断为一个月边界,并将其从时间戳转换为字符串。

代码语言:javascript
复制
SELECT
FORMAT_UTC_USEC(UTC_USEC_TO_MONTH(DATE_ADD(CURRENT_DATE(),5-3,"MONTH"))) as month_index;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30570579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档