SAP HANA CalculationViewの作成
2018年5月24日に行われたSAP Tech JAMの会場案内用アプリ開発に使用した
プロダクトに関して記載しています。
会場案内アプリではSAP Cloud PlatformのHANA DBに作成したテーブルから
ODataサービスを利用したCRUD操作を行いました。
本記事ではSAP HANA CalculationView作成の
手順について説明します。
CalculationViewには様々な機能がありますが、
ここでは複数テーブルのJOINを行えるJoinNodeを使用した
CalculationViewを作成します。
【内容】
- CalculationViewの作成
- ODataサービス設定
【前提】
以下のブログを参考に、SAP CloudPlatform上のHANA DBにテーブルを作成してください。
1.CalculationViewの作成
SAP CloudPlatformのNeo環境へアクセスします。
【前提】欄記載の手順に従い作成したMDCを起動し、
SAP HANA Web-based Development Workbenchへアクセスします。
Editorを押下します。
demoを選択し右クリック→New→Packageを押下し、
demoパッケージ配下に新規パッケージを作成します。
Package名 | views |
demoを選択し右クリック→New→CalculationViewを押下します。
表示されるモーダルに必要項目を入力し、Createを押下します。
パラメータは以下の通りです。
項目 | 設定値 |
Name | demoJoin |
radioButton | Graphical |
Data Category | CUBE |
作成したdemoJoin.calculationviewを押下し、エディターを表示します。
editor左上のツールバーからJoinNodeを選択し、
上記画像を参考にドラッグ&ドロップします。
Join _1が作成されます。
上記+ボタンを押下します。
表示されたモーダルで「PRODUCTMASTER」を選択し、OKを押下します。
同様の手順で「MAKERMASTER」をJoin_1に追加します。
PRODUCTMASTER・MAKERMASTERを追加後、
Mappingタブを押下します。
Mappingタブでは、データソースとして指定されたカラムのうち、
Outputとなる項目を設定することができます。
今回はPRODUCTMASTERの全カラムとMAKERMASTERのNAMEカラムをOutputに設定します。
左側のData Souecesから必要項目をOutput Columnsにドラッグ&ドロップします。
MAKERMASTERのNAMEカラムはPRODUCTMASTERのNAMEカラムと名称が重複するため、
Outputでは「MAKER_NAME」という名称に変更します。
次に、Join Definitionタブを選択します。
ここではJOIN対象となるテーブルのリレーションを設定します。
PURODUCTMASTERのMAKER_IDをドラッグし、MAKERMASTERのIDと紐づけます。
2つの項目が矢印で接続されたことを確認します。
接続された矢印を選択すると、画面下部にPropertiesが表示されるので、
以下のパラメータを変更します。
項目 | 設定値 |
Cardinality | n..1 |
Join Definitionの設定まで行うと、JoinNodeの作成は完了です。
作成したJoin_1のNodeをAggregationへ紐づけます。
上記画像を参考にNode横の矢印ボタンをドラッグ&ドロップしてください。
AggregationではJoinNodeと同様に、MappingタブでOutput Columnsを設定します。
上記を設定の上、保存ボタンもしくはCtrl+sで保存します。
編集内容の保存には成功しますが、有効化には失敗し、
以下のエラーメッセージが表示されると思います。
demo.views:demoJoin.calculationview] Repository: Encountered an error in repository runtime extension;Model inconsistency. Create Scenario failed: The following errors occurred: user is not authorized (2950)
このエラーは権限が不足しているために起こるエラーです。
エラー解消のため、以下の手順を実行します。
Development Workbenchトップ画面からSecurity画面へ遷移します。
Users→_SYS_REPOを選択し、Object Privilegesタブを押下します。
「+」ボタンを押下し、DEMO_USERを追加します。
追加したDEMO_USERのPrivilegesでCREATE_ANY・SELECTにチェックを入れ、
それぞれのGrantable to Others項目を「Yes」に変更します。
上記を設定後、変更を保存します。
先程作成したCalculationViewファイルを選択し、右クリック→Activateを押下します。
コンソールに以下の文言が表示されれば有効化に成功しています。
File /demo/views/demoJoin.calculationview saved & activated successfully.
有効化をできたCalculationViewを実行します。
画面上部の実行ボタンを押下し、JOINされたデータが表示されるのを確認してください。
2.ODataサービス設定
【前提】欄記載の手順に従い作成したdemo.xsodataファイルを編集します。
// 変更前
service {
"DEMO_USER"."MAKERMASTER" as "makerdata";
"DEMO_USER"."PRODUCTMASTER" as "productdata";
}
// 変更後
service {
"DEMO_USER"."MAKERMASTER" as "makerdata";
"DEMO_USER"."PRODUCTMASTER" as "productdata";
"_SYS_BIC"."demo.views/demoJoin" as "demoJoin" keys("ID");
}
上記内容に変更し、demo.xsodataを更新します。
更新後、実行ボタン押下でdemoJoinのデータが返却されることを確認します。
(実行ボタン押下後のURL末尾に”/demoJoin”を追記することでデータ内容を確認できます。)
以上の手順でCalculationViewの作成とODataサービス作成までを説明させていただきました。
投稿内容に関する質問・ご指摘等いただければ幸いです。