Bigquery Java API - 获取表创建时间?
Posted
技术标签:
【中文标题】Bigquery Java API - 获取表创建时间?【英文标题】:Bigquery Java API - get table creation time? 【发布时间】:2015-05-28 12:51:42 【问题描述】:有没有办法使用 Bigquery Java Api 获取表创建时间?目前我看到你只能获取 datasetid、projectid 和 tableid。
我的用例:我有一个程序可以每天创建一个表格。有时这个程序一天运行不止一次。我想添加一个检查以查看是否已经为此日期创建了表,如果是,请忽略重新创建它。由于各种其他原因,我无法将创建时间附加到 tableid。
【问题讨论】:
【参考方案1】:您可以使用 API 返回的 creationTime 字段。 Java library 已经拥有getCreationTime() 的功能;
您可以为此使用元查询:
运行SELECT * FROM <dataset>.__TABLES_SUMMARY__
以获取有关表的所有元信息。
该查询的__TABLES__
部分可能看起来不熟悉。 __TABLES_SUMMARY__
是一个元表,其中包含有关数据集中表的信息。您可以自己使用此元表。例如,查询SELECT * FROM publicdata:samples.__TABLES_SUMMARY__
将返回有关publicdata:samples
数据集中表的元数据。
可用字段:
__TABLES_SUMMARY__
元表的字段(在TABLE_QUERY
查询中都可用)包括:
table_id
:表名。
creation_time
:自 1970 年 1 月 1 日 UTC 以来的时间,以毫秒为单位,创建表。这与表格中的creation_time
字段相同。
type
:无论是视图(2)还是常规表(1)。
以下字段在TABLE_QUERY()
中不可用,因为它们是__TABLES__
但不是__TABLES_SUMMARY__
的成员。出于历史兴趣和部分记录__TABLES__
元表,将它们保留在这里:
last_modified_time
:自 1970 年 1 月 1 日 UTC 以来的时间,以毫秒为单位,表已更新(元数据或表内容)。请注意,如果您使用 tabledata.insertAll()
将记录流式传输到您的表,这可能会过时几分钟。
row_count
:表中的行数。
size_bytes
:表的总大小(以字节为单位)。
【讨论】:
无意冒犯,但这并不是真正实用的解决方案。我必须运行查询,解析结果以获得一个简单的字段。希望我们可以简单地做类似的事情:table.getCreationTIme() 就像我们有 table.getTableId() @FebianShah 当您执行 GET 表调用时,API 已经返回 creationTime。 cloud.google.com/bigquery/docs/reference/v2/tables/get#try-it @FebianShah Java 库也有 getCreationTime 函数调用:developers.google.com/resources/api-libraries/documentation/… 完整链接:developers.google.com/resources/api-libraries/documentation/…以上是关于Bigquery Java API - 获取表创建时间?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Python API 获取 BigQuery 临时表“目标表”
使用 python 和 BigQuery API 获取 BigQuery 数据集中的表列表
使用 BigQuery REST 或 Java API 运行查询以获取 JSON 输出格式