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

MaxCompute:ビューの管理

最終更新日:Jul 23, 2026

ビューとは、1 つまたは複数のテーブルに対するクエリで定義される仮想テーブルです。ビューを使用すると、ストレージ領域を消費する物理テーブルを作成することなく、クエリロジック (SQL 文) を保存できます。本トピックでは、ビューを管理するためのコマンドと、その使用例を説明します。

次の表では、ビューの管理に使用するコマンドについて説明します。

操作

説明

必要な権限

プラットフォーム

ビューの作成または更新

クエリに基づいてビューを作成するか、既存のビューを更新します。

プロジェクトに対する CreateTable 権限。

これらのコマンドは、次のプラットフォームで実行できます。

ビューの名前の変更

既存のビューの名前を変更します。

ビューに対する Alter 権限。

ビューの所有者の変更

既存のビューの所有者を変更します。

プロジェクトの所有者。

標準ビューの一覧表示

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

プロジェクトに対する List 権限。

標準ビューの DDL 文の表示

標準ビューの DDL 文を表示します。

ビューに対する Describe 権限。

ビューの記述

既存のビューのメタデータを表示します。

ビューに対する Describe 権限。

ビューの削除

既存のビューを削除します。

ビューに対する Drop 権限。

ビューの作成または更新

クエリに基づいてビューを作成するか、既存のビューを更新します。

  • 制限事項

    • ビューは他のビューを参照できますが、自身を参照したり、循環参照を作成したりすることはできません。

    • ビューにデータを書き込むことはできません。 たとえば、ビューに対して INSERT INTO INSERT 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

    いいえ

    作成するビュー内の列の名前。 省略した場合、SELECT 文の列名が使用されます。

    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 '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 '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) 0.43.0 以降が必要です。

  • 構文

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

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

    次の結果が返されます。

    ALIYUN$account_name:sale_detail_view
    ......
    -- プロンプトの ALIYUN は、Alibaba Cloud アカウントを使用していることを示します。 RAM ユーザーを使用している場合、プロンプトは RAM になります。

標準ビューの DDL 文の表示

標準ビューの DDL 文を表示します。

  • 構文

    SHOW CREATE VIEW <view_name>;
  • パラメーター

    view_name:必須。 標準ビューの名前。

  • -- 'sale_detail_view' の作成文を表示します。
    SHOW CREATE VIEW sale_detail_view;
    -- 次の結果が返されます。
    CREATE VIEW IF NOT EXISTS project.sale_detail_view(store_name,customer_id,price,sale_date,region) COMMENT 'sale_detail テーブルのビュー' AS SELECT sale_detail.shop_name, sale_detail.customer_id, sale_detail.total_price, sale_detail.sale_date, sale_detail.region FROM project.sale_detail sale_detail;

ビューの記述

ビューのメタデータ (ViewText)、作成時刻、プロジェクトなどを表示します。

  • 構文

    DESC <view_name>; 
  • パラメーター

    view_name:必須。 ビューの名前。

  • DESC sale_detail_view;

    次の結果が返されます。

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

ビューの削除

既存のビューを削除します。

  • 構文

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

    パラメーター

    必須

    説明

    IF EXISTS

    いいえ

    ビューが存在せず、 IF EXISTS を指定しなかった場合、エラーが発生します。

    view_name

    はい

    削除するビューの名前。

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