我正在使用C#根据bigquery api表端点的响应动态构建查询。我正在尝试计算有效的事件用户,但前提是我选择了每个带有.*
的表。我的问题确实很简单,有没有办法检查BigQuery SQL中是否存在表?
最佳答案
有称为__TABLES__
和__TABLES_SUMMARY__
的元表
您可以运行如下查询:
SELECT size_bytes FROM <dataset>.__TABLES__ WHERE table_id='mytablename'
该查询的__TABLES__
部分可能看起来并不熟悉。 __TABLES_SUMMARY__
是一个元表,其中包含有关数据集中表的信息。您可以自己使用此元表。例如,查询SELECT * FROM publicdata:samples.__TABLES_SUMMARY__
将返回有关publicdata:samples
数据集中的表的元数据。你也可以做SELECT * FROM publicdata:samples.__TABLES__
可用字段:__TABLES_SUMMARY__
元表的字段(在TABLE_QUERY
查询中都可用)包括:table_id
:表的名称。 creation_time
:自1970年1月1日UTC以来创建表的时间(以毫秒为单位)。这与表上的creation_time
字段相同。 type
:是 View (2)还是常规表(1)。 以下字段在
TABLE_QUERY()
中不可用,因为它们是__TABLES__
的成员,但不是__TABLES_SUMMARY__
的成员。出于历史考虑,将它们保留在此处,并部分记录__TABLES__
元表:last_modified_time
:自1970年1月1日UTC开始以毫秒为单位的表更新时间(元数据或表内容)。请注意,如果您使用tabledata.insertAll()
将记录流式传输到表中,则可能已过了几分钟。 row_count
:表中的行数。 size_bytes
:表的总大小(以字节为单位)。