Technical Articles
SAP Analytics CloudのSAP HANA Cloudライブ接続を使って地理マップ コロプレスレイヤを作成しよう! Part.3 分析用データの準備/SAP HANA Cloudの Calculation Viewの作成
今回はPart.3 分析用データの準備 / SAP HANA Cloud の Calculation View の作成についてご紹介します。
手順
全4回でご紹介する手順は下記の通りです
Part.1 SAP HANA Cloudでの コロプレス/ドリルレイヤを使用するためのセットアップ
Part.2 SAP HANA Cloud での カスタム地理階層の作成
Part.3 SAP HANA Cloudでの 分析用データの準備 / SAP HANA Cloud の Calculation View の作成(今回)
Part.4 SAP Analytics Cloudでの システム設定 / モデル作成 / 地理マップの作成
手順の全体像はこのようになっています。
それでは Part.3 を始めましょう!
Part.3-1 SAP HANA Cloudでの分析用データの準備
(参考)CHOROPLETH_CUSTOM_HIERARCHY テーブル
CHOROPLETH_CUSTOM_HIERARCHY テーブルは以下の構造をしています
- NAMEは、SACでコロプレス/ドリルレイヤを指定した際の、ロケーションディメンションの階層を選んだ時に表示される値です
- HIERARCHYIDは、同じ階層定義で同じ値を設定します
- IDはテーブル内でユニークな値にします
- LEVELは階層のレベルを表します
- LNAMEは、SACでレイヤ階層の編集で表示されるラベル名です
- OBJECT、PACKAGE、SCHEMAで、定義している DIMENSION タイプの Calculation View を指定します
分析用データの準備
以下の情報を利用して、市区町村ごとの人口および世帯数データを作成します
- 総務省ホームページの「住民基本台帳に基づく人口、人口動態及び世帯数(平成30年1月1日現在)」の「【総計】平成30年住民基本台帳人口・世帯数、平成29年人口動態(市区町村別)」の団体コード、都道府県名、市区町村名、人口(計)、世帯数情報
http://www.soumu.go.jp/menu_news/s-news/01gyosei02_02000177.html - 「おまるくんの技術ノート」の「市区町村コード表(緯度経度付き)」ページに記載された全国地方公共団体コード、緯度、経度情報
http://note.omarukun.com/notes/4/ - 元データの位置情報は SRID:4326 として取り込み、SAC が利用する SRID:3857 に変換してテーブルにロードします
人口動態データ、市区町村役場の位置データをそれぞれ CSV ファイルに加工して、それぞれ一時テーブルにインポートします
1.SAP HANA Database Explorer を起動し、”DEMO” ユーザで HANA Cloud に接続し、下の SQL 文を実行して、DEMO スキーマに ADMINISTRATIVE_AREA テーブルを作成します
CREATE COLUMN TABLE "DEMO"."ADMINISTRATIVE_AREA" (
ADMINISTRATIVE_AREA_CODE VARCHAR(6)
,"ADMINISTRATIVE_AREA_POINT" ST_POINT(3857)
,"PREFECTURE" NVARCHAR(8)
,"CITY" NVARCHAR(32)
,POPULATION BIGINT
,HOUSEHOLDS BIGINT
,PRIMARY KEY (ADMINISTRATIVE_AREA_CODE)
);
2.IMPORT ウィザードを使用して、人口動態データを TEMP1 テーブルに、市町村役場の位置データを TEMP2 テーブルにインポートします。(今回の例ではTABLE MAPPINGの情報を画像のように入力します)
Tableを右クリックしインポート
新しくTEMP1を作成
人口動態データ
市区町村役場の位置データ
3.下の SQL 文を実行して、TEMP1、TEMP2 テーブルから ADMINISTRATIVE_AREA テーブルにデータを挿入します
※市区町村役場の緯度・経度から ST_Point を作成する際に、SRID を 4326 から 3857 に変換しています
INSERT INTO "DEMO"."ADMINISTRATIVE_AREA"
SELECT TEMP1.ADMINISTRATIVE_AREA_CODE
, new ST_Point('POINT(' || TEMP2.LONGITUDE || ' ' || TEMP2.LATITUDE || ')', 4326).ST_Transform(3857)
, TEMP1.PREFECTURE
, TEMP1.CITY
, TEMP1.POPULATION
, TEMP1.HOUSEHOLD
FROM TEMP1
LEFT OUTER JOIN TEMP2
ON TEMP1.ADMINISTRATIVE_AREA_CODE = TEMP2.ADMINISTRATIVE_AREA_CODE
WHERE TEMP1.CITY IS NOT NULL
AND TEMP2.ADMINISTRATIVE_AREA_CODE IS NOT NULL;
Part.3-2 SAP HANA Cloud での Calculation View の準備
分析対象データとロケーションデータの Calculation View について
SAP Analytics Cloud の HANA Cloud ライブ接続で地理マップを使用する場合、分析対象データをモデル化する Calculation View と、ロケーションデータ(ディメンション)をもつ Calculation View を用意する必要があります。
SAC Analytics Cloud 側で、上記の2つの Calculation View の紐づけをおこないますが、その際、紐づけるカラムの名称が同じであってはなりません。このため、ロケーションデータのID カラムには”_LD”を付けています。
シノニムファイルへのエントリの追加
非 HDI コンテナのスキーマに作成した分析用データ(ADMINISTRATIVE_AREA テーブル)にアクセスするためにシノニムファイルにエントリを追加します
1.SAP Business Application Studio で demo プロジェクトを開き、シノニムファイル(この例では demo.hdbsynonym)ファイルを開きます
2.シノニムエディタで以下のシノニムを定義します
- Synonym Name: ADMINISTRATIVE_AREA(DEMO.ADMINISTRATIVE_AREA にマッピング)
3.シノニムファイルを保存し、デプロイします
人口動態データをモデル化する Calculation Viewの作成
市区町村別の人口動態をモデル化する Calculation View を作成します
1.SAP Business Application Studio のメニューから [View] > [Find Command…] を選択し“SAP HANA: Create SAP HANA Database Artifact” を選択します
2.Create SAP HANA Database Artifact 画面で以下を入力して [Create] ボタンをクリックします
- Specify where you want to create the new artifact: /home/user/projects/<プロジェクト名>/db/src
- Choose the database version: HANA Cloud
- Choose the artifact type: Calculation View (hdbcalculationview)
- Specify the artifact name: CV_DEMOGRAPHICS
- Specify the label: CV_DEMOGRAPHICS
- Choose a data category: CUBE
- Use a star join?: No
※このようなダイアログが表示されたらData CategoryがCubeであることを確認し[Create]を押します(表示されなければ次に進む)
3.Aggregation ノードの + [Add Data Source] をクリックします
4.Find Data Sources ダイアログで、”ADMINISTRATIVE_AREA” のラジオボタンにチェックし、[Finish] ボタンをクリックします
5.Aggregation ノードの [Expand Details Panel] をクリックします
6.Mapping タブで、Data Sources の以下のカラムを Output Columns に設定します(左のカラムをドラッグし右でドロップ)
- ADMINISTRATIVE_AREA_CODE(行政区域コード)
- CITY(市区町村名)
- POPULATION(人口)
- HOUSEHOLDS(世帯数)
7.Calculated Columns タブで [Add] ボタンをクリックし、Calculated Column を選択します
8.以下の情報を入力します
- Name: ID
- Label: ID
- Data Type: NVARCHAR
- Length: 64
9.Expression 内の [Expression Editor] ボタンをクリックします
10.Expression Editor で、以下の Expression を入力し[Validate Syntax] ボタンをクリックします
"CITY" || '(' || "ADMINISTRATIVE_AREA_CODE" || ')'
11.、Validation Result ダイアログで問題がないことを確認し、[OK] ボタンをクリックします
12.[Back] ボタンをクリックし、ID カラムが作成されたことを確認します
13.Semantics ノードをクリックし、Columns タブで以下を設定します
- ADMINISTRATIVE_AREA_CODE : Hidden にチェック
- CITY: Hidden にチェック
- ID: Key にチェック (Keyが表示されていない場合は⚙ボタン)
14.変更を保存して、デプロイします
SAP_BOC_SPATIAL ネームスペースの作成
SAC の HANA Cloud ライブ接続(HDI コンテナを使用するオンプレミス HANA のライブ接続も同様)で地理マップを使用するためには、 SAP_BOC_SPATIAL ネームスペースを有するロケーションデータの Calculation View を作成する必要があります
1.SAP Business Application Studio で demo プロジェクトを開き、db/src を右クリックして表示されるコンテキストメニューから [New Folder] を選択します
2.New Folder ダイアログでフォルダ名に”SAP_BOC_SPATIAL “(固定値)を入力して [OK] ボタンをクリックします
3.db/src を右クリックして表示されるコンテキストメニューから [New File] を選択します
4.New File ダイアログでフォルダ名に”.hdinamespace” と入力して [OK] ボタンをクリックします
5.エディタで以下を記述します
{
"name" : "",
"subfolder" : "append"
}
6.変更を保存して、デプロイします
ロケーションデータの Calculation View の作成
ロケーションデータの Calculation View を作成します
1.SAP Business Application Studio のメニューから [View] > [Find Command…] を選択し、“SAP HANA: Create SAP HANA Database Artifact” を選択します
2.Create SAP HANA Database Artifact 画面で以下を入力して [Create] ボタンをクリックします
- Specify where you want to create the new artifact: /home/user/projects/<プロジェクト名>/db/src/SAP_BOC_SPATIAL
- Choose the database version: HANA Cloud
- Choose the artifact type: Calculation View (hdbcalculationview)
- Specify the artifact name: CV_ADMINISTRATIVE_AREA_LOC
- Choose a data category: DIMENSION
- Choose a dimension type: STANDARD
※New Calculation VIewのダイアログが表示されたらData CategoryがDIMENSIONであることを確認し[Create]ボタンを押します (表示されない場合は次へ進む)
3.Projection ノードの + [Add Data Source] をクリックします
4.Find Data Sources ダイアログで、”ADMINISTRATIVE_AREA” のラジオボタンにチェックし、[Finish] ボタンをクリックします
5.Projection ノードの [Expand Details Panel] をクリックします
6.Mapping タブで、Data Sources の以下のカラムを Output Columns に設定します
- ADMINISTRATIVE_AREA_CODE(行政区域コード)
- CITY(市区町村名)
- ADMINISTRATIVE_AREA_POINT(地点)
7.Calculated Columns タブで + [Add] ボタンをクリックし、Calculated Column を選択し、以下の情報を入力します
- Name: ID_LD
- Label: ID_LD
- Data Type: NVARCHAR
- Length: 64
8.Expression 内の [Expression Editor] ボタンをクリックし、Expression Editor で、以下の Expression を入力します
"CITY" || '(' || "ADMINISTRATIVE_AREA_CODE" || ')'
9.[Validate Syntax] ボタンをクリックし、Validation Result ダイアログで問題がないことを確認し、[OK] ボタンをクリックします
10.[Back] ボタンをクリックし、ID_LD カラムが作成されたことを確認します
11.Semantics ノードをクリックし、Columns タブでID_LDをKeyに設定します
12.変更を保存して、デプロイします
お疲れさまでした!これでPart.3は終了です。ここまでくればあと一歩です!Part.4はこちら