我正在尝试使用Google App Script获取BigQuery表中的行数。这就是我尝试这样做的方式
BigQuery.Tables.get(projectId, datasetId, tableId).numRows
无论我插入的tableId
是什么,我总是得到 265 的值。
我至少确定单个表有数亿行。那么为什么我将 265 作为 numRows 属性的值?!
如何在不必运行SELECT COUNT(*) FROM datasetId.tableId
查询的情况下获取BigQuery表的总行数,这样我的配额消耗不多?
答案 0 :(得分:4)
如何在不运行SELECT COUNT(*)FROM datasetId.tableId查询的情况下获取BigQuery表的总行数,这样我的配额消耗不多?
1 - 您可能会感到惊讶,但SELECT COUNT(*) FROM datasetId.tableId
不会给您带来任何成本,因为BigQuery引擎非常智能,可以从所谓的元表中获取此统计信息。如果要打开验证器(在BigQuery UI上的按钮右侧),您可以看到此类查询的成本消息。消息将为 - This query will process 0 B when run
2 - 此外 - 您可以自己查询元表,如下例所示:
#standardSQL
SELECT table_id,
DATE(TIMESTAMP_MILLIS(creation_time)) AS creation_date,
DATE(TIMESTAMP_MILLIS(last_modified_time)) AS last_modified_date,
row_count,
size_bytes,
CASE
WHEN type = 1 THEN 'table'
WHEN type = 2 THEN 'view'
WHEN type = 3 THEN 'external'
ELSE '?'
END AS type,
TIMESTAMP_MILLIS(creation_time) AS creation_time,
TIMESTAMP_MILLIS(last_modified_time) AS last_modified_time,
dataset_id,
project_id
FROM `projectid.datasetid.__TABLES__`