如何获取bigquery表中分区的上次修改时间戳

时间:2019-10-25 10:37:51

标签: google-bigquery

有一种方法可以使用在此处list-partition编写的旧式SQL __PARTITIONS_SUMMARY__来获取bigquery表中分区的最后修改的时间戳信息,

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表文档中查看有关分区上次修改时间的文档,但均未找到。

1 个答案:

答案 0 :(得分:0)

有两种方法可以获取所需信息

方法1:使用__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 |
+-------------------------+