显示统计信息

适用于:检查标记为“是”的 Databricks SQL 检查标记为“是”是 Databricks Runtime 18.3 及更高版本

以 JSON 文档的形式返回表的优化器统计信息,包括表级统计信息和每列统计信息(可选)。

Databricks 建议 SHOW STATISTICS 以编程方式读取优化器统计信息。 它仅返回统计信息,而不返回 EXTENDED 中包含的DESCRIBE TABLE架构、存储、属性、分区和其他元数据...AS JSON。 使用 ANALYZE TABLE ...计算统计信息 (或 预测优化)收集此命令报告的统计信息。

所需的权限

SHOW STATISTICS若要在 Unity 目录表上运行,需要:

  • USE CATALOG 父目录。
  • USE SCHEMA 在父架构上。
  • SELECT 表或表的所有权。

Syntax

SHOW STATISTICS [ { FROM | IN } ] table_name
    [ FOR COLUMNS column_name [, ...] | FOR ALL COLUMNS ]
    AS JSON

关键字FROMIN是可选的,可互换。

Parameters

  • table_name

    标识要为其报告统计信息的表。 名称不得包含 时态规范或选项规范

    如果找不到该表,Azure Databricks将引发TABLE_OR_VIEW_NOT_FOUND错误。

    不支持视图(临时视图或永久性视图)。 对 SHOW STATISTICS 视图调用会引发 EXPECT_TABLE_NOT_VIEW.NO_ALTERNATIVE。 用于 DESCRIBE EXTENDED 视图元数据。

  • FOR COLUMNScolumn_name [, ...]

    为每个命名列添加一个条目 statistics.column_statistics

    如果表中不存在任何命名列,该命令将引发 COLUMN_NOT_FOUND

  • FOR ALL COLUMNS

    为表的每个原子类型顶级列添加一个条目 statistics.column_statistics

    排除数据类型为 STRUCTARRAYMAP 的列,因为优化器不会收集有关复杂类型的统计信息。 不枚举嵌套字段。

  • AS JSON

    必填。 结果以单个 JSON 格式 STRING返回。

JSON 格式的输出

返回的 JSON 文档使用以下架构:

{
  "table_name": "<table_name>",
  "catalog_name": "<catalog_name>",
  "namespace": ["<schema_name>"],
  "schema_name": "<schema_name>",
  "statistics": {
    "size_in_bytes": <bytes>,
    "num_rows": <count>,
    "collection_source": "<collection_source>",
    "created_at": "<created_at_timestamp>",
    "column_statistics": {
      "<column_name>": {
        "min": "<min_value>",
        "max": "<max_value>",
        "distinct_count": <count>,
        "num_nulls": <count>,
        "avg_len": <bytes>,
        "max_len": <bytes>,
        "has_histogram": <boolean>,
        "has_mcv": <boolean>,
        "has_kll_sketch": <boolean>
      }
    }
  }
}
  • statistics.size_in_bytes

    表数据的总大小(以字节为单位),如优化器所知。 当不存在表级统计信息时省略。

  • statistics.num_rows

    行计数,如优化器所知。 null 如果未收集。

  • statistics.collection_source

    如何生成表级统计信息。 下列其中一项:

    • 手动分析 - 收集者 ANALYZE TABLE ... COMPUTE STATISTICS
    • 自动统计信息 - 在写入过程中自动收集。
    • 预测分析 - 由 预测优化收集。
    • 未知 - 由无法识别的源收集。
    • null — 没有可用的表级统计信息。
  • statistics.created_at

    收集表级统计信息时,作为 ISO 8601 UTC 时间戳(例如)。 2026-05-29T08:14:24.845Z null 如果未收集。

  • statistics.column_statistics

    仅当或FOR ALL COLUMNS指定时才FOR COLUMNS包含。 将每个请求的列映射到其每列统计信息。

    以下字段始终存在, null 未收集时:

    • minmax — 最小值和最大值,呈现为 JSON 字符串。
    • distinct_count - 非重复值数(NDV)。
    • num_nulls - 值数 NULL
    • avg_lenmax_len - 平均值和最大值长度(以字节为单位)。
    • has_histogram - true 如果列可以使用等高直方图。

    仅当启用相应的草图集合并且省略以下字段时,才会显示以下字段:

    • has_mcvtrue 如果列提供了最常见的值列表。
    • has_kll_sketch - true 如果 KLL 草图可用于列。

示例

-- Set up a table and collect column statistics.
> CREATE TABLE customer(cust_id INT, name STRING, state STRING) USING parquet;
> INSERT INTO customer VALUES (100, 'Mike', 'AR'), (200, 'Jane', 'CA');
> ANALYZE TABLE customer COMPUTE STATISTICS FOR ALL COLUMNS;

-- Table-level statistics only.
> SHOW STATISTICS FROM customer AS JSON;
 {"table_name":"customer","catalog_name":"spark_catalog",
  "namespace":["default"],"schema_name":"default",
  "statistics":{"size_in_bytes":864,"num_rows":2,
                "collection_source":"Manual Analyze",
                "created_at":"2026-05-29T08:14:24.845Z"}}

-- Per-column statistics for a list of columns.
> SHOW STATISTICS FROM customer FOR COLUMNS cust_id, name AS JSON;
 {"table_name":"customer","catalog_name":"spark_catalog",
  "namespace":["default"],"schema_name":"default",
  "statistics":{"size_in_bytes":864,"num_rows":2,
                "collection_source":"Manual Analyze",
                "created_at":"2026-05-29T08:14:24.845Z",
                "column_statistics":{
                  "cust_id":{"min":"100","max":"200","distinct_count":2,"num_nulls":0,
                             "avg_len":4,"max_len":4,"has_histogram":false,"has_mcv":false},
                  "name":   {"min":"Jane","max":"Mike","distinct_count":2,"num_nulls":0,
                             "avg_len":4,"max_len":4,"has_histogram":false,"has_mcv":false}}}}

-- All atomic top-level columns. STRUCT, ARRAY, and MAP columns are skipped.
> SHOW STATISTICS FROM customer FOR ALL COLUMNS AS JSON;