【问题标题】:How to count row counts without running a SELECT COUNT(*) query?如何在不运行 SELECT COUNT(*) 查询的情况下计算行数?
【发布时间】:2018-05-21 00:03:13
【问题描述】:

我正在尝试使用 Google App Script 获取 BigQuery 表中的行数。这就是我尝试这样做的方式

BigQuery.Tables.get(projectId, datasetId, tableId).numRows

无论我插入什么tableId,我总是得到265的值。 我至少可以确定一个表有数亿行。那么为什么我得到 265 作为 numRows 属性的值?!

我怎样才能在不必运行SELECT COUNT(*) FROM datasetId.tableId 查询的情况下获取 BigQuery 表的总行数,这样我的配额不会消耗太多?

【问题讨论】:

    标签: google-apps-script google-bigquery


    【解决方案1】:

    如何在不必运行 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__` 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-29
      相关资源
      最近更新 更多