【问题标题】:select latest Table in a Big Query Dataset - Standard SQL syntax在大查询数据集中选择最新表 - 标准 SQL 语法
【发布时间】:2018-09-11 22:52:33
【问题描述】:

我的数据集包含多个名称相似的表:

例如

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

此查询使用 __TABLES_SUMMARY__ 方法识别最新数据集(根据 yyyymmdd_hhmmss 命名约定)

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

query result

此查询使用 _TABLE_SUFFIX 方法从特定表中提取所有值

SELECT * FROM `modemutti-8d8a6.feed_first.*`
WHERE _TABLE_SUFFIX = "affilinet_4221_first_20180911_204956"

query result

此查询结合了 __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_%")

此查询失败:

错误:无法将 INT64 类型的字段“modemio_cat_level”读取为 STRING

error screenshot

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

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

@Mikhail 解决方案可以正常工作,但会处理大量数据。参见explicit callsuggested Method。另一种解决方案是

SELECT * FROM  `modemutti-8d8a6.feed_first.affilinet_4221_first_*` WHERE _TABLE_SUFFIX = 
    ( 
    SELECT MAX(_TABLE_SUFFIX)  FROM`modemutti-8d8a6.feed_first.affilinet_4221_first_*`
    )

但与显式查询相比,this 处理的数据量也大得多。有没有办法通过 UI 中的视图来实现,还是我应该通过 API 使用 Python / Java SDK?

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    下面试试

    #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_%"
    )
    

    【讨论】:

    • 这是意料之中的,绝对不建议这样做,而只是回答您关于如何解决您在问题中描述的具体问题的问题!
    猜你喜欢
    • 2013-10-26
    • 1970-01-01
    • 2018-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多