Google BigQuery: ВЫБРАТЬ только из новейших таблиц

У меня есть таблицы Big Query, как показано ниже, и мне нравится выдавать запрос к новейшим таблицам для каждой группы (отмечен <=)

prefix_AAAAAAA_20170329012345
             :
prefix_AAAAAAA_20170413032333
prefix_AAAAAAA_20170413112205 <=
prefix_BBBBBBB_20170327233456
             :
prefix_BBBBBBB_20170414012244
prefix_BBBBBBB_20170414130509 <=
prefix_CCCCCCC_20170327154412
             :
prefix_CCCCCCC_20170414090022
prefix_CCCCCCC_20170414091530 <=

как и мой предыдущий вопрос, я пытался использовать TABLE_QUERY, Но я не мог найти путь.

Как я могу это сделать? Или я могу сделать это с помощью таблицы подстановочных знаков в стандартном SQL?

1 ответ

Решение

Попробуй ниже

#standardSQL
SELECT *
FROM `yourProject.yourDataset.prefix_*`
WHERE _TABLE_SUFFIX IN (
  SELECT SUBSTR(CONCAT(t, d), LENGTH('prefix_') + 1) AS tbl
  FROM (
    SELECT SUBSTR(table_id, 1, LENGTH(table_id) - 14) AS t, MAX(SUBSTR(table_id, -14)) AS d
    FROM `yourProject.yourDataset.__TABLES__`
    WHERE SUBSTR(table_id, 1, LENGTH('prefix_')) = 'prefix_' AND LENGTH(table_id) > 14
    GROUP BY t
  )
)  

Примечание: число 14 в приведенном выше запросе происходит от длины суффикса, связанного с датой и временем, в ваших таблицах

префикс_AAAAAAA_20170329012345

Другие вопросы по тегам