SAP HANA Cloud, data lakeリレーショナルエンジンで非同期でテーブルをロードする

作成者:伊藤 沢 投稿日:2023年5月10日

  • このエントリーをはてなブックマークに追加

このブログは、Ronit Nagwekarが執筆したブログ「Load Tables Asynchronously in SAP HANA Cloud, data lake Relational Engine」(2022/11/10)の抄訳です。最新の情報は、SAP Communityの最新ブログマニュアルを参照してください。

ブログ概要:

SAP HANA Cloud, data lake へのデータ移動は、データをロードする方法が一般的です。データのロードには、時間がかかります。また、データベース接続を通じて実行されるため、オブジェクトストレージからの長時間ロードを容易にするために、SAP HANA Database Explorer (DBX)(またはクライアントアプリケーション)のセッションを開いたままにするのは難しいでしょう。

SAP HANA Cloud, data lake リレーショナルエンジンには、ビルトインのイベントスケジューラーが実装されており、SQL機能のスケジューリングに使用することができます。このブログでは、SAP HANA Cloud, HANAデータベースから、SAP HANA Cloud, data lakeリレーショナルエンジンへのデータ移動をスケジュール化する方法について紹介します。

データの準備、イベントの作成、SAP HANA Cloud, data lakeリレーショナルエンジンへの非同期のLoad Tableまでの全体プロセスをカバーします。

最初のステップは、SAP HANA Cloud, HANAデータベースへのデータのインポートです。このGitHubレポジトリから、TPCH data.csv ファイルを直接インポートします。

 

ステップ 1: GitHub からTPCH CUSTOMER DATASETをダウンロードする

  1. SAP HANA Cloud, HANAデータベースインスタンス/テーブルにデータをIMPORTするために、このGitHub リポジトリより、TPCHデータファイルをダウンロードします。リンクをクリックすると、GitHubデータファイルに直接リダイレクトされるので、そこからダウンロードすることができます。
  2. このブログでは、TPCH CUSTOMER Datasetを例として使用します。 customer.tbl ファイルを、ローカルマシンの customer.csvに保存してください。 

 

ステップ2: HANAにテーブルを作成し、データをインポートする

データファイルをダウンロードしたら、SAP HANA Cloud, HANAデータベースインスタンスでテーブルを作成する必要があります。ここにデータをインポートします。

SAP HANA Cloud, HANAデータベースインスタンスに対してSQLコンソールをオープンし、以下のテーブルを作成します。以下のコードでTPCHスキーマをSAP HANA Cloud, HANAデータベースに作成し、このスキーマ内に CUSTOMERテーブルを作成します。

CREATE SCHEMA TPCH;


CREATE TABLE TPCH.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)
);

テーブルを作成したら、SAP HANA Cloud, HANAデータベースインスタンス上で右クリックし、「Import Data」を選択します。

Import Type」ページで、 Import Data From」を選択します。

Import Sourceステップに進みます。「Import Source」ステップ上で、「Local」を選択し、「File has header in first row」ボックスのチェックを外します

先のダウンロードした customer.csvファイルを選択します。

Import Target」のステップで、「Add to an existing table」を選択し、作成したTPCH.CUSTOMERテーブルの情報を入力します。

テーブルマッピングを確認し、ステップ5へ進みインポートを終了します。
これがTPCH HANAデータベーステーブルへのデータのインポート方法です。

 

ステップ 3: リモートサーバーを設定する

次のステップは、SAP HANA Cloud, data lakeからSAP HANA Cloud, HANAデータベースへのリモートサーバーの設定です。取得したいデータを含むSAP HANA Cloud, data lake SAP HANA Cloud, HANAデータベースインスタンス間のリモートサーバー接続の作成がSAP HANA Cloud, data lakeインスタンスの設定の最初のステップです。

最初に、Database ExplorerSAP HANA Cloud, HANAデータベースで右クリックし、コンテキストメニューよりプロパティを選択し、ホスト値をコピーします。

 

SAP HANA Cloud, HANAデータベースにすでにデータをインポートしているので、データ移動のスケジューリングのためにSAP HANA Cloud, data lakeリレーショナルエンジンの接続の準備に進むことができます。以下のシンタックスでリモートHANAサーバーを作成し、これからSAP HANA Cloud, data lakeリレーショナルエンジンのテーブルに対してデータをロードすることができます。

