Получить интервал дней из запроса

У меня есть запрос, который возвращает строки за определенные дни с помощью _TABLE_SUFFIX вариант.

Мое предложение where изначально было таким:

WHERE _TABLE_SUFFIX  
BETWEEN FORMAT_DATE("%Y%m%d", DATE_SUB(CURRENT_DATE(), INTERVAL 2 DAY)) AND
FORMAT_DATE("%Y%m%d", DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))

Что работает, и как мне кажется, объем обрабатываемых данных составляет 139,5 МБ:

Дело в том, что я хочу, чтобы параметр "2" динамически загружался из таблицы, например:

WHERE _TABLE_SUFFIX  
  BETWEEN FORMAT_DATE("%Y%m%d", DATE_SUB(CURRENT_DATE(), INTERVAL 
  (select value from `path.to.days_interval_setting`) DAY)) AND
          FORMAT_DATE("%Y%m%d", DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))

Теперь, когда значение такое же (2) Согласно оценке, он будет обрабатывать 12,3 ГБ:

И на самом деле, похоже, это так, запрос занимает больше времени, но возвращаемые данные относятся к правильному количеству дней.

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

Кто-нибудь знает, как мне исправить эту проблему?

1 ответ

Решение

ОК, я нашел здесь ответ

Фильтры в _TABLE_SUFFIX, которые включают подзапросы, не могут использоваться для ограничения количества таблиц, сканируемых на предмет наличия подстановочной таблицы. Например, следующий запрос не ограничивает сканирование таблиц на предмет наличия подстановочной таблицы bigquery-public-data.noaa_gsod.gsod19*

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

Первый запрос:

#standardSQL
# Get the list of tables that match the required table name prefixes
SELECT SUBSTR(MAX(table_id), LENGTH('gsod19') + 1)
      FROM `bigquery-public-data.noaa_gsod.__TABLES_SUMMARY__`
      WHERE table_id LIKE 'gsod194%'

Второй запрос:

#standardSQL
# Construct the second query based on the values from the first query
SELECT
  ROUND((max-32)*5/9,1) celsius
FROM
  `bigquery-public-data.noaa_gsod.gsod19*`
WHERE _TABLE_SUFFIX = '49'
Другие вопросы по тегам