1

我正在使用C#根據來自bigquery api表端點的響應動態構建查詢。我正在嘗試計算可以工作的活動用戶,但僅限於使用.*選擇每個表時。我的問題確實很簡單,有沒有辦法檢查BigQuery SQL中是否存在表?BigQuery檢查表是否存在

回答

3

有元表稱爲__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:時間,以毫秒爲單位自1/1/1970 UTC,該表被更新(或元數據或內容表)。請注意,如果您使用tabledata.insertAll()將記錄流式傳輸到表格,這可能會過時幾分鐘。
  • row_count:表中的行數。
  • size_bytes:表格的總字節數。
1
#standardSQL 
SELECT COUNT(1) AS cnt 
FROM `project.dataset.__TABLES_SUMMARY__` 
WHERE table_id = 'mytable'