使用视图

视图可用于任何 SQL 查询或子查询的 FROM 子句中。执行期间,Vertica 会在内部将查询中使用的视图名称替换为视图定义中使用的实际查询。

创建视图示例

以下 CREATE VIEW 语句创建 myview 视图,它会将 store.store_sales_fact 表中所列的各个客户的所有收入相加,并按州对结果进行分组:

=> CREATE VIEW myview AS
   SELECT SUM(annual_income), customer_state FROM public.customer_dimension
     WHERE customer_key IN (SELECT customer_key FROM store.store_sales_fact)
     GROUP BY customer_state
     ORDER BY customer_state ASC;

您可以使用此视图查找所有大于 20 亿美元的合并收入:

=> SELECT * FROM myview where sum > 2000000000 ORDER BY sum DESC;
     SUM     | customer_state
-------------+----------------
 29253817091 | CA
 14215397659 | TX
  5225333668 | MI
  4907216137 | CO
  4581840709 | IL
  3769455689 | CT
  3330524215 | FL
  3310667307 | IN
  2832710696 | TN
  2806150503 | PA
  2793284639 | MA
  2723441590 | AZ
  2642551509 | UT
  2128169759 | NV
(14 rows)

启用视图访问

您可以查询自己创建的任何视图。要使其他非超级用户能够访问视图,您必须:

  • 对视图的基表具有 SELECT...WITH GRANT OPTION 权限

  • 授予用户对视图架构的 USAGE 权限

  • 授予用户对视图本身的 SELECT 权限

下面的示例向 user2 授予视图 schema1.view1 的访问权限。

=> GRANT USAGE ON schema schema1 TO user2;
=> GRANT SELECT ON schema1.view1 TO user2;

有关详细信息,请参阅GRANT(视图)