gpt4 book ai didi

google-cloud-platform - 从 BigQuery 中的最新时间戳分表查询的特殊字符

转载 作者:行者123 更新时间:2023-12-01 12:11:20 25 4
gpt4 key购买 nike


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

您可以使用基于时间的命名方法(例如 [PREFIX]_YYYYMMDD)对表进行分片

这使我能够做到:

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

并查询所有分片。是否有仅查询最新分片的特殊符号?例如说我有:
  • xxx_20180726
  • xxx_20180801

  • 我可以做一些类似的事情吗
    SELECT count(*) FROM `xxx.xxx.xxx_{{ latest }}` 

    查询xxx_20180801?

    受 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_%')

    最佳答案

    如果您确实关心成本(意味着您的查询将扫描多少表) - 这样做的唯一方法是分两步进行,如下所示



    First query



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

    Second Query



    #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 - 两个选项的成本都是 0(零) - 但实际上 - 很可能你会有比 count(1) 更有值(value)的东西

    关于google-cloud-platform - 从 BigQuery 中的最新时间戳分表查询的特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51643399/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com