EDUCAÇÃO E TECNOLOGIA

Migrate Calculation Views from OnP HANA to HANA Cloud – Part 1


0-1. 本ブログについて

2020年3月27日にSAP HANA Cloudがリリースされました。インメモリデータベースSAP HANAの高速性をより手軽に利用したい、リレーショナルデータレイクを利用しより大容量のデータを取り扱いたい、、低TCOや伸縮性といったクラウドのメリットを享受したい、といった客様にとっては非常に魅力的な選択肢になるのでは、と思います。

SAP HANA Cloudの魅力や最初の始め方は別ブログに任せるとして、本ブログでは特に現在オンプレミスでSAP HANAをご利用いただいているお客様向けに、既存の資産をSAP HANAに移行するための方法をシリーズでご紹介します。

なお、SAP HANA Cloudでは既存SAP HANAからSAP HANA Cloudへの移行ツールのご提供を予定しているため、将来的には本ブログの内容がツールでよりシンプルに行えるようになる可能性がある点、あらかじめご了承ください。(現時点ではSAP Cloud Platform, HANA Service (HANA as a Service / HaaS) からの移行ツールが最初に提供される予定です。)

0-2. 本ブログのシステム環境

On Premise HANA : SAP HANA 2.0 SPS04 Revision 42
HANA Cloud: 4.00.000.00.1583243463 (Last Update March 3, 2020)

0-3. 全体流れ

クラシカルなDBスキーマ「SALES」に3つのテーブル(SO_HEADER, SO_ITEM, MD_PRODUCTS)があり、パッケージ「SALES」に2つのCalculation View(CV_SALES, CV_PRODUCTS)があります。これらを以下のようなステップでSAP HANA Cloudに移行していきます。

Part1: オンプレミスHANAでCalculation ViewをHDIコンテナーのオブジェクトに変換する

Part 2: 変換したオブジェクトをSAP HANA Cloudにインポートする

Part 3: データをオンプレミスHANAからSAP HANA Cloudに移行する

それでは、早速Part1の説明に入っていきます。以下のような流れで進みます。

  1. データモデルの確認
  2. 移行ツールの準備
  3. XSAモデル(HDI)への変換
  4. HDIコンテナーへのモデルのインポート(移行)
  5. HDIコンテナーへのテーブルの移行

スキーマ「SALES」に3つのテーブルがあります。

パッケージ「SALES」に2つのCalculation Viewがあります。DIMENSIONタイプの「CV_PRODUCTS」とCUBE(Star Join)タイプの「CV_SALES」です。

パッケージ「SALES」はDelivery Unit「SALES」に割り当てられています。

SAPヘルプに沿って、移行ツールをダウンロードし、設定を行います。

まず、SAP Support Portalより、「XSAC Migration 1」をダウンロードします。

ダウンロードしたZIPファイルを任意のフォルダーに解凍します。

環境変数を設定します。

インストールしたMigrationツールを使用し、Calculation ViewをXSAモデルに変換します。

まず、変換後のオブジェクトがエクスポートされるフォルダを作成します。今回は「C:\tmp\xs-migration」とします。

フォルダを作成したら、以下のコマンドで変換を実行します。

ここで、ターゲットフォルダは存在していない必要があります。また、「SALES,SAP_JAPAN」はDelivery Unitの名前とそのベンダーです。

xs-migration --target-dir "C:\tmp\xs-migration\Sales" SALES,SAP_JAPAN

(中略)

無事成功しました。指定したフォルダを見ると、ファイルが生成されています。

ここで、「report.html」を見てみましょう。生成されたファイルの情報などが確認できます。

最後に、生成されたソースファイル(フォルダ→db→src)を1つのZIPファイルに圧縮します。

4.1 HDIコンテナーへ変換後オブジェクトをインポート

Web IDE for SAP HANAでXSAにログインし、Project「Sales」の「src」に前のステップでエクスポートした変換後オブジェクトのZIPファイルをインポートします。

