
このブログは、2022 年 11 月 21 日に SAP ジャパン公式ブログに掲載されたものを SAP ジャパン公式ブログ閉鎖に伴い転載したものです。
このブログは、rnagweka13 が執筆したブログ「HANA Data Lake Materialized Views」(2022 年 9 月 8 日)の抄訳です。
最新の情報は、SAP Community の最新ブログやマニュアルを参照してください。
マテリアライズドビューは、クエリー結果を保つデータベースオブジェクトです。
これは、例えば離れたデータのローカルコピーや、テーブルの行やカラムのサブセット、join の結果、あるいは aggregate 関数によって作成されたサマリーなどです。
SAP HANA Cloud, data lake リレーショナルエンジンのクエリーからのデータを格納するため、マテリアライズドビューを使用します。
参照マニュアル – HANA Cloud, data lake リレーショナルエンジンのマテリアライズドビューの作成 | SAP Help Portal
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) ); ');
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; ');
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;
以下は、データベースからマテリアライズドビューを削除するための標準的な構文です。
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 リレーショナルエンジン内にマテリアライズドビューを容易に作成して管理することができます。
オリジナルのブログはここまでです。
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
28 | |
25 | |
23 | |
19 | |
19 | |
15 | |
13 | |
10 | |
10 | |
8 |