簡體   English   中英

bigquery 數據集中所有表的行數

[英]number of rows of all tables in a bigquery dataset

我有一個包含許多表的數據集。 有沒有一種簡單的方法來查詢 output 顯示 table_name 和該表中的行數,而不必對數據集中的每個表執行 count(*)?

是的,您可以這樣做,查詢元數據:

SELECT
  dataset_id,
  table_id,
  # Convert size in bytes to GB
  ROUND(size_bytes/POW(10,9),2) AS size_gb,
  # Convert creation_time and last_modified_time from UNIX EPOCH format to a timestamp
  TIMESTAMP_MILLIS(creation_time) AS creation_time,
  TIMESTAMP_MILLIS(last_modified_time) AS last_modified_time,
  row_count,
  # Convert table type from numerical value to description
  CASE
    WHEN type = 1 THEN 'table'
    WHEN type = 2 THEN 'view'
  ELSE
  NULL
END
  AS type
FROM
  project_id.dataset_id.__TABLES__
ORDER BY
  size_gb DESC;

您可以使用以下查詢使用INFORMATION_SCHEMA.TABLE_STORAGE獲取元數據:

SELECT table_schema, table_name, total_rows from your-project-id.`region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE;

在檢索此類元數據時,您可以參考此INFORMATION_SCHEMA.TABLE_STORAGE文檔以獲取更多信息。

請注意,使用INFORMATION_SCHEMA.TABLE_STORAGE時,查詢必須包含區域限定符 如果未指定,則查詢中使用的默認區域為US

在此Scope 和INFORMATION_SCHEMA.TABLE_STORAGE的語法文檔中提到,當您未指定任何區域時,將從所有區域檢索元數據,但是,在測試期間,查詢的行為僅從區域US檢索,就像在此scope中一樣和INFORMATION_SCHEMA.SCHEMATA語法文檔。 我認為,應該更新INFORMATION_SCHEMA.TABLE_STORAGE語法的文檔。

此外,請注意__TABLES__已從Google BigQuery文檔中正式刪除,因為它已被棄用,如類似的 SO 帖子中所述 檢索BigQuery 元數據時最好使用INFORMATION_SCHEMA ,因為這將是 Google 未來支持的一種。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM