Запрос между двумя таблицами в одном наборе данных в BigQuery - PullRequest
0 голосов
/ 16 января 2020

Я пытаюсь сделать запрос между двумя таблицами. Первая таблица - это та, которая хранит всю информацию о событиях firebase, и я сосредотачиваюсь на поле, и это идентификатор пользователя, этот параметр отправляется в зашифрованном виде из установки событий по запросу клиента. Что я делаю, так это собираю каждый зашифрованный идентификатор пользователя, дешифрую его и создаю таблицу с зашифрованным и расшифрованным идентификатором пользователя. Когда я делаю запрос, сопоставление зашифрованных полей двух таблиц не дает мне никакой информации, но есть предупреждение, что по запросу не было получено никаких результатов. Я приведу пример того, как я делаю запрос.

#standardSQL
SELECT
  DISTINCT user_id AS registered_user,
  userid,
  userdescifrado
FROM
  `mi-firebase-app.analytics_152734570.events_20191118` a,
  `mi-firebase-app.analytics_152734570.user_id` b
WHERE 
  event_name = 'first_open'
AND 
  user_id != 'null'
AND
  a.user_id = b.userid
LIMIT 100

Структура таблицы Firebase

Создана структура таблицы, в которой размещен дешифрованный ИД пользователя

Ответы [ 2 ]

0 голосов
/ 18 января 2020

Во-первых, я рекомендую вам выполнить простой запрос, удалив дополнительные условия для проверки наличия зашифрованных идентификаторов пользователей, которые совпадают в обеих таблицах.

#standardSQL 
SELECT 
  DISTINCT user_id AS registered_user, userid, userdescifrado 
FROM 
  `mi-firebase-app.analytics_152734570.events_20191118` a, 
  `mi-firebase-app.analytics_152734570.user_id` b 
WHERE  
  a.user_id = b.userid 
LIMIT 100 

Если, выполнив вышеупомянутый запрос, вы все еще не получаете результаты, это может быть связано с пробелами в начале или / и конце каждой строки идентификатора пользователя, поэтому вы можете попробовать использовать Функция «TRIM» для их удаления, смотрите следующий пример:

#standardSQL 
SELECT 
  DISTINCT user_id AS registered_user, userid, userdescifrado 
FROM 
  `mi-firebase-app.analytics_152734570.events_20191118` a, 
  `mi-firebase-app.analytics_152734570.user_id` b 
WHERE  
  trim(a.user_id) = trim(b.userid) 
LIMIT 100 

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

0 голосов
/ 16 января 2020

Здесь я пробовал подобный запрос, чтобы увидеть, как это работает, запрос находится в stackoverflow бесплатных данных из Bigquery

SELECT
  DISTINCT a.user_id AS user_id_a,
  b.user_id as b,
  text
FROM
  `bigquery-public-data.stackoverflow.badges` a,
  `bigquery-public-data.stackoverflow.comments` b
WHERE 
  name = 'Teacher'
AND 
  a.user_id IS NOT NULL
AND
  a.user_id = b.user_id
LIMIT 100

И это дает некоторые результаты. Разница с вашим запросом заключается в проверке IS NOT NULL. В моем случае столбец user_id равен INTEGER

. Возможно, в выбранном вами разделе нет данных для вашего запроса? Возможно, используйте больший интервал времени там.

Результаты запроса

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