複数のSAP HANAソースからのデータを1つのSAP HANA Cloud, data lake(IQ)に集約する

作成者:伊藤 沢 投稿日:2022年11月15日

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

このブログは、Daniel Utvichが執筆したブログ「Aggregate Data from Multiple SAP HANA Sources to One SAP HANA Cloud, HANA data lake IQ(2021/8/05)の抄訳です。最新の情報は、SAP Communityの最新ブログマニュアルを参照してください。  


SAP HANA Cloudにより、ハイブリッドのランドスケープ(オンプレミスシステムがクラウドシステムズとともに稼働)が容易に利用できるようになりました。
しかしながら、集約したデータ分析を行う場合には、データのタイプと機能の一貫性を保つために興味のあるデータを単一のソースで持つ方が容易かもしれません。これからそれをSAP HANA Cloudデータベースとリモート接続で見ていきます。複数のHANAインスタンスからSAP HANA Cloud, data lake へのデータ移動は、単一のSQLコンソールで行うことができます!

これから、オンプレミスのHANAシステムとSAP HANA CloudのHANAデータベースから単一のSAP HANA Cloud, data lakeにデータを持っていきます。
SAP HANA Cloud, HANAデータベース、SAP HANA データベース、そして接続された SAP HANA Cloud, data lakeのランドスケープからスタートします。
オンプレミスのSAP HANA データベースをSAP HANA Cloud, HANAデータベースへ接続する方法の詳細については、こちらを参照してください。      今回の計画

今回の計画は、データを集約し、SAP HANA Cloud, HANA Cloudの仮想テーブルを使用してSAP HANA Cloud, data lakeに移動させることです。その後、SAP HANA Cloud, HANAデータベースコンソールからEXPORT 文を使用してAmazon S3にデータをエクスポートします。エクスポート後、SAP HANA Cloud, data lakeインスタンスにLOAD table文でデータをロードします。

余談: このブログでは、データのエクスポート先としてAmazon S3を使用していますが、SAP HANA Cloud, data lake file ストアを使用して、エクスポートをサポートすることが計画されています(注:翻訳時すでに実装済です)。これにより、2つのことが可能になります。まずfile storeをテンポラリのロケーションとして使用し、load table文経由でロードします。さらに、file storeにデータを格納し、SQL on Files を使用してこれにクエリーを投げることができます。データの価値によって選択することができます。  

仮想テーブルの作成

SAP HANA Cloud, HANAデータベースからオンプレミスのSAP HANAデータベースへのリモート接続はすでに確立されていると仮定します。その後、仮想テーブルの作成はSAP Database Explorerで行うことができます。   テーブルが作成されると、データベースカタログ内でそれらを確認することができます。

エクスポートおよびインポートクエリー

この複数のインスタンスからSAP HANA Cloud, data lakeにデータを移動させる方法の最も良いところは、単一のSQLコンソールから1回の実行で行えることです! 以下が、SQL コンソールからのexport 文です。

-- TABLES FROM ON-PREMISE HANA
EXPORT INTO 's3-eu-central-1://<ACCESS KEY>:<secret access key>@<bucket name>/mydir/customer_blog.csv' FROM HXE_CUSTOMER;
EXPORT INTO 's3-eu-central-1://<ACCESS KEY>:<secret access key>@<bucket name>/mydir/lineitem_blog.csv' FROM HXE_LINEITEM;
EXPORT INTO 's3-eu-central-1://<ACCESS KEY>:<secret access key>@<bucket name>/mydir/nation_blog.csv' FROM HXE_NATION;
EXPORT INTO 's3-eu-central-1://<ACCESS KEY>:<secret access key>@<bucket name>/mydir/orders_blog.csv' FROM HXE_ORDERS;

