すべてのプロダクト
Search
ドキュメントセンター

MaxCompute:ビュー関連操作

最終更新日:Mar 25, 2025

ビューは、テーブル層の既存のテーブルから作成される仮想テーブルです。ストレージ容量を消費する追加のテーブルを必要とせずに、クエリロジック (SQL 文) を維持できます。このトピックでは、ビューを管理するための文と、その使用例について説明します。

操作

種類

ロール

操作プラットフォーム

ビューの作成または更新

プロジェクトで CreateTable 権限を持つユーザー

このトピックで説明されているコマンドは、次のプラットフォームで実行できます。

ビューの名前変更

テーブルに対する Alter 権限を持つユーザー

ビューの所有者の変更

テーブルに対する Alter 権限を持つユーザー

プロジェクト内のすべての標準ビューを一覧表示する

プロジェクト内のオブジェクトに対する List 権限を持つユーザー

ビューのクエリ

テーブルメタデータを読み取るための Describe 権限を持つユーザー

ビューの削除

テーブルに対する Drop 権限を持つユーザー

ビューの作成または更新

この操作では、クエリ文を使用して新しいビューを作成するか、既存のビューを更新します。

  • 制限

    • ビューは他のビューを参照できますが、循環参照や自己参照を作成しないでください。

    • ビューにデータを書き込むことはできません。INSERT INTOINSERT OVERWRITE などの操作は許可されていません。

  • 構文

    CREATE [OR REPLACE] VIEW [IF NOT EXISTS] <view_name>
        [(<col_name> [comment <col_comment>], ...)]
        [comment <view_comment>]
        AS <select_statement>;
  • パラメータ

    パラメータ

    必須

    説明

    OR REPLACE

    いいえ

    既存のビューを更新するには、このフィールドを含める必要があります。

    IF NOT EXISTS

    いいえ

    IF NOT EXISTS が指定されていない場合、CREATE VIEW を使用して既に存在するビューを作成しようとすると、例外が発生します。この場合、CREATE OR REPLACE VIEW を使用してビューを再作成できます。ビューの権限は、再作成後も変更されません。

    view_name

    はい

    作成または更新するビューの名前。

    col_name

    はい

    作成するビューの列の名前。

    col_comment

    いいえ

    作成するビューの列のコメント。

    view_comment

    いいえ

    作成するビューのコメント。

    select_statement

    はい

    ビューのデータソースとなる SELECT クエリ文。ビューで参照されるテーブルに対する読み取り権限が必要です。ビューでは、有効な SELECT 文は 1 つだけ許可されます。

    説明

    ビューの作成または更新後、参照先のテーブルが変更された場合、ビューにアクセスできなくなる可能性があります。たとえば、参照先のテーブルが削除された場合などです。参照先のテーブルとビュー間のマッピングを維持する必要があります。

    • 例 1:sale_detail テーブルに基づいて sale_detail_view ビューを作成します。

      CREATE VIEW IF NOT EXISTS sale_detail_view 
      (store_name, customer_id, price, sale_date, region) 
      comment 'a view for table sale_detail' /* sale_detail テーブルのビュー */
      AS SELECT * FROM sale_detail;
    • 例 2:sale_detail テーブルに基づいて sale_detail_view ビューを更新します。

      CREATE OR REPLACE VIEW IF NOT EXISTS sale_detail_view 
      (store_name, customer_id, price)
      comment 'a view for table sale_detail' /* sale_detail テーブルのビュー */
      AS SELECT shop_name, customer_id, total_price FROM sale_detail;

ビューの名前変更

  • 構文

    ALTER VIEW <view_name> RENAME TO <new_view_name>;
  • パラメータ

    パラメータ

    必須

    説明

    view_name

    はい

    名前を変更するビューの名前。

    new_view_name

    はい

    ビューの新しい名前。新しい名前のビューが既に存在する場合は、エラーが返されます。

  • --ビュー sale_detail_view の名前を market に変更します。
    ALTER VIEW sale_detail_view RENAME TO market;

ビューの所有者の変更

  • 構文

    ALTER VIEW <view_name> CHANGEOWNER TO <new_owner>;
  • パラメータ

    パラメータ

    必須

    説明

    view_name

    はい

    所有者を変更するビューの名前。

    new_owner

    はい

    変更後の新しい所有者のアカウント。

  • -- sale_detail_view ビューの所有者を ALIYUN$xxx@aliyun.com に変更します。
    ALTER VIEW sale_detail_view CHANGEOWNER TO 'ALIYUN$xxx@aliyun.com';

プロジェクト内のすべての標準ビューを一覧表示するプロジェクト内のビュー

説明

SHOW VIEWS; コマンドには、MaxCompute クライアント (odpscmd) V0.43.0 以降が必要です。

  • 構文

    プロジェクト内のビューのみを一覧表示するには、SHOW VIEWS; を使用します。または、SHOW TABLES; は、プロジェクト内のすべてのテーブルとビューを一覧表示します。詳細については、「プロジェクト内のテーブルとビューを一覧表示する」をご参照ください。

    --プロジェクト内のすべての標準ビューを一覧表示します。
    SHOW VIEWS;
    -- chart パターンに一致する名前のビューをプロジェクトに一覧表示します。
    SHOW VIEWS LIKE '<chart>';
  • SHOW VIEWS LIKE 'sale*';  

    返された結果:

    ALIYUN$account_name:sale_detail_view
    ......
    --ALIYUN はシステムプロンプトで、テーブルが Alibaba Cloud アカウントを使用して作成されたことを示します。RAM ユーザーの場合は、システムプロンプトは RAM です。

ビューのクエリ

定義情報、作成時刻、ビューが属するプロジェクト、およびその他のメタデータ情報を表示します。

  • 構文

    DESC <view_name>; 
  • パラメータ

    view_name:必須。クエリを実行するビューの名前。

  • DESC sale_detail_view;

    返された結果:

    +------------------------------------------------------------------------------------+
    | Owner:                    ALIYUN$san****@aliyunid.com                  |
    | Project:                  aning****                                               |
    | Schema:                   default                                                  |
    | TableComment:                                                                      |
    +------------------------------------------------------------------------------------+
    | CreateTime:               2025-03-19 13:22:48                                      |
    | LastDDLTime:              2025-03-19 13:22:48                                      |
    | LastModifiedTime:         2025-03-19 13:22:48                                      |
    +------------------------------------------------------------------------------------+
    | VirtualView  : YES                                                                 |
    | ViewText: SELECT shop_name, customer_id, total_price FROM sale_detail              |
    +------------------------------------------------------------------------------------+
    | Native Columns:                                                                    |
    +------------------------------------------------------------------------------------+
    | Field           | Type       | Label | Comment                                     |
    +------------------------------------------------------------------------------------+
    | shop_name       | string     |       |                                             |
    | customer_id     | string     |       |                                             |
    | total_price     | double     |       |                                             |
    +------------------------------------------------------------------------------------+

ビューの削除

このコマンドは、既存のビューをデータベースから削除します。

  • 構文

    DROP VIEW [IF EXISTS] <view_name>;
  • パラメータ

    パラメータ

    必須

    説明

    IF EXISTS

    いいえ

    ビューが存在せず、IF EXISTS が指定されていない場合は、エラーが返されます。

    view_name

    はい

    削除するビューの名前。

  • -- sale_detail_view ビューを削除します。
    DROP VIEW IF EXISTS sale_detail_view;