DESCRIBE TABLE 查看哪些列不为空

DESCRIBE TABLE see which columns are NOT NULL

在 Apache Spark SQL (Azure Databricks) 中,我创建了一个 table,如下所示:

CREATE TABLE t(
    a BIGINT,
    b BIGINT NOT NULL
)

我已验证我有一个可为空的列和一个不可为空的列,因为如果我尝试在列 b 中插入 NULL 时出现错误,但我可以在列中插入空值a.

但是,下面的语句

DESCRIBE TABLE t

没有告诉我哪些列可以为空,哪些列不能为空。 DESCRIBE TABLE EXTENDED 也没有。我怎样才能得到完整的描述?

使用这个

SELECT * FROM INFORMATION_SCHEMA.COLUMNS
WHERE 
TABLE_SCHEMA = "database_name"
AND
TABLE_NAME ="t"

您要查找的列名为“IS_NULLABLE”

Spark SQL auxiliary commandsDESCRIBE TABLESHOW COLUMNS 一样,不会根据文档显示列 NULL 约束。

有这个命令:

SHOW TABLE EXTENDED like 't'

returns information 列中的架构以及其他信息,但可读性不高。

//Table Properties: [transient_lastDdlTime=1643396075]
//.....
//Partition Provider: Catalog
//Schema: root
// |-- a: long (nullable = true)
// |-- b: long (nullable = false)

但是如果您可以将 spark.catalog 与 scala/python api 一起使用,那么这很简单:

spark.catalog.listColumns("t").show()
//+----+-----------+--------+--------+-----------+--------+
//|name|description|dataType|nullable|isPartition|isBucket|
//+----+-----------+--------+--------+-----------+--------+
//|   a|       null|  bigint|    true|      false|   false|
//|   b|       null|  bigint|   false|      false|   false|
//+----+-----------+--------+--------+-----------+--------+