DESCRIBE Statements

DESCRIBE statements are used to describe the schema of a table or a view, or the metadata of a catalog, or the specified job in the Flink cluster.

Run a DESCRIBE statement

Java

DESCRIBE statements can be executed with the executeSql() method of the TableEnvironment. The executeSql() method returns objects for a successful DESCRIBE operation, otherwise will throw an exception.

The following examples show how to run a DESCRIBE statement in TableEnvironment.

Scala

DESCRIBE statements can be executed with the executeSql() method of the TableEnvironment. The executeSql() method returns objects for a successful DESCRIBE operation, otherwise will throw an exception.

The following examples show how to run a DESCRIBE statement in TableEnvironment.

Python

DESCRIBE statements can be executed with the execute_sql() method of the TableEnvironment. The execute_sql() method returns objects for a successful DESCRIBE operation, otherwise will throw an exception.

The following examples show how to run a DESCRIBE statement in TableEnvironment.

SQL CLI

DESCRIBE statements can be executed in SQL CLI.

The following examples show how to run a DESCRIBE statement in SQL CLI.

Java

  1. TableEnvironment tableEnv = TableEnvironment.create(...);
  2. // register a table named "Orders"
  3. tableEnv.executeSql(
  4. "CREATE TABLE Orders (" +
  5. " `user` BIGINT NOT NULl comment 'this is primary key'," +
  6. " product VARCHAR(32)," +
  7. " amount INT," +
  8. " ts TIMESTAMP(3) comment 'notice: watermark'," +
  9. " ptime AS PROCTIME() comment 'this is a computed column'," +
  10. " PRIMARY KEY(`user`) NOT ENFORCED," +
  11. " WATERMARK FOR ts AS ts - INTERVAL '1' SECONDS" +
  12. ") with (...)");
  13. // print the schema
  14. tableEnv.executeSql("DESCRIBE Orders").print();
  15. // print the schema
  16. tableEnv.executeSql("DESC Orders").print();
  17. // register a catalog named "cat2"
  18. tableEnv.executeSql("CREATE CATALOG cat2 WITH ('type'='generic_in_memory', 'default-database'='db')");
  19. // print the metadata
  20. tableEnv.executeSql("DESCRIBE CATALOG cat2").print();
  21. // print the complete metadata
  22. tableEnv.executeSql("DESC CATALOG EXTENDED cat2").print();

Scala

  1. val tableEnv = TableEnvironment.create(...)
  2. // register a table named "Orders"
  3. tableEnv.executeSql(
  4. "CREATE TABLE Orders (" +
  5. " `user` BIGINT NOT NULl comment 'this is primary key'," +
  6. " product VARCHAR(32)," +
  7. " amount INT," +
  8. " ts TIMESTAMP(3) comment 'notice: watermark'," +
  9. " ptime AS PROCTIME() comment 'this is a computed column'," +
  10. " PRIMARY KEY(`user`) NOT ENFORCED," +
  11. " WATERMARK FOR ts AS ts - INTERVAL '1' SECONDS" +
  12. ") with (...)")
  13. // print the schema
  14. tableEnv.executeSql("DESCRIBE Orders").print()
  15. // print the schema
  16. tableEnv.executeSql("DESC Orders").print()
  17. // register a catalog named "cat2"
  18. tableEnv.executeSql("CREATE CATALOG cat2 WITH ('type'='generic_in_memory', 'default-database'='db')")
  19. // print the metadata
  20. tableEnv.executeSql("DESCRIBE CATALOG cat2").print()
  21. // print the complete metadata
  22. tableEnv.executeSql("DESC CATALOG EXTENDED cat2").print()

Python

  1. table_env = TableEnvironment.create(...)
  2. # register a table named "Orders"
  3. table_env.execute_sql( \
  4. "CREATE TABLE Orders ("
  5. " `user` BIGINT NOT NULl comment 'this is primary key',"
  6. " product VARCHAR(32),"
  7. " amount INT,"
  8. " ts TIMESTAMP(3) comment 'notice: watermark',"
  9. " ptime AS PROCTIME() comment 'this is a computed column',"
  10. " PRIMARY KEY(`user`) NOT ENFORCED,"
  11. " WATERMARK FOR ts AS ts - INTERVAL '1' SECONDS"
  12. ") with (...)");
  13. # print the schema
  14. table_env.execute_sql("DESCRIBE Orders").print()
  15. # print the schema
  16. table_env.execute_sql("DESC Orders").print()
  17. # register a catalog named "cat2"
  18. table_env.execute_sql("CREATE CATALOG cat2 WITH ('type'='generic_in_memory', 'default-database'='db')")
  19. # print the metadata
  20. table_env.execute_sql("DESCRIBE CATALOG cat2").print()
  21. # print the complete metadata
  22. table_env.execute_sql("DESC CATALOG EXTENDED cat2").print()