SAP HANA Cloud, data lakeリレーショナルエンジンに直接接続しているSQLコンソールを使用してください。(HANA Cloud, data lake リレーショナルエンジンに直接SQLコンソールで接続する方法はこちらを参考にしてください。)このSQLCreate Remote serverの権限を持つMANAGE ANY REMOTE SERVERのユーザーを使用してSAP HANA Cloud, data lakeリレーショナルエンジンのインスタンスに対して実行します。

リモートサーバーを HDBSERVERと名付けています。<HANA Host Name> を、プロパティーセクションからコピーしたホストに入れ替えてください。

CREATE SERVER HDBSERVER CLASS 'HANAODBC'
USING
'Driver=libodbcHDB.so;
ConnectTimeout=0;
CommunicationTimeout=15000000;
RECONNECT=0;
ServerNode= <HANA Host Name>:443;
ENCRYPT=TRUE;
ssltruststore= <HANA Host Name>:443;
ssltrustcert=Yes;'
DEFAULT LOGIN 'DBADMIN' IDENTIFIED BY 'Password1';

SAP HANA Cloud, data lakeリレーショナルエンジンのCREATE SERVER文については、こちらのマニュアル(英語)を参照してください。

 

ステップ 4: EXTRNLOGINおよびLOCAL TEMP TABLEの作成

リモートサーバーが作成されたので、SAP HANA Cloud, data lakeリレーショナルエンジン ユーザーをSAP HANAユーザー認証情報にマップするEXTERNLOGIN を作成し、SAP HANA Cloud, HANAデータベースへアクセスできるようにします。

下のCREATE EXTERNLOGIN文で、SAP HANA Cloud, data lakeリレーショナルエンジンのユーザーパーミッションに対して、先に作成したHDBSERVERHANAユーザーを使用する権限を付与しています。

下のSQLで使用されているHANAユーザーが参照する必要のあるオブジェクトに対してアクセスがあることを確認してください。 最初にCUSTOMERテーブルを作成するのに使用したDBADMINユーザーを使用することをおすすめします。

<HDL USERNAME>を現在使用しているSAP HANA Cloud, data lakeのユーザーに、また<HANA USERNAME>と<HANA PASSWORD>を使用するSAP HANA Cloud, HANAデータベースユーザーの情報に置き換えてください。

CREATE EXTERNLOGIN <HDL USER NAME> to HDBSERVER REMOTE LOGIN <HANA USER NAME> IDENTIFIED BY <HANA PASSWORD>;

データが得られることを確認するために、SAP HANA Cloud, HANAデータベースのCUSTOMERテーブルをポイントする仮想テーブルを作成します。すべてが正常にセットアップされていることを確認するため簡単にテストします。HANAのCUSTOMERテーブルをポイントするテンポラリーテーブルを作成します。

CREATE EXISTING LOCAL TEMPORARY TABLE HDLRE_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 'HDBSERVER..TPCH.CUSTOMER';

そのテーブルに対してselect文を実行して、データが得られることを確認します。

SELECT * FROM HDLRE_CUSTOMER;

以下の様な出力でデータが得られることを確認できます。

 

クリーンアップします。

DROP TABLE HDLRE_CUSTOMER;

DROP SERVER HDBSERVER;

 

ステップ5: イベントスケジューラー

データが得られたので、最後にイベントスケジューラーを使用してデータ/テーブルを非同期にロードします。SAP HANA Cloud, data lakeリレーショナルエンジンには、ビルトインのイベントとイベントスケジューラーが実装されています。リモートサービスの機能とイベントスケジューラーを活用して、SAP HANA Cloud, HANAデータベースからSAP HANA Cloud, data lakeリレーショナルエンジンへデータをコピーすることができます。

データのDestination Table を作成することから開始します。このブログの例では、SAP HANA Cloud, data lakeリレーショナルエンジン内のCUSTOMERテーブルだけです。

CREATE TABLE HDLRE_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)
);

SAP HANA Cloud, data lakeリレーショナルエンジンでのイベント作成について順に説明します。

