OpenText Analytics Database 旧Vertica

技術情報サイト

Analytics Database

テーブルにエイリアス(別名)を付与する方法

公開日:
更新日:
基本操作
#テーブル

テーブルにエイリアス(別名)を付与する方法

Verticaにはシノニム(synonym)はありません。
テーブルに対するエイリアス(別名)を付与したい場合は、ビューを使用します。

例えばpublic.table1テーブルに別名(kka1.v1)を付与したい場合は以下のようにCREATE VIEWを使用します。

dbadmin=> CREATE VIEW kka1.v1 AS SELECT * FROM public.table1;
CREATE VIEW

これにより、public.table1、kka1.v1 どちらを検索した場合でも同じ結果を得ることができます。

dbadmin=> SELECT * FROM public.table1;
    日付    | 顧客ID |  店舗  | エリア | 売上高
------------+--------+--------+--------+--------
 2013-07-01 |  10001 | 新宿   | 東京   |    100
 2013-07-03 |  10004 | 梅田   | 大阪   |   2400
 2014-07-01 |  10002 | 新宿   | 東京   |   1000
 2014-07-03 |  10005 | 池袋   | 東京   |   1600
 2015-07-02 |  10003 | 名古屋 | 名古屋 |  10000
 2015-07-03 |  10006 | 新宿   | 東京   |   6400
 2014-07-06 |  10008 | 梅田   | 大阪   |   1100
 2013-07-05 |  10007 | 品川   | 東京   |   1000
 2015-07-06 |  10009 | 名古屋 | 名古屋 |   1300

dbadmin=> SELECT * FROM kka1.v1;
    日付    | 顧客ID |  店舗  | エリア | 売上高
------------+--------+--------+--------+--------
 2013-07-05 |  10007 | 品川   | 東京   |   1000
 2015-07-06 |  10009 | 名古屋 | 名古屋 |   1300
 2014-07-06 |  10008 | 梅田   | 大阪   |   1100
 2013-07-01 |  10001 | 新宿   | 東京   |    100
 2013-07-03 |  10004 | 梅田   | 大阪   |   2400
 2014-07-01 |  10002 | 新宿   | 東京   |   1000
 2014-07-03 |  10005 | 池袋   | 東京   |   1600
 2015-07-02 |  10003 | 名古屋 | 名古屋 |  10000
 2015-07-03 |  10006 | 新宿   | 東京   |   6400

また、ビューには権限を付与できるため、セキュリティ目的でも利用できます。

例)参照用ユーザ(kka1)にはpublic.table1テーブルは参照させず、kka1.v1ビューを参照させたい場合

現在public.table1、kka1.v1ともに所有者(Owner)はdbadminユーザのため、デフォルトではkka1ユーザはどちらも参照することができません。

dbadmin=> \d
               List of tables
 Schema |  Name  | Kind  |  Owner  | Comment
--------+--------+-------+---------+---------
 public | table1 | table | dbadmin |

dbadmin=> \dv
           List of views
 Schema | Name |  Owner  | Comment
--------+------+---------+---------
 kka1   | v1   | dbadmin |

kka1=> SELECT * FROM public.table1;
ERROR 4367:  Permission denied for relation table1

kka1=> SELECT * FROM kka1.v1;
ERROR 4367:  Permission denied for relation v1

kka1.v1のみ参照権限を与える場合は、以下のようにGRANT文を実行します。

v1ビューが存在するkka1スキーマに対するUSAGE権限を付与します。

dbadmin=> GRANT USAGE ON SCHEMA kka1 TO kka1;
GRANT PRIVILEGE

v1ビューに対するSELECT(参照)権限を付与します。

dbadmin=> GRANT SELECT ON TABLE kka1.v1 TO kka1;
GRANT PRIVILEGE

上記の権限を付与することで、kka1ユーザはkka1.v1ビューの参照が可能になります。

kka1=> SELECT * FROM public.table1;
ERROR 4367:  Permission denied for relation table1

kka1=> SELECT * FROM kka1.v1;
    日付    | 顧客ID |  店舗  | エリア | 売上高
------------+--------+--------+--------+--------
 2013-07-05 |  10007 | 品川   | 東京   |   1000
 2015-07-06 |  10009 | 名古屋 | 名古屋 |   1300
 2013-07-01 |  10001 | 新宿   | 東京   |    100
 2013-07-03 |  10004 | 梅田   | 大阪   |   2400
 2014-07-01 |  10002 | 新宿   | 東京   |   1000
 2014-07-03 |  10005 | 池袋   | 東京   |   1600
 2015-07-02 |  10003 | 名古屋 | 名古屋 |  10000
 2015-07-03 |  10006 | 新宿   | 東京   |   6400
 2014-07-06 |  10008 | 梅田   | 大阪   |   1100

参考情報

作成したビューの詳細情報を確認する方法
https://www.ashisuto.co.jp/cm/analytics-database/views.html

検証バージョンについて

この記事の内容はVertica 9.1で確認しています。