You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by tw...@apache.org on 2020/06/23 16:31:42 UTC

[flink] 05/08: [FLINK-17599][docs] Add documents for DESCRIBE statement

This is an automated email from the ASF dual-hosted git repository.

twalthr pushed a commit to branch release-1.11
in repository https://gitbox.apache.org/repos/asf/flink.git

commit a4797e43421d61d1d5eb82cc528b31e43ec73f04
Author: godfreyhe <go...@163.com>
AuthorDate: Wed Jun 10 10:34:51 2020 +0800

    [FLINK-17599][docs] Add documents for DESCRIBE statement
---
 docs/dev/table/sql/describe.md    | 202 ++++++++++++++++++++++++++++++++++++++
 docs/dev/table/sql/describe.zh.md | 201 +++++++++++++++++++++++++++++++++++++
 docs/dev/table/sql/index.md       |   1 +
 docs/dev/table/sql/index.zh.md    |   1 +
 docs/dev/table/sql/queries.md     |  18 +---
 docs/dev/table/sql/queries.zh.md  |  18 +---
 6 files changed, 407 insertions(+), 34 deletions(-)

diff --git a/docs/dev/table/sql/describe.md b/docs/dev/table/sql/describe.md
new file mode 100644
index 0000000..de18869
--- /dev/null
+++ b/docs/dev/table/sql/describe.md
@@ -0,0 +1,202 @@
+---
+title: "DESCRIBE Statements"
+nav-parent_id: sql
+nav-pos: 7
+---
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+* This will be replaced by the TOC
+{:toc}
+
+DESCRIBE statements are used to describe the schema of a table or a view.
+
+
+## Run a DESCRIBE statement
+
+DESCRIBE statements can be executed with the `executeSql()` method of the `TableEnvironment`, or executed in [SQL CLI]({{ site.baseurl }}/dev/table/sqlClient.html). The `executeSql()` method returns the schema of given table for a successful DESCRIBE operation, otherwise will throw an exception.
+
+The following examples show how to run a DESCRIBE statement in `TableEnvironment` and in SQL CLI.
+
+<div class="codetabs" markdown="1">
+<div data-lang="java" markdown="1">
+{% highlight java %}
+EnvironmentSettings settings = EnvironmentSettings.newInstance()...
+TableEnvironment tableEnv = TableEnvironment.create(settings);
+
+// register a table named "Orders"
+tableEnv.executeSql(
+        "CREATE TABLE Orders (" +
+        " `user` BIGINT NOT NULl," +
+        " product VARCHAR(32)," +
+        " amount INT," +
+        " ts TIMESTAMP(3)," +
+        " ptime AS PROCTIME()," +
+        " PRIMARY KEY(`user`) NOT ENFORCED," +
+        " WATERMARK FOR ts AS ts - INTERVAL '1' SECONDS" +
+        ") with (...)");
+
+// print the schema
+tableEnv.executeSql("DESCRIBE Orders").print();
+
+{% endhighlight %}
+</div>
+
+<div data-lang="scala" markdown="1">
+{% highlight scala %}
+val settings = EnvironmentSettings.newInstance()...
+val tableEnv = TableEnvironment.create(settings)
+
+// register a table named "Orders"
+ tableEnv.executeSql(
+        "CREATE TABLE Orders (" +
+        " `user` BIGINT NOT NULl," +
+        " product VARCHAR(32)," +
+        " amount INT," +
+        " ts TIMESTAMP(3)," +
+        " ptime AS PROCTIME()," +
+        " PRIMARY KEY(`user`) NOT ENFORCED," +
+        " WATERMARK FOR ts AS ts - INTERVAL '1' SECONDS" +
+        ") with (...)")
+
+// print the schema
+tableEnv.executeSql("DESCRIBE Orders").print()
+
+{% endhighlight %}
+</div>
+
+<div data-lang="python" markdown="1">
+{% highlight python %}
+settings = EnvironmentSettings.new_instance()...
+table_env = StreamTableEnvironment.create(env, settings)
+
+# register a table named "Orders"
+table_env.execute_sql( \
+        "CREATE TABLE Orders (" 
+        " `user` BIGINT NOT NULl," 
+        " product VARCHAR(32),"
+        " amount INT,"
+        " ts TIMESTAMP(3),"
+        " ptime AS PROCTIME(),"
+        " PRIMARY KEY(`user`) NOT ENFORCED,"
+        " WATERMARK FOR ts AS ts - INTERVAL '1' SECONDS"
+        ") with (...)");
+
+# print the schema
+table_env.execute_sql("DESCRIBE Orders").print()
+
+{% endhighlight %}
+</div>
+
+<div data-lang="SQL CLI" markdown="1">
+{% highlight sql %}
+Flink SQL> CREATE TABLE Orders (
+>  `user` BIGINT NOT NULl,
+>  product VARCHAR(32),
+>  amount INT,
+>  ts TIMESTAMP(3),
+>  ptime AS PROCTIME(),
+>  PRIMARY KEY(`user`) NOT ENFORCED,
+>  WATERMARK FOR ts AS ts - INTERVAL '1' SECONDS
+> ) with (
+>  ...
+> );
+[INFO] Table has been created.
+
+Flink SQL> DESCRIBE Orders;
+
+{% endhighlight %}
+</div>
+</div>
+
+The result of the above example is:
+<div class="codetabs" markdown="1">
+<div data-lang="java" markdown="1">
+{% highlight text %}
+
++---------+----------------------------------+-------+-----------+-----------------+----------------------------+
+|    name |                             type |  null |       key | computed column |                  watermark |
++---------+----------------------------------+-------+-----------+-----------------+----------------------------+
+|    user |                           BIGINT | false | PRI(user) |                 |                            |
+| product |                      VARCHAR(32) |  true |           |                 |                            |
+|  amount |                              INT |  true |           |                 |                            |
+|      ts |           TIMESTAMP(3) *ROWTIME* |  true |           |                 | `ts` - INTERVAL '1' SECOND |
+|   ptime | TIMESTAMP(3) NOT NULL *PROCTIME* | false |           |      PROCTIME() |                            |
++---------+----------------------------------+-------+-----------+-----------------+----------------------------+
+5 rows in set
+
+{% endhighlight %}
+</div>
+<div data-lang="scala" markdown="1">
+{% highlight text %}
+
++---------+----------------------------------+-------+-----------+-----------------+----------------------------+
+|    name |                             type |  null |       key | computed column |                  watermark |
++---------+----------------------------------+-------+-----------+-----------------+----------------------------+
+|    user |                           BIGINT | false | PRI(user) |                 |                            |
+| product |                      VARCHAR(32) |  true |           |                 |                            |
+|  amount |                              INT |  true |           |                 |                            |
+|      ts |           TIMESTAMP(3) *ROWTIME* |  true |           |                 | `ts` - INTERVAL '1' SECOND |
+|   ptime | TIMESTAMP(3) NOT NULL *PROCTIME* | false |           |      PROCTIME() |                            |
++---------+----------------------------------+-------+-----------+-----------------+----------------------------+
+5 rows in set
+
+{% endhighlight %}
+</div>
+<div data-lang="python" markdown="1">
+{% highlight text %}
+
++---------+----------------------------------+-------+-----------+-----------------+----------------------------+
+|    name |                             type |  null |       key | computed column |                  watermark |
++---------+----------------------------------+-------+-----------+-----------------+----------------------------+
+|    user |                           BIGINT | false | PRI(user) |                 |                            |
+| product |                      VARCHAR(32) |  true |           |                 |                            |
+|  amount |                              INT |  true |           |                 |                            |
+|      ts |           TIMESTAMP(3) *ROWTIME* |  true |           |                 | `ts` - INTERVAL '1' SECOND |
+|   ptime | TIMESTAMP(3) NOT NULL *PROCTIME* | false |           |      PROCTIME() |                            |
++---------+----------------------------------+-------+-----------+-----------------+----------------------------+
+5 rows in set
+
+{% endhighlight %}
+</div>
+<div data-lang="SQL CLI" markdown="1">
+{% highlight text %}
+
+root
+ |-- user: BIGINT NOT NULL
+ |-- product: VARCHAR(32)
+ |-- amount: INT
+ |-- ts: TIMESTAMP(3) *ROWTIME*
+ |-- ptime: TIMESTAMP(3) NOT NULL *PROCTIME* AS PROCTIME()
+ |-- WATERMARK FOR ts AS `ts` - INTERVAL '1' SECOND
+ |-- CONSTRAINT PK_3599338 PRIMARY KEY (user)
+
+{% endhighlight %}
+</div>
+
+</div>
+
+
+{% top %}
+
+## Syntax
+
+{% highlight sql %}
+DESCRIBE [catalog_name.][db_name.]table_name
+{% endhighlight %}
diff --git a/docs/dev/table/sql/describe.zh.md b/docs/dev/table/sql/describe.zh.md
new file mode 100644
index 0000000..cb532ca
--- /dev/null
+++ b/docs/dev/table/sql/describe.zh.md
@@ -0,0 +1,201 @@
+---
+title: "DESCRIBE 语句"
+nav-parent_id: sql
+nav-pos: 7
+---
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+* This will be replaced by the TOC
+{:toc}
+
+DESCRIBE 语句用来描述一张表或者视图的 Schema。
+
+
+## 执行 DESCRIBE 语句
+
+DESCRIBE 语句可以通过 `TableEnvironment` 的 `executeSql()` 执行,也可以在 [SQL CLI]({{ site.baseurl }}/dev/table/sqlClient.html) 中执行 DROP 语句。 若 DESCRIBE 操作执行成功,executeSql() 方法返回该表的 Schema,否则会抛出异常。
+
+以下的例子展示了如何在 TableEnvironment 和 SQL CLI 中执行一个 DESCRIBE 语句。
+
+<div class="codetabs" markdown="1">
+<div data-lang="java" markdown="1">
+{% highlight java %}
+EnvironmentSettings settings = EnvironmentSettings.newInstance()...
+TableEnvironment tableEnv = TableEnvironment.create(settings);
+
+// register a table named "Orders"
+tableEnv.executeSql(
+        "CREATE TABLE Orders (" +
+        " `user` BIGINT NOT NULl," +
+        " product VARCHAR(32)," +
+        " amount INT," +
+        " ts TIMESTAMP(3)," +
+        " ptime AS PROCTIME()," +
+        " PRIMARY KEY(`user`) NOT ENFORCED," +
+        " WATERMARK FOR ts AS ts - INTERVAL '1' SECONDS" +
+        ") with (...)");
+
+// print the schema
+tableEnv.executeSql("DESCRIBE Orders").print();
+
+{% endhighlight %}
+</div>
+
+<div data-lang="scala" markdown="1">
+{% highlight scala %}
+val settings = EnvironmentSettings.newInstance()...
+val tableEnv = TableEnvironment.create(settings)
+
+// register a table named "Orders"
+ tableEnv.executeSql(
+        "CREATE TABLE Orders (" +
+        " `user` BIGINT NOT NULl," +
+        " product VARCHAR(32)," +
+        " amount INT," +
+        " ts TIMESTAMP(3)," +
+        " ptime AS PROCTIME()," +
+        " PRIMARY KEY(`user`) NOT ENFORCED," +
+        " WATERMARK FOR ts AS ts - INTERVAL '1' SECONDS" +
+        ") with (...)")
+
+// print the schema
+tableEnv.executeSql("DESCRIBE Orders").print()
+
+{% endhighlight %}
+</div>
+
+<div data-lang="python" markdown="1">
+{% highlight python %}
+settings = EnvironmentSettings.new_instance()...
+table_env = StreamTableEnvironment.create(env, settings)
+
+# register a table named "Orders"
+table_env.execute_sql( \
+        "CREATE TABLE Orders (" 
+        " `user` BIGINT NOT NULl," 
+        " product VARCHAR(32),"
+        " amount INT,"
+        " ts TIMESTAMP(3),"
+        " ptime AS PROCTIME(),"
+        " PRIMARY KEY(`user`) NOT ENFORCED,"
+        " WATERMARK FOR ts AS ts - INTERVAL '1' SECONDS"
+        ") with (...)");
+
+# print the schema
+table_env.execute_sql("DESCRIBE Orders").print()
+
+{% endhighlight %}
+</div>
+
+<div data-lang="SQL CLI" markdown="1">
+{% highlight sql %}
+Flink SQL> CREATE TABLE Orders (
+>  `user` BIGINT NOT NULl,
+>  product VARCHAR(32),
+>  amount INT,
+>  ts TIMESTAMP(3),
+>  ptime AS PROCTIME(),
+>  PRIMARY KEY(`user`) NOT ENFORCED,
+>  WATERMARK FOR ts AS ts - INTERVAL '1' SECONDS
+> ) with (
+>  ...
+> );
+[INFO] Table has been created.
+
+Flink SQL> DESCRIBE Orders;
+
+{% endhighlight %}
+</div>
+</div>
+
+上述例子执行的结果为:
+<div class="codetabs" markdown="1">
+<div data-lang="java" markdown="1">
+{% highlight text %}
+
++---------+----------------------------------+-------+-----------+-----------------+----------------------------+
+|    name |                             type |  null |       key | computed column |                  watermark |
++---------+----------------------------------+-------+-----------+-----------------+----------------------------+
+|    user |                           BIGINT | false | PRI(user) |                 |                            |
+| product |                      VARCHAR(32) |  true |           |                 |                            |
+|  amount |                              INT |  true |           |                 |                            |
+|      ts |           TIMESTAMP(3) *ROWTIME* |  true |           |                 | `ts` - INTERVAL '1' SECOND |
+|   ptime | TIMESTAMP(3) NOT NULL *PROCTIME* | false |           |      PROCTIME() |                            |
++---------+----------------------------------+-------+-----------+-----------------+----------------------------+
+5 rows in set
+
+{% endhighlight %}
+</div>
+<div data-lang="scala" markdown="1">
+{% highlight text %}
+
++---------+----------------------------------+-------+-----------+-----------------+----------------------------+
+|    name |                             type |  null |       key | computed column |                  watermark |
++---------+----------------------------------+-------+-----------+-----------------+----------------------------+
+|    user |                           BIGINT | false | PRI(user) |                 |                            |
+| product |                      VARCHAR(32) |  true |           |                 |                            |
+|  amount |                              INT |  true |           |                 |                            |
+|      ts |           TIMESTAMP(3) *ROWTIME* |  true |           |                 | `ts` - INTERVAL '1' SECOND |
+|   ptime | TIMESTAMP(3) NOT NULL *PROCTIME* | false |           |      PROCTIME() |                            |
++---------+----------------------------------+-------+-----------+-----------------+----------------------------+
+5 rows in set
+
+{% endhighlight %}
+</div>
+<div data-lang="python" markdown="1">
+{% highlight text %}
+
++---------+----------------------------------+-------+-----------+-----------------+----------------------------+
+|    name |                             type |  null |       key | computed column |                  watermark |
++---------+----------------------------------+-------+-----------+-----------------+----------------------------+
+|    user |                           BIGINT | false | PRI(user) |                 |                            |
+| product |                      VARCHAR(32) |  true |           |                 |                            |
+|  amount |                              INT |  true |           |                 |                            |
+|      ts |           TIMESTAMP(3) *ROWTIME* |  true |           |                 | `ts` - INTERVAL '1' SECOND |
+|   ptime | TIMESTAMP(3) NOT NULL *PROCTIME* | false |           |      PROCTIME() |                            |
++---------+----------------------------------+-------+-----------+-----------------+----------------------------+
+5 rows in set
+
+{% endhighlight %}
+</div>
+<div data-lang="SQL CLI" markdown="1">
+{% highlight text %}
+
+root
+ |-- user: BIGINT NOT NULL
+ |-- product: VARCHAR(32)
+ |-- amount: INT
+ |-- ts: TIMESTAMP(3) *ROWTIME*
+ |-- ptime: TIMESTAMP(3) NOT NULL *PROCTIME* AS PROCTIME()
+ |-- WATERMARK FOR ts AS `ts` - INTERVAL '1' SECOND
+ |-- CONSTRAINT PK_3599338 PRIMARY KEY (user)
+
+{% endhighlight %}
+</div>
+
+</div>
+
+{% top %}
+
+## 语法
+
+{% highlight sql %}
+DESCRIBE [catalog_name.][db_name.]table_name
+{% endhighlight %}
diff --git a/docs/dev/table/sql/index.md b/docs/dev/table/sql/index.md
index 73076e8..06f8bd3 100644
--- a/docs/dev/table/sql/index.md
+++ b/docs/dev/table/sql/index.md
@@ -34,6 +34,7 @@ This page lists all the supported statements supported in Flink SQL for now:
 - [ALTER TABLE, DATABASE, FUNCTION](alter.html)
 - [INSERT](insert.html)
 - [SQL HINTS](hints.html)
