代码之家  ›  专栏  ›  技术社区  ›  Andrew Cassidy

从bigquery中的最新时间戳分片表查询的特殊字符

  •  2
  • Andrew Cassidy  · 技术社区  · 6 年前

    https://cloud.google.com/bigquery/docs/partitioned-tables :

    您可以使用基于时间的命名方法(如[prefix]yymmdd)共享表。

    这使我能够做到:

    SELECT count(*) FROM `xxx.xxx.xxx_*` 
    

    并查询所有碎片。是否有只查询最新碎片的特殊符号?比如说我有:

    • XXX20120180726
    • XXX201201801

    我能做点什么吗?

    SELECT count(*) FROM `xxx.xxx.xxx_{{ latest }}` 
    

    查询XXX_?

    Mikhail Berlyant启发的单一查询:

    SELECT count(*) as c FROM  `XXX.PREFIX_*` WHERE _TABLE_SUFFIX IN (  SELECT
        SUBSTR(MAX(table_id), LENGTH('PREFIX_') + 2)
      FROM
        `XXX.__TABLES_SUMMARY__`
      WHERE
        table_id LIKE 'PREFIX_%')
    
    1 回复  |  直到 6 年前
        1
  •  3
  •   Mikhail Berlyant    6 年前

    #standardSQL
    SELECT SUBSTR(MAX(table_id), LENGTH('PREFIX') + 1)
    FROM `xxx.xxx.__TABLES_SUMMARY__`
    WHERE table_id LIKE 'PREFIX%'
    

    #standardSQL
    SELECT COUNT(*)
    FROM `xxx.xxx.PREFIX_*`
    WHERE _TABLE_SUFFIX = '<result of first query>'      
    

    20180801

    #standardSQL
    SELECT COUNT(*)
    FROM `xxx.xxx.PREFIX_*`
    WHERE _TABLE_SUFFIX = '20180801'      
    

    xxx.xxx.PREFIX_*

    COUNT(1) SELECT