BigQuery не работает должным образом в функциях Firebase - PullRequest
1 голос
/ 02 июня 2019

Я пытаюсь выполнить запрос в BigQuery с использованием функций Firebase.Когда я тестирую запрос, выполняющий функцию локально или в консоли 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) <= (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='EBtcJEsCHXN' AND event_name = 'EVENT_A' OR event_name = 'EVENT_B' OR event_name = 'EVENT_C'

Я не вижу никаких проблем в коде, особенно потому, что у меня есть другая функция, которая использует тот же код, но другой запрос, и он работает, как ожидалось.

Есть идеи, почему это не работает?

1 Ответ

1 голос
/ 02 июня 2019

Распечатайте запрос.Я уверен, что у вас есть несколько ошибок, как синтаксических, так и логических.Например, предложение 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() с миллисекундами в метке времени кажется очень подозрительным.

Я бы предложил вам задать новый вопрос с примерами данных, желаемыми результатами и объяснением логики, которую вы пытаетесь реализовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...