Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 
Sawa_Ito
Product and Topic Expert
Product and Topic Expert
0 Kudos

このブログは、2022 年 11 月 21 日に SAP ジャパン公式ブログに掲載されたものを SAP ジャパン公式ブログ閉鎖に伴い転載したものです。




このブログは、rnagweka13 が執筆したブログ「HANA Data Lake Materialized Views」(2022 年 9 月 8 日)の抄訳です。

最新の情報は、SAP Community の最新ブログマニュアルを参照してください。




 

概要


 

マテリアライズドビューとは何か?


マテリアライズドビューは、クエリー結果を保つデータベースオブジェクトです。
これは、例えば離れたデータのローカルコピーや、テーブルの行やカラムのサブセット、join の結果、あるいは aggregate 関数によって作成されたサマリーなどです。

 

マテリアライズドビューを使用するメリットは何か?


 

    1. パフォーマンスの向上:同じ aggregation 関数でも、通常ソーステーブルへのクエリーよりもマテリアライズドビューへのクエリーの方が高速です。

 

    1. データの鮮度:マテリアライズを最後にいつ行ったかにかかわらず、マテリアライズドビューへのクエリーは常に最新の結果を返します。このクエリーで、マテリアライズされたビューのコンポーネントと、まだマテリアライズされていないソーステーブルのエントリー(デルタセクション)とを結合するため、常に最新の結果が返されます。

 

    1. コスト削減:マテリアライズドビューへのクエリーは、ソーステーブルへ aggregate するよりも少ないクラスターリソースを使用します。単純に aggregation が必要な場合には、ソーステーブルのリテンション(保持)ポリシーを減らすことができ、この設定によって、ソーステーブルのホットキャッシュの費用が低減します。



 


 

このブログのコンテンツ


 

    1. SAP HANA Cloud, data lake のマテリアライズドビューの作成

 

    1. SAP HANA Cloud, HANA データベースへのビューの仮想化



 

前提条件


 

    1. マテリアライズドビューが参照するアイテム(テーブル)がすでにSAP HANA Cloud, data lake に存在していること。.

 

    1. データベース内でマテリアライズドビューを構成する条件を満たしていること。データベースオプション要件については、マテリアライズドビューの必要条件と制限を参照してください。

 

    1. マテリアライズドビューを作成、イニシャライズ、またはリフレッシュする前に、全ての制限事項を満たしていることを確認してください。詳細は、マテリアライズドビューの必要条件と制限を参照してください。

 

    1. SAP HANA Cloud, data lake リレーショナルエンジンのリレーショナルコンテナ(SYSHDL <データレイクリレーショナルコンテナ名>)に接続している SAP HANA Cloud, HANAデータベースリレーショナルコンテナスキーマの REMOTE EXECUTE プロシージャーへの EXECUTE 権限があること。



 

1. SAP HANA Cloud, data lake リレーショナルエンジンのマテリアライズドビューの作成


 

SAP HANA Cloud, data lake リレーショナルエンジンのクエリーからのデータを格納するため、マテリアライズドビューを使用します。

参照マニュアル – HANA Cloud, data lake リレーショナルエンジンのマテリアライズドビューの作成 | SAP Help Portal

 

 

SAP HANA Cloud, data lake リレーショナルエンジンのマテリアライズドビュー作成のための構文

 

CREATE MATERIALIZED VIEW [<owner.>]<view-name> [ ( <alt-column-names>) ]



    AS <select-statement> [ { AUTO | MANUAL } FULL REFRESH ]



<alt-column-names> ::= ( <column-name>[, <column-name>...)

 

 


 

権限が必要です。


SAP HANA Cloud, data lake の REMOTE EXECUTE プロシージャーに関連している SAP HANA Cloud, HANA データベースリレーショナルコンテナスキーマへの EXECUTE アクセス権限が必要です。



最初に、 SAP HANA Cloud, HANA データベース接続から CUSTOMER と ORDERS テーブルを SAP HANA Cloud, data lakeリレーショナルエンジンに作成します。

HANA に接続している SQL コンソールを開き(DBADMIN または HANA ユーザー)、新しい SAP HANA Cloud, data lake リレーショナルエンジンのリレーショナルコンテナを作成します。

 

以下の SQL 文を実行し、リレーショナルコンテナを作成します。

 

CALL SYSHDL.CREATE_CONTAINER('TIERING_CONTAINER','<DBADMIN or any other HANA USER>');


 

SAP HANA Database Explorer の画面は以下のとおりです。

 



 

テーブル定義を作成します。

 

この SAP HANA Cloud, data lake リレーショナルエンジン (SAP HANA Cloud, HANA DB マネージド) の SQL 文は、SAP HANA データベースユーザーとして、SAP HANA Cloud, HANA データベースに接続し、REMOTE_EXECUTE () プロシージャーを使用した時に使用することができます。


 

DDL 文を直接 SAP HANA Cloud, data lake リレーショナルエンジンに渡すために、REMOTE EXECUTE () を使用します。

 




CALL SYSHDL_TIERING_CONTAINER.REMOTE_EXECUTE

('

CREATE TABLE "CUSTOMER" (

   C_CUSTKEY                   integer                        not null,

   C_NAME                      varchar(25)                    not null,

   C_ADDRESS                   varchar(40)                    not null,

   C_NATIONKEY                 integer                        not null,

   C_PHONE                     varchar(15)                    not null,

   C_ACCTBAL                   decimal(15,2)                  not null,

   C_MKTSEGMENT                varchar(10)                    not null,

   C_COMMENT                   varchar(117)                   not null,

   primary key (C_CUSTKEY)

);







CREATE TABLE "ORDERS" (  

    O_ORDERKEY           bigint                         not null,

    O_CUSTKEY            integer                        not null,

    O_ORDERSTATUS        varchar(2)                     not null,

    O_TOTALPRICE         decimal(15,2)                  not null,

    O_ORDERDATE          date                           not null,

    O_ORDERPRIORITY      varchar(15)                    not null,

    O_CLERK              varchar(15)                    not null,

    O_SHIPPRIORITY       integer                        not null,

    O_COMMENT            varchar(79)                    not null,

    primary key (O_ORDERKEY)

);

');

 

 

 

 


 

マテリアライズドビューの構文:

 

 

 

 

 

以下は、SAP HANA Cloud, data lake にマテリアライズドビューを作成する標準的な構文です。

 

 


 

CREATE MATERIALIZED VIEW CUSTOMERVIEW AS

SELECT CUSTOMER.C_NAME, CUSTOMER.C_ADDRESS, CUSTOMER.C_PHONE,

               ORDERS.O_ORDERSTATUS, ORDERS.O_TOTALPRICE

FROM CUSTOMER, ORDERS

WHERE CUSTOMER.C_CUSTKEY=ORDERS.O_CUSTKEY

AUTO FULL REFRESH;


 

SAP HANA Cloud, HANA 接続から上記のSQL文を実行するために、以下のようにREMOTE_EXECUTE () を実行します。

 

CALL SYSHDL_TIERING_CONTAINER_TEST.REMOTE_EXECUTE

('

CREATE MATERIALIZED VIEW CUSTOMERVIEW AS

SELECT CUSTOMER.C_NAME, CUSTOMER.C_ADDRESS, CUSTOMER.C_PHONE,

               ORDERS.O_ORDERSTATUS, ORDERS.O_TOTALPRICE

FROM CUSTOMER, ORDERS

WHERE CUSTOMER.C_CUSTKEY=ORDERS.O_CUSTKEY

AUTO FULL REFRESH;

');


 



 

 

 

2. SAP HANA Cloud, HANAデータベース内のビューの仮想


 

SAP HANA Cloud, HANA データベースにマテリアライズドビューを出すために、作成したマテリアライズドビューを参照する仮想テーブルを HANA に作成する必要があります。

DBADMIN 接続を使用して、VIRTUAL HANA テーブルを作成します。

 

CREATE VIRTUAL TABLE CUSTOMER (

   C_CUSTKEY            integer                        not null,

   C_NAME               varchar(25)                    not null,

   C_ADDRESS            varchar(40)                    not null,

   C_NATIONKEY          integer                        not null,

   C_PHONE              varchar(15)                    not null,

   C_ACCTBAL            decimal(15,2)                  not null,

   C_MKTSEGMENT         varchar(10)                    not null,

   C_COMMENT            varchar(117)                   not null,

   primary key (C_CUSTKEY)

) AT "SYSHDL_TIERING_CONTAINER_SOURCE"."NULL"."SYSHDL_TIERING_CONTAINER"."CUSTOMERVIEW" WITH REMOTE;


 

SAP HANA Cloud, data lake リレーショナルエンジンのマテリアライズドビューのステートメントを削除します。


 

以下は、データベースからマテリアライズドビューを削除するための標準的な構文です。

 

DROP MATERIALIZED VIEW [ IF EXISTS ] [ <owner>.]<view-name>


 

マテリアライズドビューを削除するために、以下のように、REMOTE_EXECUTE () を実行します。

 

CALL SYSHDL_TIERING_CONTAINER_TEST.REMOTE_EXECUTE

('

DROP MATERIALIZED VIEW IF EXISTS CUSTOMERVIEW;

');


 

 

マテリアライズドビューを ALTER します。

 

以下はマテリアライズドビューの ALTER の基本的な構文です。

 

ALTER MATERIALIZED VIEW [ <owner>]<view-name> 

   { SET HIDDEN

   | { ENABLE | DISABLE }

   | RENAME { PARTITION | SUBPARTITION } <range-partition-name> TO <new-range-partition-name>

   | SPLIT { PARTITION | SUBPARTITION } <split-object>

   | MERGE { PARTITION | SUBPARTITION } <partition-name-1> INTO <partition-name-2> 

   | PARTITION BY { <range-partitioning-scheme>  

                  | <hash-partitioning-scheme> 

                  | <hash-range-partitioning-scheme> }

   | SUBPARTITION BY RANGE <range-partition-decl>

   | ADD { PARTITION | SUBPARTITION } BY RANGE <range-partition-decl>

   | UNPARTITION

   | [ { AUTO | MANUAL } FULL REFRESH ] }


 

クリーンアップを行います。

 

1. 以下の構文を使用してマテリアライズドビューを削除します。

 

CALL SYSHDL_TIERING_CONTAINER_TEST.REMOTE_EXECUTE

('

DROP MATERIALIZED VIEW IF EXISTS CUSTOMERVIEW;

');


 

2. 作成されたテーブル定義を削除します。

 

CALL SYSHDL_TIERING_CONTAINER.REMOTE_EXECUTE

('

DROP TABLE CUSTOMER;



DROP TABLE ORDERS;

');



DROP TABLE CUSTOMER WITH REMOTE


 

3. リモートコンテナを削除します。

 

CALL SYSHDL.DELETE_CONTAINER('<relational_container_name>'); 

 

 


 


まとめ


 

このように、SAP HANA Cloud, HANA データベースとSAP HANA Cloud, data lake リレーショナルエンジン内にマテリアライズドビューを容易に作成して管理することができます。

 




オリジナルのブログはここまでです。