我正在使用 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
:无论是视图(2)还是常规表(1)。以下字段在 TABLE_QUERY()
中
不可用,因为它们是
__TABLES__
的成员,但不是 __TABLES_SUMMARY__
的成员。它们保留在这里是出于历史兴趣并部分记录 __TABLES__
元表:
last_modified_time
:表更新(元数据或表内容)的时间,以毫秒为单位,自 1970 年 1 月 1 日起(UTC)。请注意,如果您使用 tabledata.insertAll()
将记录流式传输到表中,这可能会过时几分钟。row_count
:表中的行数。size_bytes
:表的总大小(以字节为单位)。#standardSQL
SELECT COUNT(1) AS cnt
FROM `project.dataset.__TABLES_SUMMARY__`
WHERE table_id = 'mytable'