Google bigquery 选择大查询数据集中的最新表-标准SQL语法

Google bigquery 选择大查询数据集中的最新表-标准SQL语法,google-bigquery,Google Bigquery,我的数据集包含多个具有类似名称的表: e、 g 首先是附件20180911\u 204956 第一次粘贴20180911 160004 首先是附件20180911\u085559 首先是宣誓书20180910\u 201323 首先是宣誓书20180910 201042 首先确定日期20180910\u080006 附件4221首件20180909首件160707 此查询使用\uuuu TABLES\uu SUMMARY\uuu方法标识最新数据集(根据yyyymmdd\uHHMMSS命名约定)

我的数据集包含多个具有类似名称的表:

e、 g

首先是附件20180911\u 204956
第一次粘贴20180911 160004
首先是附件20180911\u085559
首先是宣誓书20180910\u 201323
首先是宣誓书20180910 201042
首先确定日期20180910\u080006
附件4221首件20180909首件160707

此查询使用\uuuu TABLES\uu SUMMARY\uuu方法标识最新数据集(根据yyyymmdd\uHHMMSS命名约定)

SELECT max(table_id) as table_id FROM `modemutti-8d8a6.feed_first.__TABLES_SUMMARY__`
where table_id LIKE "affilinet_4221_first_%"
SELECT * FROM `modemutti-8d8a6.feed_first.*`
WHERE _TABLE_SUFFIX = "affilinet_4221_first_20180911_204956"

此查询使用\u table\u后缀方法从特定表中提取所有值

SELECT max(table_id) as table_id FROM `modemutti-8d8a6.feed_first.__TABLES_SUMMARY__`
where table_id LIKE "affilinet_4221_first_%"
SELECT * FROM `modemutti-8d8a6.feed_first.*`
WHERE _TABLE_SUFFIX = "affilinet_4221_first_20180911_204956"

此查询结合了\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu摘要(首先返回
词缀\u4221\u20180911\u204956
)和\u表后缀

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_%")
此查询失败:

错误:无法将INT64类型的字段“modemio\u cat\u level”读取为字符串

你知道为什么会发生这种情况,或者我如何解决这个问题吗

------------编辑------------

@Mikhail解决方案工作正常,但处理大量数据。见Vs。另一个解决办法是

SELECT * FROM  `modemutti-8d8a6.feed_first.affilinet_4221_first_*` WHERE _TABLE_SUFFIX = 
    ( 
    SELECT MAX(_TABLE_SUFFIX)  FROM`modemutti-8d8a6.feed_first.affilinet_4221_first_*`
    )
但与显式查询相比,它处理的数据量也要大得多。有没有办法通过UI中的视图实现,或者我应该通过API使用Python/Java SDK?

试试下面的方法

#standardSQL
SELECT * FROM `modemutti-8d8a6.feed_first.affilinet_4221_first_*`
WHERE _TABLE_SUFFIX = (
    SELECT REPLACE(MAX(table_id), 'affilinet_4221_first_', '') 
    FROM `modemutti-8d8a6.feed_first.__TABLES_SUMMARY__`
    WHERE table_id LIKE "affilinet_4221_first_%"
)
试试下面

#standardSQL
SELECT * FROM `modemutti-8d8a6.feed_first.affilinet_4221_first_*`
WHERE _TABLE_SUFFIX = (
    SELECT REPLACE(MAX(table_id), 'affilinet_4221_first_', '') 
    FROM `modemutti-8d8a6.feed_first.__TABLES_SUMMARY__`
    WHERE table_id LIKE "affilinet_4221_first_%"
)

这是预期的,绝对不是建议的,而只是回答您关于如何解决您在问题中描述的具体问题的问题!这是预期的,绝对不是建议的,而只是回答您关于如何解决您在问题中描述的具体问题的问题!