DESCRIBE TABLE
説明
DESCRIBE TABLE ステートメントは、テーブルの基本的なメタデータ情報を返します。メタデータ情報には、列名、列の型、列のコメントが含まれます。オプションで、パーティションまたは列に対応するメタデータを返すために、パーティション指定または列名を指定することもできます。
構文
{ DESC | DESCRIBE } [ TABLE ] [ format ] table_identifier [ partition_spec ] [ col_name ] [ AS JSON ]
パラメータ
-
フォーマット
describe の出力のオプションのフォーマットを指定します。
EXTENDEDまたはFORMATTEDが指定されている場合、追加のメタデータ情報(親データベース、所有者、アクセス時間など)が返されます。また、EXTENDEDまたはFORMATTEDが指定されている場合、ステートメントの末尾にAS JSONを指定することで、メタデータを JSON フォーマットで返すことができます。 -
table_identifier
データベース名でオプションで修飾できるテーブル名を指定します。
構文:
[ database_name. ] table_name -
partition_spec
パーティションのキーと値のペアのカンマ区切りリストを指定するオプションのパラメーター。指定された場合、追加のパーティションメタデータが返されます。
構文:
PARTITION ( partition_col_name = partition_col_val [ , ... ] ) -
col_name
説明が必要な列名を指定するオプションのパラメーター。指定された列名は、オプションで修飾できます。パラメーター
partition_specとcol_nameは排他的であり、一緒に指定することはできません。現在、ネストされた列は指定できません。個々の列に対する JSON フォーマットは現在サポートされていません。
構文:
[ database_name. ] [ table_name. ] column_name -
AS JSON
テーブルメタデータを JSON フォーマットで返すオプションのパラメーター。
EXTENDEDまたはFORMATTEDフォーマットが指定されている場合のみサポートされます(どちらも同等の JSON を生成します)。構文:
[ AS JSON ]スキーマ
以下は完全な JSON スキーマです。実際の出力では、 null フィールドは省略され、JSON は整形されません(例を参照)。
{ "table_name": "<table_name>", "catalog_name": "<catalog_name>", "schema_name": "<innermost_namespace_name>", "namespace": ["<namespace_names>"], "type": "<table_type>", "provider": "<provider>", "columns": [ { "name": "<name>", "type": <type_json>, "comment": "<comment>", "nullable": <boolean>, "default": "<default_val>" } ], "partition_values": { "<col_name>": "<val>" }, "partition_columns": ["col1", "col2"], "clustering_columns": ["col1", "col2"], "location": "<path>", "view_text": "<view_text>", "view_original_text": "<view_original_text>", "view_schema_mode": "<view_schema_mode>", "view_catalog_and_namespace": "<view_catalog_and_namespace>", "view_query_output_columns": ["col1", "col2"], // Spark SQL configurations captured at the time of permanent view creation "view_creation_spark_configuration": { "conf1": "<value1>", "conf2": "<value2>" }, "comment": "<comment>", "table_properties": { "property1": "<property1>", "property2": "<property2>" }, "storage_properties": { "property1": "<property1>", "property2": "<property2>" }, "serde_library": "<serde_library>", "input_format": "<input_format>", "output_format": "<output_format>", "num_buckets": <num_buckets>, "bucket_columns": ["<col_name>"], "sort_columns": ["<col_name>"], "created_time": "<yyyy-MM-dd'T'HH:mm:ss'Z'>", "created_by": "<created_by>", "last_access": "<yyyy-MM-dd'T'HH:mm:ss'Z'>", "partition_provider": "<partition_provider>", "collation": "<default_collation>" }以下は
<type_json>のスキーマ定義です。
| Spark SQL データ型 | JSON 表現 |
|---|---|
| ByteType | { "name" : "tinyint" } |
| ShortType | { "name" : "smallint" } |
| IntegerType | { "name" : "int" } |
| LongType | { "name" : "bigint" } |
| FloatType | { "name" : "float" } |
| DoubleType | { "name" : "double" } |
| DecimalType | { "name" : "decimal", "precision": p, "scale": s } |
| StringType | { "name" : "string", "collation": "<collation>" } |
| VarCharType | { "name" : "varchar", "length": n } |
| CharType | { "name" : "char", "length": n } |
| BinaryType | { "name" : "binary" } |
| BooleanType | { "name" : "boolean" } |
| DateType | { "name" : "date" } |
| VariantType | { "name" : "variant" } |
| TimestampType | { "name" : "timestamp_ltz" } |
| TimestampNTZType | { "name" : "timestamp_ntz" } |
| YearMonthIntervalType | { "name" : "interval", "start_unit": "<start_unit>", "end_unit": "<end_unit>" } |
| DayTimeIntervalType | { "name" : "interval", "start_unit": "<start_unit>", "end_unit": "<end_unit>" } |
| ArrayType | { "name" : "array", "element_type": <type_json>, "element_nullable": <boolean> } |
| MapType | { "name" : "map", "key_type": <type_json>, "value_type": <type_json>, "value_nullable": <boolean> } |
| StructType | { "name" : "struct", "fields": [ {"name" : "field1", "type" : <type_json>, “nullable”: <boolean>, "comment": “<comment>”, "default": “<default_val>”}, ... ] } |
例
-- Creates a table `customer`. Assumes current database is `salesdb`.
CREATE TABLE customer(
cust_id INT,
state VARCHAR(20),
name STRING COMMENT 'Short name'
)
USING parquet
PARTITIONED BY (state);
INSERT INTO customer PARTITION (state = 'AR') VALUES (100, 'Mike');
-- Returns basic metadata information for unqualified table `customer`
DESCRIBE TABLE customer;
+-----------------------+---------+----------+
| col_name|data_type| comment|
+-----------------------+---------+----------+
| cust_id| int| null|
| name| string|Short name|
| state| string| null|
|# Partition Information| | |
| # col_name|data_type| comment|
| state| string| null|
+-----------------------+---------+----------+
-- Returns basic metadata information for qualified table `customer`
DESCRIBE TABLE salesdb.customer;
+-----------------------+---------+----------+
| col_name|data_type| comment|
+-----------------------+---------+----------+
| cust_id| int| null|
| name| string|Short name|
| state| string| null|
|# Partition Information| | |
| # col_name|data_type| comment|
| state| string| null|
+-----------------------+---------+----------+
-- Returns additional metadata such as parent database, owner, access time etc.
DESCRIBE TABLE EXTENDED customer;
+----------------------------+------------------------------+----------+
| col_name| data_type| comment|
+----------------------------+------------------------------+----------+
| cust_id| int| null|
| name| string|Short name|
| state| string| null|
| # Partition Information| | |
| # col_name| data_type| comment|
| state| string| null|
| | | |
|# Detailed Table Information| | |
| Database| default| |
| Table| customer| |
| Owner| <TABLE OWNER>| |
| Created Time| Tue Apr 07 22:56:34 JST 2020| |
| Last Access| UNKNOWN| |
| Created By| <SPARK VERSION>| |
| Type| MANAGED| |
| Provider| parquet| |
| Location|file:/tmp/salesdb.db/custom...| |
| Serde Library|org.apache.hadoop.hive.ql.i...| |
| InputFormat|org.apache.hadoop.hive.ql.i...| |
| OutputFormat|org.apache.hadoop.hive.ql.i...| |
| Partition Provider| Catalog| |
+----------------------------+------------------------------+----------+
-- Returns partition metadata such as partitioning column name, column type and comment.
DESCRIBE TABLE EXTENDED customer PARTITION (state = 'AR');
+------------------------------+------------------------------+----------+
| col_name| data_type| comment|
+------------------------------+------------------------------+----------+
| cust_id| int| null|
| name| string|Short name|
| state| string| null|
| # Partition Information| | |
| # col_name| data_type| comment|
| state| string| null|
| | | |
|# Detailed Partition Inform...| | |
| Database| default| |
| Table| customer| |
| Partition Values| [state=AR]| |
| Location|file:/tmp/salesdb.db/custom...| |
| Serde Library|org.apache.hadoop.hive.ql.i...| |
| InputFormat|org.apache.hadoop.hive.ql.i...| |
| OutputFormat|org.apache.hadoop.hive.ql.i...| |
| Storage Properties|[serialization.format=1, pa...| |
| Partition Parameters|{transient_lastDdlTime=1586...| |
| Created Time| Tue Apr 07 23:05:43 JST 2020| |
| Last Access| UNKNOWN| |
| Partition Statistics| 659 bytes| |
| | | |
| # Storage Information| | |
| Location|file:/tmp/salesdb.db/custom...| |
| Serde Library|org.apache.hadoop.hive.ql.i...| |
| InputFormat|org.apache.hadoop.hive.ql.i...| |
| OutputFormat|org.apache.hadoop.hive.ql.i...| |
+------------------------------+------------------------------+----------+
-- Returns the metadata for `name` column.
-- Optional `TABLE` clause is omitted and column is fully qualified.
DESCRIBE customer salesdb.customer.name;
+---------+----------+
|info_name|info_value|
+---------+----------+
| col_name| name|
|data_type| string|
| comment|Short name|
+---------+----------+
-- Returns the table metadata in JSON format.
DESC FORMATTED customer AS JSON;
{"table_name":"customer","catalog_name":"spark_catalog","schema_name":"default","namespace":["default"],"columns":[{"name":"cust_id","type":{"name":"integer"},"nullable":true},{"name":"name","type":{"name":"string"},"comment":"Short name","nullable":true},{"name":"state","type":{"name":"varchar","length":20},"nullable":true}],"location": "file:/tmp/salesdb.db/custom...","created_time":"2020-04-07T14:05:43Z","last_access":"UNKNOWN","created_by":"None","type":"MANAGED","provider":"parquet","partition_provider":"Catalog","partition_columns":["state"]}