mirror of
https://github.com/apache/impala.git
synced 2025-12-19 09:58:28 -05:00
Update document for
[ CREATE VIEW ... TBLPROPERTIES ('key' = 'value', ...) ]
and
[ ALTER VIEW view_name SET/UNSET TBLPROPERTIES... ] syntax.
Change-Id: Ief1d6bb525ba85a58b8123a0cb712d83523daaec
Reviewed-on: http://gerrit.cloudera.org:8080/19143
Tested-by: Impala Public Jenkins <impala-public-jenkins@cloudera.com>
Reviewed-by: Quanlong Huang <huangquanlong@gmail.com>
182 lines
7.4 KiB
XML
182 lines
7.4 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!--
|
|
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.
|
|
-->
|
|
<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
|
|
<concept rev="1.1" id="create_view">
|
|
|
|
<title>CREATE VIEW Statement</title>
|
|
|
|
<titlealts audience="PDF">
|
|
|
|
<navtitle>CREATE VIEW</navtitle>
|
|
|
|
</titlealts>
|
|
|
|
<prolog>
|
|
<metadata>
|
|
<data name="Category" value="Impala"/>
|
|
<data name="Category" value="SQL"/>
|
|
<data name="Category" value="DDL"/>
|
|
<data name="Category" value="Tables"/>
|
|
<data name="Category" value="Schemas"/>
|
|
<data name="Category" value="Views"/>
|
|
<data name="Category" value="Developers"/>
|
|
<data name="Category" value="Data Analysts"/>
|
|
</metadata>
|
|
</prolog>
|
|
|
|
<conbody>
|
|
|
|
<p>
|
|
The <codeph>CREATE VIEW</codeph> statement lets you create a shorthand abbreviation for a
|
|
more complicated query. The base query can involve joins, expressions, reordered columns,
|
|
column aliases, and other SQL features that can make a query hard to understand or
|
|
maintain.
|
|
</p>
|
|
|
|
<p>
|
|
Because a view is purely a logical construct (an alias for a query) with no physical data
|
|
behind it, <codeph>ALTER VIEW</codeph> only involves changes to metadata in the metastore
|
|
database, not any data files in HDFS.
|
|
</p>
|
|
|
|
<p conref="../shared/impala_common.xml#common/syntax_blurb"/>
|
|
|
|
<codeblock>CREATE VIEW [IF NOT EXISTS] <varname>view_name</varname>
|
|
[(<varname>column_name</varname> [COMMENT '<varname>column_comment</varname>'][, ...])]
|
|
[COMMENT '<varname>view_comment</varname>']
|
|
[TBLPROPERTIES ('<varname>name</varname>' = '<varname>value</varname>'[, ...])]
|
|
AS <varname>select_statement</varname></codeblock>
|
|
|
|
<p conref="../shared/impala_common.xml#common/ddl_blurb"/>
|
|
|
|
<p conref="../shared/impala_common.xml#common/usage_notes_blurb"/>
|
|
|
|
<p>
|
|
The <codeph>CREATE VIEW</codeph> statement can be useful in scenarios such as the
|
|
following:
|
|
</p>
|
|
|
|
<ul>
|
|
<li>
|
|
To turn even the most lengthy and complicated SQL query into a one-liner. You can issue
|
|
simple queries against the view from applications, scripts, or interactive queries in
|
|
<cmdname>impala-shell</cmdname>. For example:
|
|
<codeblock>select * from <varname>view_name</varname>;
|
|
select * from <varname>view_name</varname> order by c1 desc limit 10;</codeblock>
|
|
The more complicated and hard-to-read the original query, the more benefit there is to
|
|
simplifying the query using a view.
|
|
</li>
|
|
|
|
<li>
|
|
To hide the underlying table and column names, to minimize maintenance problems if those
|
|
names change. In that case, you re-create the view using the new names, and all queries
|
|
that use the view rather than the underlying tables keep running with no changes.
|
|
</li>
|
|
|
|
<li>
|
|
To experiment with optimization techniques and make the optimized queries available to
|
|
all applications. For example, if you find a combination of <codeph>WHERE</codeph>
|
|
conditions, join order, join hints, and so on that works the best for a class of
|
|
queries, you can establish a view that incorporates the best-performing techniques.
|
|
Applications can then make relatively simple queries against the view, without repeating
|
|
the complicated and optimized logic over and over. If you later find a better way to
|
|
optimize the original query, when you re-create the view, all the applications
|
|
immediately take advantage of the optimized base query.
|
|
</li>
|
|
|
|
<li>
|
|
To simplify a whole class of related queries, especially complicated queries involving
|
|
joins between multiple tables, complicated expressions in the column list, and other SQL
|
|
syntax that makes the query difficult to understand and debug. For example, you might
|
|
create a view that joins several tables, filters using several <codeph>WHERE</codeph>
|
|
conditions, and selects several columns from the result set. Applications might issue
|
|
queries against this view that only vary in their <codeph>LIMIT</codeph>, <codeph>ORDER
|
|
BY</codeph>, and similar simple clauses.
|
|
</li>
|
|
</ul>
|
|
|
|
<p>
|
|
For queries that require repeating complicated clauses over and over again, for example in
|
|
the select list, <codeph>ORDER BY</codeph>, and <codeph>GROUP BY</codeph> clauses, you can
|
|
use the <codeph>WITH</codeph> clause as an alternative to creating a view.
|
|
</p>
|
|
|
|
<p>
|
|
You can optionally specify the table-level and the column-level comments as in the
|
|
<codeph>CREATE TABLE</codeph> statement.
|
|
</p>
|
|
|
|
<p conref="../shared/impala_common.xml#common/complex_types_blurb"/>
|
|
|
|
<p conref="../shared/impala_common.xml#common/complex_types_views"/>
|
|
|
|
<p conref="../shared/impala_common.xml#common/complex_types_views_caveat"/>
|
|
|
|
<p conref="../shared/impala_common.xml#common/sync_ddl_blurb"/>
|
|
|
|
<p conref="../shared/impala_common.xml#common/security_blurb"/>
|
|
|
|
<p conref="../shared/impala_common.xml#common/redaction_yes"/>
|
|
|
|
<p conref="../shared/impala_common.xml#common/cancel_blurb_no"/>
|
|
|
|
<p conref="../shared/impala_common.xml#common/permissions_blurb_no"/>
|
|
|
|
<p conref="../shared/impala_common.xml#common/example_blurb"/>
|
|
|
|
<codeblock>-- Create a view that is exactly the same as the underlying table.
|
|
CREATE VIEW v1 AS SELECT * FROM t1;
|
|
|
|
-- Create a view that includes only certain columns from the underlying table.
|
|
CREATE VIEW v2 AS SELECT c1, c3, c7 FROM t1;
|
|
|
|
-- Create a view that filters the values from the underlying table.
|
|
CREATE VIEW v3 AS SELECT DISTINCT c1, c3, c7 FROM t1 WHERE c1 IS NOT NULL AND c5 > 0;
|
|
|
|
-- Create a view that that reorders and renames columns from the underlying table.
|
|
CREATE VIEW v4 AS SELECT c4 AS last_name, c6 AS address, c2 AS birth_date FROM t1;
|
|
|
|
-- Create a view that runs functions to convert or transform certain columns.
|
|
CREATE VIEW v5 AS SELECT c1, CAST(c3 AS STRING) c3, CONCAT(c4,c5) c5, TRIM(c6) c6, "Constant" c8 FROM t1;
|
|
|
|
-- Create a view that hides the complexity of a view query.
|
|
CREATE VIEW v6 AS SELECT t1.c1, t2.c2 FROM t1 JOIN t2 ON t1.id = t2.id;
|
|
|
|
-- Create a view with a column comment and a table comment.
|
|
CREATE VIEW v7 (c1 COMMENT 'Comment for c1', c2) COMMENT 'Comment for v7' AS SELECT t1.c1, t1.c2 FROM t1;
|
|
|
|
-- Create a view with tblproperties.
|
|
CREATE VIEW v7 (c1 , c2) TBLPROPERTIES ('tblp1' = '1', 'tblp2' = '2') AS SELECT t1.c1, t1.c2 FROM t1;
|
|
</codeblock>
|
|
|
|
<p conref="../shared/impala_common.xml#common/related_info"/>
|
|
|
|
<p>
|
|
<xref href="impala_views.xml#views"/>,
|
|
<xref
|
|
href="impala_alter_view.xml#alter_view"/>,
|
|
<xref
|
|
href="impala_drop_view.xml#drop_view"/>
|
|
</p>
|
|
|
|
</conbody>
|
|
|
|
</concept>
|