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

时间:2015-06-01 10:01:30

标签: google-bigquery tableau google-cloud-platform

我正在尝试在Tableau中创建自定义查询,以便在Google的BigQuery上使用。目标是在Tableau中使用偏移参数来更改基于日期的WHERE子句中使用的偏移量。

在Tableau中,它看起来像这样:

  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总是返回错误:

Error: DATE_ADD 2nd argument must have INT32 type.

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

SELECT
DATE_ADD(UTC_USEC_TO_MONTH(CURRENT_DATE()),5-3,"MONTH") as month_index,
  FROM [Orders]

对此有何解决方法?到目前为止,我唯一的选择是在Tableau中进行多次偏移,似乎。

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

SELECT
FORMAT_UTC_USEC(UTC_USEC_TO_MONTH(DATE_ADD(CURRENT_DATE(),5-3,"MONTH"))) as month_index;