【问题标题】:BigQuery not working properly in Firebase FunctionsBigQuery 在 Firebase 函数中无法正常工作
【发布时间】:2019-10-18 07:11:28
【问题描述】:

我正在尝试使用 Firebase 函数对 BigQuery 进行查询。当我测试在本地或在 BigQuery 控制台中运行该函数的查询时,它会正确返回。但是当我将该函数部署到 Firebase 并发出请求时,它返回空: [ [] ].

我使用的代码是:

functions.https.onRequest((req, res) => {
    const { id } = req.body;
    const query = "SELECT (CASE WHEN COUNTIF((event_timestamp / 1000) <= (UNIX_MILLIS(CURRENT_TIMESTAMP()) - 172800000) OR event_name = 'EVENT_A' OR event_name = 'EVENT_B' ) >= 1 THEN TRUE ELSE FALSE END) UserIsMature FROM `analytics_table` WHERE user_id='" + id + "AND event_name = 'EVENT_A' OR event_name = 'EVENT_B' OR event_name = 'EVENT_C'"

    bigQuery.query(query).then(result => response.send(result))
});

例如,正在运行的查询是: SELECT (CASE WHEN COUNTIF((event_timestamp / 1000) &lt;= (UNIX_MILLIS(CURRENT_TIMESTAMP()) - 172800000) OR event_name = 'EVENT_A' OR event_name = 'EVENT_B' ) &gt;= 1 THEN TRUE ELSE FALSE END) UserIsMature FROM `analytics_table` WHERE user_id='EBtcJEsCHXN' AND event_name = 'EVENT_A' OR event_name = 'EVENT_B' OR event_name = 'EVENT_C'

我在代码中看不到任何问题,尤其是因为我有另一个函数使用相同的代码,但查询不同,它按预期工作。

知道为什么它不起作用吗?

【问题讨论】:

  • 您声明了id,但从不使用它。这是你的意图吗?
  • @ThiagoNascimento。 . .通过打印出 query 来编辑查询并显示实际正在运行的查询。
  • 完成,刚刚使用查询进行了编辑

标签: sql firebase google-bigquery google-cloud-functions


【解决方案1】:

打印出查询。我很确定你有多个错误,包括语法和逻辑。例如,WHERE 子句似乎是:

WHERE user_id='1 AND event_name = 'EVENT_A' OR event_name = 'EVENT_B' OR event_name = 'EVENT_C'

1 是一个插入值)。

当您可能打算时:

WHERE user_id = 1 AND event_name IN ('EVENT_A', 'EVENT_B', 'EVENT_C')

同样,将COUNTIF() 与时间戳中的毫秒进行比较似乎非常可疑。

我建议您提出一个新的问题,其中包含示例数据、期望的结果以及您尝试实现的逻辑的解释。

【讨论】:

  • 查询在本地或通过大查询控制台运行时按预期工作。所以看起来不是语法错误
猜你喜欢
  • 2019-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多