我正在使用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:表的总大小(以字节为单位)。
  • 10-07 18:27