![](/img/trans.png)
[英]Airflow DAG to apply on multiple BigQuery tables in the dataset
[英]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.