以下のSQLで、 PullDataFromHANAと呼ばれるイベントを作成します。その後、SchedulePullDataFromHANAというスケジュールを作成します。

ここではスケジューラーを1:00 AMに開始し、毎週月曜日に繰り返すように設定します。 

以下では、「HANDLER」で実行するSQLスクリプトを定義します。このスクリプトでローカルテンポラリーテーブルを作成し(このテーブルは接続が切断されると削除されます)、このテンポラリーテーブルから、SAP HANA Cloud, data lakeリレーショナルエンジン内に保持されるHDLRE_CUSTOMER テーブルにデータを挿入します。

これで、毎週月曜日にこのイベントでSAP HANA Cloud, HANAデータベースから、SAP HANA Cloud, data lakeリレーショナルエンジンのテーブルにデータがコピーされます。

CREATE EVENT PullDataFromHANA
SCHEDULE SchedulePullDataFromHANA
START TIME '1:00am' ON ('Mon')
HANDLER
BEGIN
	CREATE EXISTING LOCAL TEMPORARY TABLE HDLRE_CUSTOMER_TempTable
	(
	   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 'HDB_SERVER..TPCH.CUSTOMER';

	INSERT INTO HDLRE_CUSTOMER SELECT * FROM HDLRE_CUSTOMER_TempTable;
END;

イベントをマニュアルで起動して、うまく機能するかどうかテストすることもできます。イベントを起動して、SAP HANA Cloud, data lakeリレーショナルエンジンから、Selectを実行し、データがコピーされているか確認します。

TRIGGER EVENT PullDataFromHANA;

SELECT * FROM HDLRE_CUSTOMER;

以下のように出力されます。

これで、SAP HANA Cloud, HANAデータベースから、SAP HANA Cloud, data lakeリレーショナルエンジンへ定期的にデータ移動するイベントが作成されました。自由な発想で、SAP HANA Cloud, data lakeのイベントを使用して、繰り返し行うSQLタスクを自動化してください!イベントには、正当なものであればあらゆるSQLオペレーションを含めることが可能です。

SAP HANA Cloud, data lakeリレーショナルエンジンのCREATE EVENT文に関しては、こちらのマニュアル(英語)にまとめられています。

 

まとめ

イベントを作成して、SAP HANA Cloud, HANAデータベースから、SAP HANA Cloud, data lakeリレーショナルエンジンへのデータ移動をスケジュールする方法について紹介しました。

 

 


このオリジナルブログが掲載されているSAP CommunityのSybase関連タグをフォローして、最新技術情報をキャッチアップしてください(フォローには登録が必要です)。

SAP Communityの関連タグ

・SAP HANA Cloud, data lake ブログ / Q&A
・SAP IQ ブログ / Q&A
・SAP SQL Anywhere ブログ / Q&A

SAP Communityでは質問も投稿することが可能で、世界中のSAP社員やユーザーのアドバイスを受けることができます。

 

———————————————————

SAPジャパンブログ内関連記事:

SAP HANA Cloud, data lake
SAP HANA Cloud, data lake 2022年12月版、2023年3月版、6月版の主な新機能
SAP HANA Cloudの「マルチ環境」のサポートとSAP HANA CloudのKyma環境からの使用
SAP HANA Cloud : データレイクおよびデータティアリング(階層化)概要
SAP IQシステムからSAP HANA Cloud, data lake (Standalone Data Lake) へ移行する理由トップ5
SAP IQまたは、SAP HANA Cloud, data lakeリレーショナルエンジンのインスタンスから別のインスタンスへログインをコピーする
SAP HANA Cloud, data lakeリレーショナルエンジンで非同期でテーブルをロードする
Jupyter NotebookとPySparkでSAP HANA Cloud, data lake Filesを使用する
SAP HANA Cloud, data lakeストレージのオブジェクトストレージへの変更によるパフォーマンス向上とペタバイト規模データの対応およびコスト低減
SAP HANA Cloud, data lakeでマテリアライズドビューを使用してパフォーマンスを上げる
SAP HANA Cloud, SAP HANA データベースとSAP HANA Cloud, data lake filesを使用する
SAP HANA Cloud, HANA データベースからSAP HANA Cloud, data lakeデータベースへの最速のデータ移行方法とテスト結果
SAP HANA Cloud, HANAデータベースから HANA Cloud, data lakeへのデータの高速移行とデータ移行速度に影響するパラメーター
SAP HANA Cloud, data lakeとSAP IQに共通するヒストリカルデータベースとDBSpaceサイズのキャプチャー方法
SAP HANA Cloud, data lake(IQ)をベースにしたNode.jsアプリケーションの構築
複数のSAP HANAソースからのデータを1つのSAP HANA Cloud, data lake(IQ)に集約する
SAP HANA Cloud, data lake Filesへの最初のアクセス設定
SAP HANA Cloud, data lakeおよびSAP IQにおけるスキーマのエクスポート/バックアップ
SAP HANA Cloud, data lake(IQ)にWindows端末からPythonで直接接続する
SAP HANA Cloud, data lakeへのデータロードにおけるvCPU数の影響
SAP IQのクラウドサービスが開始されました – SAP HANA Cloud, data lake (Standalone IQ)

SAP IQ
SAP IQのクラウドサービスが開始されました – SAP HANA Cloud, Data Lake (Standalone IQ)
SAP IQ – 隠れたイッピン(the hidden treasure) …
全てのSAP BW、SAP BW/4HANAリリースのSAP ニアラインストレージ(NLS)ソリューション – SAP IQ
SAP IQによるSAP ニアラインストレージ(NLS)のパフォーマンスを向上させる
SAP IQを利用したSAP Information Lifecycle Management(ILM)
DBA CockpitでSAP IQを有効にする
SAP IQのための容易なインストーラー - 「Q」
列指向データベースでもOLTPに対応したSAP Sybase IQ16の機能拡張
大量データの「圧縮率」と「ロード時間」を改善したSAP Sybase IQ16の技術解説
SAP IQ 16.1 SP05がリリースされました

SAP ASE
SAP ASE 16.0 SP03による高可用性(HA)+災害復旧(DR)の3ノードHADR
カスタム開発のアプリケーションにおけるSAP ASE Always-on機能へのDRノードの追加(パート 1) (パート 2) (パート 3)
SAP ASE 16.0 SP04の新機能
SAP ASEの新しい管理ツール「AMC」の紹介:インストール方法、メモリー管理、ワークロード分析機能、Workload AnalyzerのSSL設定について
SAP HANAプラットフォームを相互補完し進化する旧Sybase製品の今――SAP ASEとSAP IQ
SAPアプリケーション向けデータベースとしてSAP Sybase ASEが採用される理由とは
RDBMSのパフォーマンス向上の仕掛け――SAP Sybase ASE 15.7の最新アーキテクチャー解説

オンラインマニュアル:
SAP HANA Cloud
SAP HANA Cloud, Data Lake (SAP HANA DB-Managed)
SAP HANA Cloud, Data Lake (Standalone)
SAP Datasphereスペースを SAP HANA Cloud, data lakeに接続して、大量のデータを保存または利用できます。
SAP IQ
SAP SQL Anywhere(日本語)/(最新英語)
SAP ASE

SAP Community (ブログ/ Q&A) :
SAP HANA Cloud, data lake
SAP IQ
SAP SQL Anywhere (日本語ブログ一覧ページ
SAP ASE

SAP Community Wiki:
SAP IQ
SAP SQL Anywhere
SAP ASE

sap.com 製品ページ:
SAP HANA Cloud, data lake
データレイクとは
SAP IQ
SAP SQL Anywhereサブページ
SAP ASE

デベロッパー向けチュートリアル
SAP HANA Cloud, data lake

その他:
SAP IQ テクニカル概要
SAP IQ 16.0 ハードウェアサイジングガイド
様々なストレージおよびネットワークテクノロジーにおける SAP IQ 16 Multiplex のパフォーマンス評価


 

  • このエントリーをはてなブックマークに追加

連記事

SAPからのご案内

SAPジャパンブログ通信

ブログ記事の最新情報をメール配信しています。

以下のフォームより情報を入力し登録すると、メール配信が開始されます。

登録はこちら