Skip to Content
Technical Articles
Author's profile photo Takao Haruki

オンプレSAP HANAのCalculation ViewをSAP HANA Cloudに移行してみる – Part 3

(English version here)

0. はじめに

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

Part 1ではオンプレミスのSAP HANAのCalculation ViewをHDI化し、Part 2では変換したオブジェクトをSAP HANA Cloudに移行しました。このPart3では、データをオンプレミスのSAP HANAからSAP HANA Cloudに移行します。

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

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

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

 

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

では、はじめていきます。データの移行には大きく以下のステップで進めます。

  1. Data Provisioning Agent(DP Agent)を設定する
  2. 仮想テーブルを作成する
  3. データを移行する

本ブログでは、データの移行は仮想テーブルを使用してSQL(Insert – Select文)で行います。もちろんSDIのフローグラフでデータを移行することも可能ですが、これはまた別の機会にご説明しようと思います。

 

1. DP Agent設定する

1.1  DP Agentをインストールする

オンプレミスのSAP HANAとクラウドのSAP HANA Cloudをつなぐために、オンプレミス側にDP Agentをインストールします。本ブログでは、オンプレミスSAP HANAと同じネットワーク内のWindowsサーバーにDP Agentをインストールします。インストールの詳細はSAPヘルプこのブログの「Download DP agent from SAP Service Marketplace as a ZIP file」を参照ください。

1.2 DP Agentの設定を行う

SAPヘルプに沿って設定を行います。

1.2.1 Agent Admin用HANAユーザーの作成

SAP HANA CloudのSAP HANA Cockpitより、以下の権限を持つHANA DBユーザーを作成します。

Application Privilege : sap.hana.im.dp.admin::Administrator
System Privilege : AGENT_ADMIN, ADAPTER_ADMIN

1.2.2 DP Agent設定ツールの起動

まず管理者としてコマンドプロンプトを起動します。以下のように環境変数を設定し、DP Agent設定ツールを起動します。

setx DPA_INSTANCE "C:\usr\sap\dataprovagent"
cd %DPA_INSTANCE%
cd bin
agentcli.bat --configAgent

 

1.2.3 Agentの起動

オプション1(Start or Stop Agent)を選択し、次にオプション1(Start Agent)を選択するとDP Agentが起動します。

 

1.2.4 SAP HANA接続設定

DP AgentからSAP HANA Cloudに接続します。まずオプション6(SAP HANA Connection)を選択します。次に、オプション3(Connect to SAP HANA via JDBC)を選択します。その後、以下のように入力していきます。

Use encrypted JDBC connection : true
Use WebSocket to connect : false
Host Name (for Direct SQL) : SAP HANA Cloud InstanceのEndpoint(*)
Port Number (for Direct SQL) : SAP HANA Cloud InstanceのEndpoint(*)
Agent Admin HANAユーザーとパスワード : 1.2.1で作成したユーザー・パスワード
Use HTTP Proxy Server : false (環境に応じて変更してください)
HANA User for Agent Messaging : 任意のユーザー名・パスワード、true (新規にユーザーを作成)

これで、SAP HANA CloudとDP Agent間の接続が完了しました。

(*) ホスト名とポート番号はSAP Cloud Platform Cockpitより確認します。SAP HANA InstancesのEndpointです。(以下の枠内)

 

1.2.5 DP Agentの登録

DP Agentを登録します。DP Agent設定ツールのトップに戻り、オプション7(Agent Registration)を選択し、その後オプション1(Register Agent)を選択します。

Agent Name : 任意の名前
Agent Host : DP AgentがインストールされているサーバーのIPアドレス

 

1.2.6 Adapterの登録

SAP HANAと接続するためのAdapter「HanaAdapter」を登録します。DP Agent設定ツールのトップに戻り、オプション8(Adapter Registration)を選択し、次にオプション2(Register Adapter)を選択して以下のように入力します。

Adapter Name : HanaAdapter

 

1.2.7 確認

Database Explorerにアクセスし、AgentとAdapterが登録されていることを確認します。

 

2. 仮想テーブルを作成する

SAP HANA CloudとオンプレミスSAP HANAを繋ぐDP Agentの設定が終わりました。次に、SAP HANA CloudにオンプレミスSAP HANAのテーブルを参照する仮想テーブルを作成します。

2.1 リモートソースを作成する

Database Explorerにて「Remote Source」を右クリックし「Add Remote Source」を選択します。

リモートソース名を入力し、アダプター名として「HanaAdapter」を選択します。オンプレミスSAP HANAのホスト名、ポート番号、接続ユーザー・パスワードなどを入力し、保存します。