SQL CLI

  1. Flink SQL> CREATE TABLE Orders (
  2. > `user` BIGINT NOT NULl comment 'this is primary key',
  3. > product VARCHAR(32),
  4. > amount INT,
  5. > ts TIMESTAMP(3) comment 'notice: watermark',
  6. > ptime AS PROCTIME() comment 'this is a computed column',
  7. > PRIMARY KEY(`user`) NOT ENFORCED,
  8. > WATERMARK FOR ts AS ts - INTERVAL '1' SECONDS
  9. > ) with (
  10. > ...
  11. > );
  12. [INFO] Table has been created.
  13. Flink SQL> DESCRIBE Orders;
  14. Flink SQL> DESC Orders;
  15. Flink SQL> CREATE CATALOG cat2 WITH ('type'='generic_in_memory', 'default-database'='db');
  16. [INFO] Execute statement succeeded.
  17. Flink SQL> DESCRIBE CATALOG cat2;
  18. Flink SQL> DESC CATALOG EXTENDED cat2;
  19. Flink SQL> DESCRIBE JOB '228d70913eab60dda85c5e7f78b5782c';
  20. Flink SQL> DESC JOB '228d70913eab60dda85c5e7f78b5782c';

The result of the above example is:

Java

  1. # DESCRIBE TABLE Orders
  2. +---------+-----------------------------+-------+-----------+---------------+----------------------------+---------------------------+
  3. | name | type | null | key | extras | watermark | comment |
  4. +---------+-----------------------------+-------+-----------+---------------+----------------------------+---------------------------+
  5. | user | BIGINT | FALSE | PRI(user) | | | this is primary key |
  6. | product | VARCHAR(32) | TRUE | | | | |
  7. | amount | INT | TRUE | | | | |
  8. | ts | TIMESTAMP(3) *ROWTIME* | TRUE | | | `ts` - INTERVAL '1' SECOND | notice: watermark |
  9. | ptime | TIMESTAMP_LTZ(3) *PROCTIME* | FALSE | | AS PROCTIME() | | this is a computed column |
  10. +---------+-----------------------------+-------+-----------+---------------+----------------------------+---------------------------+
  11. 5 rows in set
  12. # DESCRIBE CATALOG cat2
  13. +-----------+-------------------+
  14. | info name | info value |
  15. +-----------+-------------------+
  16. | name | cat2 |
  17. | type | generic_in_memory |
  18. | comment | |
  19. +-----------+-------------------+
  20. 3 rows in set
  21. # DESCRIBE CATALOG EXTENDED cat2
  22. +-------------------------+-------------------+
  23. | info name | info value |
  24. +-------------------------+-------------------+
  25. | name | cat2 |
  26. | type | generic_in_memory |
  27. | comment | |
  28. | option:default-database | db |
  29. +-------------------------+-------------------+
  30. 4 rows in set

Scala

  1. # DESCRIBE TABLE Orders
  2. +---------+-----------------------------+-------+-----------+---------------+----------------------------+---------------------------+
  3. | name | type | null | key | extras | watermark | comment |
  4. +---------+-----------------------------+-------+-----------+---------------+----------------------------+---------------------------+
  5. | user | BIGINT | FALSE | PRI(user) | | | this is primary key |
  6. | product | VARCHAR(32) | TRUE | | | | |
  7. | amount | INT | TRUE | | | | |
  8. | ts | TIMESTAMP(3) *ROWTIME* | TRUE | | | `ts` - INTERVAL '1' SECOND | notice: watermark |
  9. | ptime | TIMESTAMP_LTZ(3) *PROCTIME* | FALSE | | AS PROCTIME() | | this is a computed column |
  10. +---------+-----------------------------+-------+-----------+---------------+----------------------------+---------------------------+
  11. 5 rows in set
  12. # DESCRIBE CATALOG cat2
  13. +-----------+-------------------+
  14. | info name | info value |
  15. +-----------+-------------------+
  16. | name | cat2 |
  17. | type | generic_in_memory |
  18. | comment | |
  19. +-----------+-------------------+
  20. 3 rows in set
  21. # DESCRIBE CATALOG EXTENDED cat2
  22. +-------------------------+-------------------+
  23. | info name | info value |
  24. +-------------------------+-------------------+
  25. | name | cat2 |
  26. | type | generic_in_memory |
  27. | comment | |
  28. | option:default-database | db |
  29. +-------------------------+-------------------+
  30. 4 rows in set

