После внимательного прочтения вами комментариев о ваших фиктивных данных и о том, что вы ожидали. Я могу предложить вам использовать псевдостолбец _PARTITIONTIME . Согласно документации :
При создании секционированной таблицы времени приема в таблицу добавляются два псевдостолбца: псевдостолбец _PARTITIONTIME и псевдостолбец _PARTITIONDATE. Псевдостолбец _PARTITIONTIME содержит основанную на дате метку времени для данных, загружаемых в таблицу. Псевдостолбец _PARTITIONDATE содержит представление даты. Оба псевдоколонка имен зарезервированы, это означает, что вы не можете создать столбец с любым именем в любой из ваших таблиц.
Поэтому вы можете выбрать MAX (_PARTITIONTIME) для каждой таблицы, используя псевдостолбец. Я использовал набор данных publi c, чтобы показать, как он работает.
Сначала я записал свои результаты в секционированную таблицу времени приема:
bq query \
--destination_table your_project:your_dataset.partitioned_table \
--time_partitioning_type=DAY \
--use_legacy_sql=false \
'SELECT
name,
number
FROM
`bigquery-public-data`.usa_names.usa_1910_current
WHERE
gender = "M"
ORDER BY
number DESC'
Затем в консоли я использовал созданную секционированную таблицу времени для выбора MAX (_PARTITIONTIME) .
SELECT
MAX(_PARTITIONTIME) AS max_part_date
FROM
`your_project.your_dataset.partitioned_table`
WHERE
DATE(_PARTITIONTIME) = "2020-01-16"
LIMIT
1000
И вывод:
Надеюсь, это поможет.