目次
背景と目的
HANA Information View(HANA View)は、後発のABAP CDS Viewと比べて存在感が低く、プロジェクトでの積極的な採用が少なくなってきました。しかし、SAP HANAのパフォーマンスを最大限引き出すためには、HANA Information Viewが唯一の選択肢なのは、現在も変わりません。
HANA Information Viewのアクセス方法は当初はADBCのみで、利用するにはABAPの高度なスキルが必要でした。しかしながらその後、さまざまなアクセス方法が導入され、現在ではAMDP:Table Functionを経由することで、内部処理はHANA Information Viewとして動作し、外見上はABAP CDS Viewとして扱うことが可能となりました。これにより、SAP HANAの最高のパフォーマンスを実現しながら、ABAP CDS Viewの多彩な機能をすべて活用できます。
HANA Information Viewは、BWの機能を使用して自動生成することもできますが、SAP HANAに直接作成することで、Star Joinを効果的に利用して最高のパフォーマンスを発揮することができます。これについても一部説明いたします。
はじめに
以下3回に分けてブログ投稿致します。
SAP関連のViewまとめ(1/3):全体像と処理速度 | |
SAP関連のViewまとめ(2/3):ABAP CDS View | |
今回の記事 | SAP関連のViewまとめ(3/3):HANA Information View |
HANA Information Viewの位置付け
- HANA Information Viewと、これにアクセスする技術要素は、以下の図の色がついている箇所です。SAP HANAの独自で高速なOLAP Engine、Join Engine、Calculation Engineで処理するには、HANA Information Viewが唯一の選択肢となります。
- S/4はABAP CDS View 、BWはHANA Information Viewといった認識もありますが、実際は自由に組合せて設計実装可能です。
処理速度
- Code Pushdownのアプローチで設計し、HANA Information Viewで実装することで、最高のパフォーマンスを得ることが出来ます。
- 詳細は、前回のブログ「SAP関連のViewまとめ(1/3):全体像と処理速度」に記載致しました。以下リンクをご参照お願い致します。
HANA Information Viewの種類
HANA Information Viewは、4種類あります。そして、SAP HANAに直接実装する場合は以下のツールでのみ作成可能です。
- SAP HANA Studio(On-premiss)
- SAP Business Application Studio:BAS(SAP-BTP)
1. Calculation View:Graphic:Dimension
Dimensionは主に、マスタテーブル(属性)を編集し、トランザクションテーブル(ファクト)と結びつけるために必要です。トランザクションテーブルでは、複数のマスタテーブルをまたがって結合キーを設定する場合があります。また、SAPのテキストテーブルをログオンユーザの言語キーに従って切り替える際にもよく使用されます。
経験則になりますが、Dimensionを効果的に設計するとCode Pushdown設計がシンプルになり、超高速処理が実現します。
※後述するCalculation View:Graphic:Star Joinを使用する場合に、Calculation View:Graphic:Dimensionが事実上必須となります。
2. Calculation View:Graphic:Star Join
HANA Information Viewを最もパフォーマンスに優れるOLAP Engineで効果的に動作させるためには、Star Joinを使用する必要があります。Star Joinは、データウェアハウス環境でよく使用されるデータモデリングパターンの一つの「スタースキーマ」で、ファクトテーブルとディメンションテーブルを結合する際に使います。このパターンでは、ファクトテーブルに対する高速なアクセスを可能にします。なお、ファクトテーブルは物理的に単一のテーブルとすることで最高のパフォーマンスを得ることが出来ます。
Star Joinを使用することで、複雑なデータ分析クエリや集計操作を高速に実行できます。ディメンションテーブルは、一般的にはマスターデータや属性情報を格納するためのもので、ファクトテーブルとの結合を通じてクエリの柔軟性を向上させます。
ただし、データモデリングにおいては、具体的な要件やデータの性質に応じて、Star Join以外の結合方法やデータ構造も考慮する必要があります。HANAの柔軟なデータモデリング機能を活用して、最適なデータモデルを構築することが大切です。
3. Calculation View:Graphic
Calculation View: Graphicは、主に複数のトランザクションデータを統合するロジックを実現するためのもので、また、前述のDimensionやStar Joinでは要求を完全にカバーできなかったロジックもここで扱います。
パフォーマンスの向上を図るためには、できる限りロジックをDimensionやStar Joinに寄せて実装し、Calculation View: Graphicは最小限にとどめることが必要です。
※BWのComposite Provider(HCPR)や、Info ProviderのExternal View等で自動生成するHANA Information Viewは、Calculation View:Graphicが該当します。
4.1. Calculation View:Script:SQL
HANA Information Viewでは、要件を満たすために必要な場合には、SQL Scriptを使用してSELECT文を記述して対応することがあります。経験則に基づくと、このような要件が発生する場合は、例えばロジックの途中でソートが必要な場合などです。ただし、結果セット全体に対してソートが必要な場合は、この限りではありません。(呼出元でOrder By句(並び替え)を記述します)
要件に合わせてSQL Scriptを使用することで、柔軟なデータ処理が可能となりますが、SQL Engineで動作するため、同一ロジックにおいては、他のHANA Information Viewを比較するとパフォーマンスが劣化します。(ABAP CDS View等とほぼ同等)
4.2. Calculation View:Script:CE Function
HANA Information ViewのScript内でCE Functions(Calculation Engine Functions)を使用することは、高速なデータ処理を実現する一つの方法です。CE Functionsは、HANAの高度な計算エンジンを活用してデータ加工および計算を行うための関数群であり、OLAP Engineや他の最適化技術を活用して高速な実行が可能です。
ただし、通常は、視覚的なインターフェースを提供しデータモデルの設計や変更が比較的容易に行えるCalculation View:Graphicと、同等の機能およびパフォーマンスのため、運用保守性を考慮すると積極的に選択する理由はほとんどありません。
実装例
HANA Information Viewのアクセス方法
ABAP
ABAP 7.4 SP05以降では、HANA Information Viewへのアクセスに関して、Top-Down Approachとして知られるAMDP(ABAP Managed Database Procedure)を介した方法を使用します。
AMDPを実装するために、ABAPオブジェクトに「IF_AMDP_MARKER」をインターフェースすることになります。有効化の際には、NetWeaver(ABAP)側とデータベース側の両方にバイナリを生成するため、ADT(Eclipse)でのみ実装が可能です。(SAP-GUIでは参照のみがサポートされています。)
この方法は、非常に小さなオーバーヘッドを持ち、高いパフォーマンスを提供し、保守性も高めることができる手法です。
他の方法も一部残っていますが、事実上、この方法が推奨されています。
※ABAP CDS Viewは、SAP HANAおよびNon-HANAデータベースの両方で動作します。一方、AMDP(ABAP Managed Database Procedure)はSAP HANAでのみ動作します。AMDPはSAP HANA固有のデータベース処理を実行するためのもので、SAP HANAの高度な機能を活用するために設計されています。
BW
現在ではSAP BWはSAP HANA上で動作し、SAPはCode Pushdownアプローチを強力に推進しています。このアプローチは、SAP HANAでロジックを実行する方法を提供しており、以下のアクセス方法があります。
下記表の上2つは、裏でHANA Information Viewを自動生成するメカニズムで、下2つはSAP HANAにHANA Information Viewを直接実装する方法です。
SAP BW/4HANAの処理では、SAP BWの設計と同様に、BW変換(ABAP)のEnd Routineに頼るプロジェクトが見受けられます。End Routine(ABAP)に記述されたロジックの一部またはすべてを、Code Pushdownアプローチに従い、以下のアクセス方法に移行することで、ロジックがシンプルになり、処理速度が大幅に向上します。
まとめ
- 処理速度に関して、HANA Information ViewはSAP HANA独自のエンジンで動作するため、他の方法よりも高速に動作します。一方、高速な処理を実現するには、設計者がCode Pushdownアプローチに基づいて設計する必要があります。
- HANA Information Viewの高速な動作を実現するには、OLAP Engineの処理比率を増やすことが重要です。Calculation View: Graphic: Dimensionを効果的に設計し、Calculation View: Graphic: Star Joinにロジックを集中させることで、最高のパフォーマンスが得られます。
- SAP S/4HANAでは、通常はABAP CDS Viewが主に採用されます。ただし、AMDP:Table Functionを介してHANA Information Viewにアクセスすることで、内部ではHANA Information Viewが動作し、外部から見るとABAP CDS Viewとして振る舞います。これにより、SAP HANAのパフォーマンスを最大限に引き出すことができます。
- SAP BW/4HANAでは、従来ABAPで記述していたロジックを、Code Pushdownアプローチに基づいて変更し、HANA Information Viewにアクセスする方法に切り替えることで、処理速度が大幅に向上します。
お知らせ
BeeXは、SAP HANA黎明期からの実プロジェクト経験に基づいて、シンプルかつ高速な設計と実装を提供する準備が整っています。特に、通常のCode Pushdownアプローチを超えて、SAP HANA固有の特性を考慮した設計と実装を提供します。
SAP S/4HANAのリアルタイムデータを処理し、集計して出力したい場合や、SAP BW/4HANAに移行したがパフォーマンスや保守性の課題に対する解決など、お客様の要望に合わせたソリューションを提供します。
前回「SAP関連のViewまとめ(2/3):ABAP CDS View」
キーワード:
SAP HANA
SAP Netweaver
HANA View
HANA Information View
ABAP
ABAP CDS View
ABAP SQL
Open SQL
New Open SQL
Classic Open SQL
OLAP Engine
Join Engine
Caluculation Engine
SQL Engine
Code Pushdown
Code to Data