【问题标题】:How to get last modified timestamp of a partition in a bigquery table如何获取大查询表中分区的最后修改时间戳
【发布时间】:2020-02-21 17:06:21
【问题描述】:

有一种方法可以获取bigquery表中分区的最后修改时间戳信息,使用遗留sql __PARTITIONS_SUMMARY__写在这里list-partition

SELECT 
project_id, dataset_id, table_id, partition_id, TIMESTAMP(creation_time/1000) AS creation_time
FROM [PROJECT_ID:DATASET_ID.TABLE_ID$__PARTITIONS_SUMMARY__]

但是有没有办法使用标准 sql 获取相同的信息?

尝试查看有关 biquery 客户端库或 bigquery 表文档中分区的最后修改时间的文档,但没有找到。

【问题讨论】:

  • 我们计划在Information Schema 中支持分区,以便可以通过标准Sql 查询,但目前还没有ETA。目前它仅在 Legacy Sql 中可用。
  • @HuaZhang 有这方面的更新吗?

标签: google-bigquery


【解决方案1】:

BigQuery 现在在 INFORMATION_SCHEMA 中提供 PARTITIONS VIEW。下面的代码sn -p可以用来列出分区具体的更新时间:

SELECT *
FROM `bigquery-public-data.crypto_bitcoin.INFORMATION_SCHEMA.PARTITIONS`

【讨论】:

    【解决方案2】:

    您可以通过两种方式获取所需信息

    方法一:使用__TABLES__元表

    __TABLES__ 元表包含有关数据集中所有表的元数据。并包含last_modified_time,以便您确定上次更改表的时间。

    #standardSQL
    SELECT *
    FROM `bigquery-public-data.sec_quarterly_financials.__TABLES__`
    
    +----------------------+--------------------------+---------------+---------------+--------------------+-----------+-------------+------+
    |      project_id      |        dataset_id        |   table_id    | creation_time | last_modified_time | row_count | size_bytes  | type |
    +----------------------+--------------------------+---------------+---------------+--------------------+-----------+-------------+------+
    | bigquery-public-data | sec_quarterly_financials | calculation   | 1506951904786 |      1549897716323 |  12962167 |  1947409375 |    1 |
    | bigquery-public-data | sec_quarterly_financials | dimension     | 1506951963976 |      1549897966591 |   9375745 |  1347314982 |    1 |
    | bigquery-public-data | sec_quarterly_financials | measure_tag   | 1506952136026 |      1549898363265 |  18828446 |  3981179622 |    1 |
    | bigquery-public-data | sec_quarterly_financials | numbers       | 1506952752355 |      1549901192304 | 154567677 | 32759645886 |    1 |
    | bigquery-public-data | sec_quarterly_financials | presentation  | 1506952317542 |      1549900563489 | 108014012 | 15931119512 |    1 |
    | bigquery-public-data | sec_quarterly_financials | quick_summary | 1507817754713 |      1557588404913 |  68980952 | 13692158813 |    1 |
    | bigquery-public-data | sec_quarterly_financials | rendering     | 1506952854835 |      1549898767985 |  10089112 |  2395006363 |    1 |
    | bigquery-public-data | sec_quarterly_financials | sic_codes     | 1556128864207 |      1556128895225 |       444 |       20242 |    1 |
    | bigquery-public-data | sec_quarterly_financials | submission    | 1506953160779 |      1549897880524 |    209050 |    64383798 |    1 |
    | bigquery-public-data | sec_quarterly_financials | txt           | 1506953237777 |      1549898391758 |  14254950 | 11635805575 |    1 |
    +----------------------+--------------------------+---------------+---------------+--------------------+-----------+-------------+------+
    

    方法 2:_PARTITIONTIME 伪列

    在标准 SQL 中,您可以使用 _PARTITIONTIME pseudocolumn 检查表上的日期分区。

    #standardSQL
    SELECT MAX(_PARTITIONTIME) AS pt
    FROM `bigquery-public-data.sec_quarterly_financials.numbers`
    
    +-------------------------+
    |           pt            |
    +-------------------------+
    | 2018-03-31 00:00:00 UTC |
    +-------------------------+
    

    【讨论】:

    • 答案没有解决 OP 要求的特定元数据,即“最后修改的时间戳”。
    猜你喜欢
    • 1970-01-01
    • 2023-03-08
    • 2013-02-11
    • 1970-01-01
    • 1970-01-01
    • 2017-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多