Python

  1. # DESCRIBE TABLE Orders
  2. +---------+-----------------------------+-------+-----------+---------------+----------------------------+---------------------------+
  3. | name | type | null | key | extras | watermark | comment |
  4. +---------+-----------------------------+-------+-----------+---------------+----------------------------+---------------------------+
  5. | user | BIGINT | FALSE | PRI(user) | | | this is primary key |
  6. | product | VARCHAR(32) | TRUE | | | | |
  7. | amount | INT | TRUE | | | | |
  8. | ts | TIMESTAMP(3) *ROWTIME* | TRUE | | | `ts` - INTERVAL '1' SECOND | notice: watermark |
  9. | ptime | TIMESTAMP_LTZ(3) *PROCTIME* | FALSE | | AS PROCTIME() | | this is a computed column |
  10. +---------+-----------------------------+-------+-----------+---------------+----------------------------+---------------------------+
  11. 5 rows in set
  12. # DESCRIBE CATALOG cat2
  13. +-----------+-------------------+
  14. | info name | info value |
  15. +-----------+-------------------+
  16. | name | cat2 |
  17. | type | generic_in_memory |
  18. | comment | |
  19. +-----------+-------------------+
  20. 3 rows in set
  21. # DESCRIBE CATALOG EXTENDED cat2
  22. +-------------------------+-------------------+
  23. | info name | info value |
  24. +-------------------------+-------------------+
  25. | name | cat2 |
  26. | type | generic_in_memory |
  27. | comment | |
  28. | option:default-database | db |
  29. +-------------------------+-------------------+
  30. 4 rows in set

SQL CLI

  1. # DESCRIBE TABLE Orders
  2. +---------+-----------------------------+-------+-----------+---------------+----------------------------+---------------------------+
  3. | name | type | null | key | extras | watermark | comment |
  4. +---------+-----------------------------+-------+-----------+---------------+----------------------------+---------------------------+
  5. | user | BIGINT | FALSE | PRI(user) | | | this is primary key |
  6. | product | VARCHAR(32) | TRUE | | | | |
  7. | amount | INT | TRUE | | | | |
  8. | ts | TIMESTAMP(3) *ROWTIME* | TRUE | | | `ts` - INTERVAL '1' SECOND | notice: watermark |
  9. | ptime | TIMESTAMP_LTZ(3) *PROCTIME* | FALSE | | AS PROCTIME() | | this is a computed column |
  10. +---------+-----------------------------+-------+-----------+---------------+----------------------------+---------------------------+
  11. 5 rows in set
  12. # DESCRIBE CATALOG cat2
  13. +-----------+-------------------+
  14. | info name | info value |
  15. +-----------+-------------------+
  16. | name | cat2 |
  17. | type | generic_in_memory |
  18. | comment | |
  19. +-----------+-------------------+
  20. 3 rows in set
  21. # DESCRIBE CATALOG EXTENDED cat2
  22. +-------------------------+-------------------+
  23. | info name | info value |
  24. +-------------------------+-------------------+
  25. | name | cat2 |
  26. | type | generic_in_memory |
  27. | comment | |
  28. | option:default-database | db |
  29. +-------------------------+-------------------+
  30. 4 rows in set
  31. # DESCRIBE JOB '228d70913eab60dda85c5e7f78b5782c'
  32. +----------------------------------+----------+---------+-------------------------+
  33. | job id | job name | status | start time |
  34. +----------------------------------+----------+---------+-------------------------+
  35. | 228d70913eab60dda85c5e7f78b5782c | myjob | RUNNING | 2023-02-11T05:03:51.523 |
  36. +----------------------------------+----------+---------+-------------------------+
  37. 1 row in set

Syntax

DESCRIBE TABLE

  1. { DESCRIBE | DESC } [catalog_name.][db_name.]table_name

DESCRIBE CATALOG

  1. { DESCRIBE | DESC } CATALOG [EXTENDED] catalog_name

DESCRIBE JOB

  1. { DESCRIBE | DESC } JOB '<job_id>'

Attention DESCRIBE JOB statements only work in SQL CLI or SQL Gateway.