Как использовать EXISTS в BigQuery и получить то, что соответствует прошлому журналу

Я хочу знать. Кто-нибудь, кто получил доступ сегодня, получил доступ в прошлом? Число людей.

SELECT
  COUNT(user_id) AS repeater_user_count
FROM
  [access_log] AS table1
WHERE
  _PARTITIONTIME = TIMESTAMP('2017-02-28')
AND
  EXISTS
  (
    SELECT
      1
    FROM
      [access_log] AS table2
    WHERE
      _PARTITIONTIME BETWEEN TIMESTAMP('2017-01-31') AND TIMESTAMP('2017-02-27')
    AND
      table1.user_id = table2.user_id
  )

Однако пользовательский интерфейс BigQuery выдает ошибку.

Error: error at: 8.1 - 13.184. Only one query can be executed at a time.

Как я могу сослаться на ту же таблицу BigQuery?

Благодарю.

2 ответа

Убедитесь, что сначала включен стандартный SQL. Например,

#standardSQL
SELECT
  COUNT(user_id) AS repeater_user_count
FROM
  `access_log` AS table1
WHERE
  _PARTITIONTIME = '2017-02-28'
AND
  EXISTS
  (
    SELECT
      1
    FROM
      `access_log` AS table2
    WHERE
      _PARTITIONTIME BETWEEN '2017-01-31' AND '2017-02-27'
    AND
      table1.user_id = table2.user_id
  );

Еще один вариант для рассмотрения

#standardSQL
SELECT COUNT(user_id) AS repeater_user_count
FROM (
  SELECT DISTINCT user_id 
  FROM `access_log` 
  WHERE _PARTITIONTIME = '2017-02-28'
  )
WHERE user_id IN (
  SELECT DISTINCT user_id 
  FROM `access_log` 
  WHERE _PARTITIONTIME BETWEEN '2017-01-31' AND '2017-02-27'
  )
Другие вопросы по тегам