BigQuery 检查表是否存在

问题描述 投票:0回答:2

我正在使用 C# 根据来自 bigquery api 表端点的响应动态构建查询。我正在尝试计算有效的活跃用户,但前提是我选择带有

.*
的每个表。我的问题真的很简单,有没有办法检查 BigQuery SQL 中是否存在表?

c# sql google-cloud-platform google-bigquery google-cloud-storage
2个回答
17
投票

有称为

__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
    :表的总大小(以字节为单位)。

7
投票
#standardSQL
SELECT COUNT(1) AS cnt
FROM `project.dataset.__TABLES_SUMMARY__`
WHERE table_id = 'mytable'
© www.soinside.com 2019 - 2024. All rights reserved.