-- TABLES FOM HANA CLOUD DATABASE
EXPORT INTO 's3-eu-central-1://<ACCESS KEY>:<secret access key>@<bucket name>/mydir/partsupp_blog.csv' FROM PARTSUPP_CS;
EXPORT INTO 's3-eu-central-1://<ACCESS KEY>:<secret access key>@<bucket name>/mydir/part_blog.csv' FROM PART_CS;
EXPORT INTO 's3-eu-central-1://<ACCESS KEY>:<secret access key>@<bucket name>/mydir/supplier_blog.csv' FROM SUPPLIER_CS;
EXPORT INTO 's3-eu-central-1://<ACCESS KEY>:<secret access key>@<bucket name>/mydir/region_blog.csv' FROM REGION_CS;

以下からみられるように、このステートメントは比較的反復的で、仮想テーブルのエクスポートとHANAテーブルのエクスポートと構文上の違いはありません。何等かのテンポラリーストレージ先と、データの入ったテーブルが必要です。次に、REMOTE_EXECUTE プロシージャーを使用して、LOAD table 文をSAP HANA Cloud, data lakeにプッシュします。

-- LOAD TABLE FROM EXPORT
CALL SYS.REMOTE_EXECUTE('HDL',
	'LOAD TABLE REGION(
	   R_REGIONKEY,
	   R_NAME,
	   R_COMMENT
	)
	USING FILE ''s3://<bucket_name>/mydir/region_blog.csv''
	DELIMITED BY ''|''
	FORMAT CSV
	ACCESS_KEY_ID ''<access_key>''
	SECRET_ACCESS_KEY ''<secret_access_key>''
	REGION ''eu-central-1''
	ESCAPES OFF
	QUOTES OFF;

	LOAD TABLE CUSTOMER(
	   C_CUSTKEY,
	   C_NAME,
	   C_ADDRESS,
	   C_NATIONKEY,
	   C_PHONE,
	   C_ACCTBAL,
	   C_MKTSEGMENT,
	   C_COMMENT
	)
	USING FILE ''s3://<bucket_name>/mydir/customer_blog.csv''
	DELIMITED BY ''|''
	FORMAT CSV
	ACCESS_KEY_ID ''<access_key>''
	SECRET_ACCESS_KEY ''<secret_access_key>''
	REGION ''eu-central-1''
	ESCAPES OFF
	QUOTES OFF;

	LOAD TABLE NATION(
	   N_NATIONKEY,
	   N_NAME,
	   N_REGIONKEY,
	   N_COMMENT
	)
	USING FILE ''s3://<bucket_name>/mydir/nation_blog.csv''
	DELIMITED BY ''|''
	FORMAT CSV
	ACCESS_KEY_ID ''<access_key>''
	SECRET_ACCESS_KEY ''<secret_access_key>''
	REGION ''eu-central-1''
	ESCAPES OFF
	QUOTES OFF;

	LOAD TABLE SUPPLIER(
	   S_SUPPKEY,
	   S_NAME,
	   S_ADDRESS,
	   S_NATIONKEY,
	   S_PHONE,
	   S_ACCTBAL,
	   S_COMMENT
	)
	USING FILE ''s3://<bucket_name>/mydir/supplier_blog.csv''
	DELIMITED BY ''|''
	FORMAT CSV
	ACCESS_KEY_ID ''<access_key>''
	SECRET_ACCESS_KEY ''<secret_access_key>''
	REGION ''eu-central-1''
	ESCAPES OFF
	QUOTES OFF;

	LOAD TABLE CUSTOMER(
	   C_CUSTKEY,
	   C_NAME,
	   C_ADDRESS,
	   C_NATIONKEY,
	   C_PHONE,
	   C_ACCTBAL,
	   C_MKTSEGMENT,
	   C_COMMENT
	)
	USING FILE ''s3://<bucket_name>/mydir/customer_blog.csv''
	DELIMITED BY ''|''
	FORMAT CSV
	ACCESS_KEY_ID ''<access_key>''
	SECRET_ACCESS_KEY ''<secret_access_key>''
	REGION ''eu-central-1''
	ESCAPES OFF
	QUOTES OFF;

	LOAD TABLE ORDERS(
	   O_ORDERKEY,
	   O_CUSTKEY,
	   O_ORDERSTATUS,
	   O_TOTALPRICE,
	   O_ORDERDATE,
	   O_ORDERPRIORITY,
	   O_CLERK,
	   O_SHIPPRIORITY,
	   O_COMMENT
	)
	USING FILE ''s3://<bucket_name>/mydir/orders_blog.csv''
	DELIMITED BY ''|''
	FORMAT CSV
	ACCESS_KEY_ID ''<access_key>''
	SECRET_ACCESS_KEY ''<secret_access_key>''
	REGION ''eu-central-1''
	ESCAPES OFF
	QUOTES OFF;

	LOAD TABLE PART(
	   P_PARTKEY,
	   P_NAME,
	   P_MFGR,
	   P_BRAND,
	   P_TYPE,
	   P_SIZE,
	   P_CONTAINER,
	   P_RETAILPRICE,
	   P_COMMENT
	)
	USING FILE ''s3://<bucket_name>/mydir/part_blog.csv''
	DELIMITED BY ''|''
	FORMAT CSV
	ACCESS_KEY_ID ''<access_key>''
	SECRET_ACCESS_KEY ''<secret_access_key>''
	REGION ''eu-central-1''
	ESCAPES OFF
	QUOTES OFF;

	LOAD TABLE LINEITEM(
	   L_ORDERKEY,
	   L_PARTKEY,
	   L_SUPPKEY,
	   L_LINENUMBER,
	   L_QUANTITY,
	   L_EXTENDEDPRICE,
	   L_DISCOUNT,
	   L_TAX,
	   L_RETURNFLAG,
	   L_LINESTATUS,
	   L_SHIPDATE,
	   L_COMMITDATE,
	   L_RECEIPTDATE,
	   L_SHIPINSTRUCT,
	   L_SHIPMODE,
	   L_COMMENT
	)
	USING FILE ''s3://<bucket_name>/mydir/lineitem_blog.csv''
	DELIMITED BY ''|''
	FORMAT CSV
	ACCESS_KEY_ID ''<access_key>''
	SECRET_ACCESS_KEY ''<secret_access_key>''
	REGION ''eu-central-1''
	ESCAPES OFF
	QUOTES OFF;

	LOAD TABLE PARTSUPP(
	   PS_PARTKEY,
	   PS_SUPPKEY,
	   PS_AVAILQTY,
	   PS_SUPPLYCOST,
	   PS_COMMENT
	)
	USING FILE ''s3://<bucket_name>/mydir/partsupp_blog.csv''
	DELIMITED BY ''|''
	FORMAT CSV
	ACCESS_KEY_ID ''<access_key>''
	SECRET_ACCESS_KEY ''<secret_access_key>''
	REGION ''eu-central-1''
	ESCAPES OFF
	QUOTES OFF;
END');

このSQL コードを全て単一のコンソールから実行することができ、データをSAP HANA Cloud, data lake インスタンスに集約することができました!これで終了です。これが複数のSAP HANAシステムからSAP HANA Cloud, data lakeに大量データを移動する方法です。 もう一つのアプローチは、SELECT…INSERT 文を使用する方法で、以下を参照してください。データが大量の場合には、SELECT…INSERT の方法はパフォーマンスの観点で最適でない可能性があることに注意してください。

INSERT INTO <HDL_TABLE> (SELECT * FROM <HANA_TABLE>);

 

結論

データは、一つのSQLコンソールから複数のリモートソースから集約し、SAP HANA Cloud, data lakeにロードすることができます。テンポラリーストレージとしてオブジェクトストアを使用してこれを行うことができます。これにより分析用データは一つのソースに統合することができます。これが、SAP HANA Cloud, data lakeの1つの長所です。シンプルで効果的です!    



このオリジナルブログが掲載されている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 : データレイクおよびデータティアリング(階層化)概要
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 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 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ジャパンブログ通信

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

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

登録はこちら