ファイルを選択します。

Importを押下します。

無事HDIコンテナーにモデルがインポートされました。

4.2 シノニムの設定

ここまでで新しいCalculation ViewはHDIコンテナーにインポートされましたが、テーブルは何も変換されていません。つまり、クラシカルなスキーマ「SALES」にテーブル・データはあります。このため、HDIコンテナーのCalculation Viewからスキーマ「SALES」にアクセスすための設定を行う必要があります。詳細はSAPヘルプブログを確認いただければと思いますが、ここでは手順のみ説明します。

4.2.1 ロールの作成

HANA Studioより、ロールを作成します。

CREATE ROLE "sales::source_schema"; GRANT SELECT, EXECUTE ON SCHEMA SALES TO "sales::source_schema"; CREATE ROLE "sales::source_schema_g"; GRANT SELECT, EXECUTE ON SCHEMA SALES TO "sales::source_schema_g" WITH GRANT OPTION; CREATE USER USR_GRANTOR password XXXXXXX no force_first_password_change; GRANT "sales::source_schema","sales::source_schema_g" to USR_GRANTOR with admin option; 

4.2.2 XSAへGrantorサービスの登録

XS CLIを使用し、XSAにgrantorサービスを登録します。

xs cups EPM_XXX-table-grantor –p "{"host":"hostname.com","port":"30015","user":"USR_GRANTOR","password":"XXXXXX","driver":"com.sap.db.jdbc.Driver","tags":["hana"]}"

4.2.3. mta.yamlファイルの編集

mta.yamlファイルをCode Editorで開き、先ほど登録したgrantor-serviceを追加します。(枠内)

4.2.4 .hdbgrantsファイルの作成

「src」の下に新規にファイルを作成します。

以下のように記載し、保存、BUILDします。

{ "grantor-service": { "object_owner": { "roles": [ "sales::source_schema_g" ] }, "application_user": { "roles": [ "sales::source_schema" ] } } } 

4.2.5 シノニムの設定

シノニムを設定するための.hdbsynonymファイルを開きます(Migrationツールが自動生成しています)。ここで、Object Name列の「…」を押下します。

「External Services」で先ほど登録したサービスを選択し、オブジェクト名(の一部)を入れ、表示された候補の中から、実テーブルを選択します。(今回はSALESスキーマのテーブルMD_PRODUCT)

他のテーブルも同様に登録し、ファイルを保存、BUILDします。

DB Explorerより、シノニムが作成され、アクセスも可能であることが確認できます。

4.3 インポートしたモデルのBUILD

最後に、インポートしたモデルをBUILDします。

Data Explorerより、Calculation Viewが作成され、アクセスも可能であることが確認できます。これにて無事Calculation ViewがXSA HDIコンテナーへ移行できました。

テーブルはクラシカルなスキーマに置いたままでも問題ありませんが、本ブログではさらにテーブルもHDIコンテナーの中(のスキーマ)に移行します。

5.1 テーブル(.hdbtable)の作成

hdbtableの文法に従いテーブル定義を作成し、BUILDします。
(注:CDSはSAP HANA Cloudでは利用できないため、テーブルはhdbcdsではなくhdbtableで作成ください。)

5.2 データの移行

クラシカルスキーマのテーブル(シノニム)からHDIコンテナー内のテーブルにSQLでデータを移行します。

insert into "SALES_1"."SALES::HDI_MD_PRODUCTS" select * from "SALES_1"."SALES::MD_PRODUCTS"; 

5.3 シノニムの編集

4.2.5と同様、.hdbsynonymファイルを編集し、5.1で作成したテーブルを参照するようにします。

Calculation Viewを再度確認し、データが正常に参照できていることを確認します。

以上で、Calculation ViewをHDI化することができました。次のブログで、今回HDI化したモデルをSAP HANA Cloudに移行します。