+- [DESCRIBE](describe.html)
 
 ## Data Types
 
diff --git a/docs/dev/table/sql/index.zh.md b/docs/dev/table/sql/index.zh.md
index 70130e8..00d34ab 100644
--- a/docs/dev/table/sql/index.zh.md
+++ b/docs/dev/table/sql/index.zh.md
@@ -34,6 +34,7 @@ under the License.
 - [ALTER TABLE, DATABASE, FUNCTION](alter.html)
 - [INSERT](insert.html)
 - [SQL HINTS](hints.html)
+- [DESCRIBE](describe.html)
 
 ## 数据类型
 
diff --git a/docs/dev/table/sql/queries.md b/docs/dev/table/sql/queries.md
index b667c29..9bfb953 100644
--- a/docs/dev/table/sql/queries.md
+++ b/docs/dev/table/sql/queries.md
@@ -382,7 +382,7 @@ String literals must be enclosed in single quotes (e.g., `SELECT 'Hello World'`)
 
 ## Operations
 
-### Show, Describe, and Use
+### Show and Use
 
 <div markdown="1">
 <table class="table table-bordered">
@@ -419,22 +419,6 @@ SHOW VIEWS;
     </tr>
     <tr>
       <td>
-        <strong>Describe</strong><br>
-        <span class="label label-primary">Batch</span> <span class="label label-primary">Streaming</span>
-      </td>
-      <td>
-			<p>Describe the schema of the given table.</p>
-{% highlight sql %}
-DESCRIBE myTable;
-{% endhighlight %}
-            <p>Describe the schema of the given view.</p>
-{% highlight sql %}
-DESCRIBE myView;
-{% endhighlight %}
-      </td>
-    </tr>    
-    <tr>
-      <td>
         <strong>Use</strong><br>
         <span class="label label-primary">Batch</span> <span class="label label-primary">Streaming</span>
       </td>
diff --git a/docs/dev/table/sql/queries.zh.md b/docs/dev/table/sql/queries.zh.md
index 62efaca..147b682 100644
--- a/docs/dev/table/sql/queries.zh.md
+++ b/docs/dev/table/sql/queries.zh.md
@@ -380,7 +380,7 @@ Flink SQL 对于标识符(表、属性、函数名)有类似于 Java 的词
 
 ## 操作符
 
-### Show, Describe 与 Use
+### Show 与 Use
 
 <div markdown="1">
 <table class="table table-bordered">
@@ -417,22 +417,6 @@ SHOW VIEWS;
     </tr>
     <tr>
       <td>
-        <strong>Describe</strong><br>
-        <span class="label label-primary">批处理</span> <span class="label label-primary">流处理</span>
-      </td>
-      <td>
-			<p>描述给定表的 Schema</p>
-{% highlight sql %}
-DESCRIBE myTable;
-{% endhighlight %}
-            <p>描述给定视图的 Schema</p>
-{% highlight sql %}
-DESCRIBE myView;
-{% endhighlight %}
-      </td>
-    </tr>    
-    <tr>
-      <td>
         <strong>Use</strong><br>
         <span class="label label-primary">批处理</span> <span class="label label-primary">流处理</span>
       </td>