作成されたリモートソースを開きます。スキーマが表示され、スキーマを開くとテーブルが表示されます。今回ソースとなるオンプレミスSAP HANAのHDIコンテナが管理するスキーマは「SALES_1」ですので、その中を確認するとPart2で作成したテーブル(SALES::HDI_MD_PRODUCTS, SALES::HDI_SO_HEADER, SALES::HDI_SO_ITEM)が確認できます。

 

2.2 仮想テーブルを作成するための権限を付与する

リモートソースが作成できました。次に仮想テーブルを作成します。その前に仮想テーブルを作成するための権限をHDIコンテナーの管理ユーザーに与えます。

ここでは、.hdbgrantsファイルを使用して権限を付与します。SAP HANA Cockpitで直接HDIコンテナーの管理ユーザーに権限を与えることも可能ではあります。

2.2.1 権限付与のためのUser-Provided Serviceを作成する

まず、権限付与のためのサービスを作成します。SAP Cloud Platform Cockpitにて、「New Instance」より新しいサービス(ここではgrant-service)を作成します。

{
	"driver": "com.sap.db.jdbc.Driver",
	"tags": [
		"hana"
	],
	"user": "SYSTEM",
	"password": "XXXXXX"
}

 

2.2.2 mta.yamlを編集する

作成したサービスをmta.yamlに登録します。以下の枠内を更新します。ここで、TARGET_CONTAINERは複数のHDIコンテナーが存在しているため設定しています。(SAP Cloud Platform CockpitのService Instancesより確認できます。)

 

2.2.3 .hdbgrantsファイルを作成しビルドする

権限付与のための.hdbgrantsファイルを作成し、ビルドします。ここでは、先ほど作成したリモートソースに対して「CREATE VIRTUAL TABLE」権限を付与します。

{
  "grant-service": {
     "object_owner": {
           "global_object_privileges": [
               {
                  "name": "OPHANA",
                  "type": "REMOTE SOURCE",
                  "privileges":[
                      "CREATE VIRTUAL TABLE"
                   ]
               }
           ]
     }
  }
}

 

2.3 仮想テーブルを作成する

ここまででリモートソースが作成でき、さらに仮想テーブルを作るための権限も付与できました。次に仮想テーブルを作成します。

SAP Web IDE for Full-Stackにて、右クリックでVirtualTableを新規作成します。

仮想テーブル名、リモートソース名、参照先のスキーマ名、テーブル名を入力します。DB名は「<NULL>」と入力します。保存してビルドすると仮想テーブルが作成されます。他のテーブルも同様に仮想テーブルを作成します。

Database Explorerで仮想テーブルを確認します。Tableに行くと、仮想テーブルが作成されていることが確認できます(ここではVT始まりのテーブル)。SQLのSELECT文を発行し、データが正常に取得できることを確認します。(SQL実行のたびにクラウドのSAP HANA CloudからオンプレミスのSAP HANAへデータを取得しに行きます。)

 

3. データを移行する

オンプレミスのSAP HANAのテーブルを参照する仮想テーブルがSAP HANA Cloud上に作成できました。この仮想テーブルを使用して、SAP HANA Cloudのテーブルにデータを移行します。移行方法は主に以下の2つが考えられます。

  1. SQLのInsert – Select文でデータを移行する
  2. Smart Data Integration(SDI)のFlowgraphでデータを移行する

本ブログでは、1のSQLでデータを移行します。

3.1 データを移行する

Database ExplorerでHDIコンテナーに接続します。以下のようなSQLを全てのテーブルに対して実行します。

insert into "SALESDB_1"."SALES::HDI_MD_PRODUCTS" select * from "SALESDB_1"."SALES::VT_MD_PRODUCTS";

SQLが正常に実行完了したらデータの移行は完了です。

 

3.2 データを確認する

Calculation Viewにアクセスし、Viewとデータが正常に移行されてることを確認します。Database ExplorerよりColumn Viewを表示します。ここにCalculation Viewのランタイムオブジェクトが表示されます。CUBE型のView「CV_SALES」を開きデータのプレビューを行うと、正常にデータが表示されることが確認できます。

 

 

以上でオンプレミスのSAP HANAからSAP HANA CloudへのCalculation Viewおよびテーブル・データの移行が完了しました。

他にもより効率的な方法があるかもしれませんが、一つの方法としてご参考になれば幸いです。

 

Assigned Tags

      Be the first to leave a comment
      You must be Logged on to comment or reply to a post.