【问题标题】:How can I get a BigQuery table's meta data (record counts or last update date or creation date) via BigQuery如何通过 BigQuery 获取 BigQuery 表元数据(记录数或上次更新日期或创建日期)
【发布时间】:2014-08-06 06:19:19
【问题描述】:

我想编写一个 BigQuery 命令行命令来检索 BigQuery 表的最后修改时间。我该怎么做?

仅当 BigQuery 表的最后修改日期时间大于某个日期时间时,我才会使用它。

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    这是一个简单的查询,显示了数据集中所有表的元数据:

    SELECT * FROM <dataset>.__TABLES__;
    

    你可以添加

    WHERE table_id='<table_name>'
    

    如果您想将其限制在某个表中。

    这些是返回的列:

    project_id, dataset_id, table_id, creation_time, last_modified_time, row_count, size_bytes, type
    

    Web UI 说这个查询处理 0 个字节,所以我认为它可以免费运行。

    【讨论】:

    • 您知道这是否可以扩展到项目级别吗?我想我可以UNION 一堆声明,但如果有办法,我可以说类似select * from &lt;project-id&gt;.__DATASETS__.__TABLES__ 或类似的话,请告诉我。谢谢!
    • @CodingInCircles 我还没有看到为整个项目获取元数据的方法。我们编写了一些工具来遍历每个数据集并组合数据。 UNION 也可以,但您可能需要在每次添加数据集时手动更新它。
    • 是的。我们也必须做类似的事情。糟透了,没有任何东西可以遍历整个项目的数据集。
    【解决方案2】:

    使用以下命令行显示表的元数据:

    bq show project_id:dataset_id.table_id
    

    您将得到如下结果。如果您想自动化该过程,请使用grep 获取日期。

      Last modified           Schema           Total Rows   Total Bytes   Expiration
     ----------------- ----------------------- ------------ ------------- ------------
      24 Apr 16:29:28   |- state: string        5365794      165658304
                        |- gender: string
                        |- year: integer
                        |- name: string
                        |- occurence: integer
    

    【讨论】:

    • 请注意,这些详细信息已被缓存,并且并非每次都是最新的。
    • @Pentium10 AFAIK 它总是在更新 - 任何没有的经验?
    • @FelipeHoffa 是的,我们有几个表是关闭的,例如这里的 Total Rows, Bytes are not reported bq show aerobic-forge-504:wr_live.cart_event
    • 我们如何使用 Java API 做到这一点?
    • @foxwendy 查看文档的“管理表”部分。他们有java示例:developers.google.com/bigquery/docs/tables
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-01
    • 2019-04-18
    • 1970-01-01
    • 2017-12-09
    • 2021-01-14
    • 2017-01-29
    相关资源
    最近更新 更多