У меня есть набор данных, содержащий несколько таблиц с одинаковыми именами:
например
affilinet_4221_first_20180911_204956
affilinet_4221_first_20180911_160004
affilinet_4221_first_20180911_085559
affilinet_4221_first_20180910_201323
affilinet_4221_first_20180910_201042
affilinet_4221_first_20180910_080006
affilinet_4221_first_20180909_160707
Этот запрос идентифицирует самый последний набор данных (в соответствии с соглашением об именах yyyymmdd_hhmmss) с __ TABLES_SUMMARY __ методом
SELECT max(table_id) as table_id FROM `modemutti-8d8a6.feed_first.__TABLES_SUMMARY__`
where table_id LIKE "affilinet_4221_first_%"
10 *
этот запрос извлекает все значения из определенной таблицы с помощью _TABLE_SUFFIX метод
SELECT * FROM `modemutti-8d8a6.feed_first.*`
WHERE _TABLE_SUFFIX = "affilinet_4221_first_20180911_204956"
результат запроса
Thisзапрос объединяет __ TABLES_SUMMARY __ (который возвращает affilinet_4221_first_20180911_204956
) и _TABLE_SUFFIX
SELECT * FROM `modemutti-8d8a6.feed_first.*`
WHERE _TABLE_SUFFIX = (
SELECT max(table_id) FROM `modemutti-8d8a6.feed_first.__TABLES_SUMMARY__`
where table_id LIKE "affilinet_4221_first_%")
этот запрос завершается ошибкой:
Ошибка: не удается прочитатьполе 'modemio_cat_level' типа INT64 как STRING
скриншот с ошибкой
есть идеи, почему это происходит или как я могу решить эту проблему?
------------ РЕДАКТИРОВАТЬ------------
@ Михаил работает правильно, но обрабатывает огромное количество данных.См. явный вызов против предложенного метода .Другим решением было бы
SELECT * FROM `modemutti-8d8a6.feed_first.affilinet_4221_first_*` WHERE _TABLE_SUFFIX =
(
SELECT MAX(_TABLE_SUFFIX) FROM`modemutti-8d8a6.feed_first.affilinet_4221_first_*`
)
, но этот обрабатывает также намного больший объем данных по сравнению с явным запросом .Есть ли способ добиться с помощью представления в пользовательском интерфейсе или лучше использовать Python / Java SDK через API?