BigQuery检查表是否存在

Joe*_*tto 6 sql google-cloud-storage google-bigquery google-cloud-platform

我正在使用C#根据bigquery api表端点的响应动态构造查询.我正在尝试计算有效的用户,但只有我选择了每个表.*.我的问题很简单,有没有办法检查BigQuery SQL中是否存在表格?

Pen*_*m10 7

有称为__TABLES__和的metatables__TABLES_SUMMARY__

您可以运行如下查询:

SELECT size_bytes FROM <dataset>.__TABLES__ WHERE table_id='mytablename'
Run Code Online (Sandbox Code Playgroud)

__TABLES__查询的部分可能看起来不熟悉.__TABLES_SUMMARY__是一个元表,包含有关数据集中表的信息.您可以自己使用此元表.例如,查询SELECT * FROM publicdata:samples.__TABLES_SUMMARY__将返回有关publicdata:samples数据集中表的元数据.你也可以SELECT * FROM publicdata:samples.__TABLES__

可用字段:

__TABLES_SUMMARY__元表的字段(在TABLE_QUERY查询中都可用)包括:

  • table_id:表的名称.
  • creation_time:表格创建后的时间(自UTC时间1/1/1970起以毫秒为单位).这creation_time与表中的字段相同.
  • type:无论是视图(2)还是常规表(1).

以下字段不可用,TABLE_QUERY()因为它们是成员__TABLES__但不是成员__TABLES_SUMMARY__.他们留在这里是为了历史的兴趣,并部分记录__TABLES__metatable:

  • last_modified_time:自1970年1月1日UTC以来的时间(以毫秒为单位)表格已更新(元数据或表格内容).请注意,如果您使用tabledata.insertAll()流式传输记录到您的表,这可能是几分钟过时.
  • row_count:表中的行数.
  • size_bytes:表的总大小(以字节为单位).


Mik*_*ant 6

#standardSQL
SELECT COUNT(1) AS cnt
FROM `project.dataset.__TABLES_SUMMARY__`
WHERE table_id = 'mytable'
Run Code Online (Sandbox Code Playgroud)