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

Cannot use calculated offset in BigQuery's DATE_ADD function

我正在尝试在 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 总是 returns 错误:

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 中进行多次偏移。

感谢您的帮助!

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

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

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