SAP Analytics CLoudのSAP HANA Cloudライブ接続を使って地理マップ コロプレスレイヤを作成しよう!


はじめに

HANA Cloud の SHAPEファイルを SAP Analytics Cloud (SAC)の地図上に表示させたい場合、HANA上でカスタムヒエラルキーを作成・登録し、SAC地理空間コロプレスレイヤ―として表示できるようにする必要があります。

今回は下記の情報をSACの地図で可視化させる方法についてご紹介します。

  • 国 > 都道府県 > 市区町村 の3階層のカスタムヒエラルキー
  • 人口・世帯数の分析用データ

本ブログはこちらのブログの手順を日本地図で行い、より詳細な手順について解説します。

前提

  • SAP Analytics上でのSAP HANA Cloudのライブ接続が作成済みであること (作成方法についてはこちら)
  • 本手順は、SAP HANA Cloud バージョン 2022.16.15 (QRC 2/2022) および SAP Analytics Cloud バージョン 2022.16.1 で実施しています。バージョンが異なる場合は若干手順が異なる場合があります

手順

本ブログでご紹介する手順は下記の通りです

SAP HANA Cloudでの準備

  • コロプレス/ドリルレイヤを使用するためのセットアップ
  • SAP HANA Cloud でのカスタム地理階層の作成
  • 分析用データの準備
  • SAP HANA Cloud の Calculation View の作成

SAP Analytics Cloudでの準備

  • システム設定
  • モデルの作成
  • 地理マップの作成

今回の手順の全体像はこのようになっています。

SAP HANA Cloud : コロプレス/ドリルレイヤを使用するためのセットアップ

SRIDの確認

次のSQLを実行し現在のSAP HANA Cloudで利用可能なSRIDを確認しましょう。SAP HANA Cloud には、SAP Analytics Cloud が使用する空間参照系識別子(SRID)”3857” (球面(半径6,378,137m)メルカトル図法)が事前に登録されているはずです。

SELECT * FROM ST_SPATIAL_REFERENCE_SYSTEMS;

SAP Business Application Studio でのプロジェクトの作成

SAP Analytics Cloud でコロプレス/ドリルレイヤを使用するためには、 HANA Cloud に空間情報コンテンツ(GEO CONTENT)をインポートする必要があります。インポートの事前準備として、SAP Business Application Studio を使用して SAP HANA データベースプロジェクトを作成します

1.SAP Business Application Studio を起動して、使用する Dev Space を開きます

2.Welcome ページから「Start from template」を選択します

3.SAP HANA Database Project を選択して、[Start >] ボタンをクリックします

4.Project Name に任意の名前(この例では demo)を入力して、[Next >] ボタンをクリックします

5.モジュール名に任意の名前(この例では db)を入力して、[Next >] ボタンをクリックします

6.スキーマ名に任意の名前(この例では SPATIAL_DEMO)を入力し、SAP HANA Database Version が ”HANA Cloud” になっていることを確認し、[Next >] ボタンをクリックします

7.Cloud Foundry スペースのデフォルトのデータベースインスタンスを使用するかを指定します

  • デフォルトのデータベースインスタンスを使用する場合 : Yes
  • デフォルトのデータベースインスタンスを使用しない場合 : No

10.プロジェクトが作成されたことを確認します

空間情報コンテンツのダウンロード

SAP Analytics Cloud でコロプレス/ドリルレイヤを使用するために、 HANA Cloud に空間情報コンテンツ(GEO CONTENT)をインポートします。

1.ブラウザでSAP Software Download Centerにアクセスします

2.検索窓で”ANALYTICS_CLOUD”と検索し、最新のANALYTICSCLOUDZZ_*.ZIP(ZZはSP)をダウンロードします

4.ダウンロードした ZIP ファイルを解凍します。.mtarファイルが2つ入っているはずです

SAP HANA Cloud へ空間情報コンテンツをインポート

1.SAP Business Application Studio で作成したプロジェクト(この例では demo)を開きます

2.demo フォルダを右クリックして表示されるコンテキストメニューから [New Folder] を選択します

3.New Folder ダイアログでフォルダ名に mta_archives と入力して [OK] ボタンをクリックします

4.mta_archives フォルダを右クリックして表示されるコンテキストメニューから [Upload Files…] を選択します

5.先ほど解凍した以下の2つのファイルをアップロードします

  • FPA_SPATIAL_DATA_Z.Z.Z.mtar(Z.Z.Z はバージョン番号)
  • SAP_FPA_SPATIAL_CUSTOM_REGIONS_Z.Z.Z.mtar (Z.Z.Z はバージョン番号)

Cloud Foundry のスペースに HANA Cloud インスタンスが一つしかない場合、以下の手順で空間情報コンテンツをインポート(デプロイ)します

1.アップロードした以下のファイルをそれぞれ右クリックして表示されるコンテキストメニューから [Deploy MTA Archive] を選択します

  • FPA_SPATIAL_DATA_Z.Z.Z.mtar(Z.Z.Z はバージョン番号)
  • SAP_FPA_SPATIAL_CUSTOM_REGIONS_Z.Z.Z.mtar (Z.Z.Z はバージョン番号)

2.デプロイが正常に完了したことを確認します

Cloud Foundry のスペースに HANA Cloud インスタンスが二つ以上ある場合、どの HANA Cloud インスタンスに対して空間情報コンテンツをインポートするかを明示的に指定する必要があります。以下の手順で空間情報コンテンツをインポート(デプロイ)します。

1.SAP BTP Cockpit で SAP HANA Cloud のインスタンス一覧を表示し、対象の SAP HANA Cloud Iインスタンスの Actions > Copy Instance ID を選択して、SAP HANA Cloud のインスタンスID をコピーします

2.SAP Business Application Studio で作成したプロジェクト(この例では demo)を開き、mta_archives フォルダを右クリックして表示されるコンテキストメニューから [New File] を選択します

3.New File フォルダでファイル名に FPA_SPATIAL_DATA.mtaext と入力し、[OK] ボタンをクリックします

4.FPA_SPATIAL_DATA.mtaext ファイルに以下の内容を記載して、保存します

_schema-version: "3.0.0" ID: DATABASE_ID_FOR_FPA_SPATIAL_DATA
description: Provides the HANA Cloud Database ID to deploy the shape data for SAC choropleth layer
extends: FPA_SPATIAL_DATA resources: - name: FPA_SPATIAL_DATA-hdi parameters: config: database_id: <SAP HANA Cloud のインスタンスID>

8.SAP Business Application Studio のメニューから [Terminal] > [New Terminal] を選択してターミナルを開きます

9.mta_archives フォルダに移動します

$cd mta_archives

10.以下のコマンドを実行して FTP_SPATIAL_DATA をデプロイします

mta_archives $ cf deploy FPA_SPATIAL_DATA_1.1.24.mtar -e FPA_SPATIAL_DATA.mtaext 

11.以下のコマンドを実行して SAP_FPA_SPATIAL_CUSTOM_REGIONS をデプロイします

mta_archives $ cf deploy SAP_FPA_SPATIAL_CUSTOM_REGIONS_1.0.0.mtar -e SAP_FPA_SPATIAL_CUSTOM_REGIONS.mtaext 

12.デプロイが正常に完了したことを確認します

ユーザの作成と権限の付与

SAP HANA Cloud ユーザを作成し、空間情報コンテンツに事前定義されているロールを付与します

1.DBADMIN ユーザで SAP HANA Cockpit にログインし、 User Management アプリケーションを起動します

2. + [Add] ボタンをクリックして、[Create User] を選択します

3.Create User 画面で以下の項目を入力します

  • User Name: DEMO
  • Authentication Mechanism: Password
  • Password: 任意のパスワード
  • Password Confirmation: 任意のパスワード文字列

4.[Save] ボタンをクリックしてユーザを作成します

5.SAP HANA Database Explorer を起動し、”DBADMIN” ユーザで SQL コンソールを起動します

6.以下の SQL 文を実行し、”DEMO” ユーザにロールを付与します

-- Viewing Spatial choropleth
GRANT FPA_SPATIAL_DATA."FPA_SPATIAL_DATA::PublicAccessObjects" TO DEMO;
GRANT SAP_FPA_SPATIAL_CUSTOM_REGIONS."sap.fpa.services.spatial::ViewerRole" TO DEMO; -- Editing & Creating custom choropleth layers
GRANT SAP_FPA_SPATIAL_CUSTOM_REGIONS."sap.fpa.services.spatial::EditorRole" TO DEMO;

パブリックシノニムの作成

HDI コンテナとしてデプロイされた空間情報コンテンツを SAP Analytics Cloud から認識させるために、パブリックシノニムを作成します

1.SAP HANA Database Explorer を起動し、”DEMO” ユーザで SQL コンソールを起動します

2.以下の SQL 文を実行し、パブリックシノニムを作成します

-- public synonym の作成
CREATE PUBLIC SYNONYM SAC_CHOROPLETH_DATA FOR "FPA_SPATIAL_DATA"."FPA_SPATIAL_DATA.choropleth::CHOROPLETH";
CREATE PUBLIC SYNONYM SAC_CHOROPLETH_HIER FOR "SAP_FPA_SPATIAL_CUSTOM_REGIONS"."sap.fpa.services.spatial.choropleth::CHOROPLETH_CUSTOM_HIERARCHY";

標準地理階層(Default Geographical Data)の確認

SAP_FPA_SPATIAL_CUSTOM_REGIONS_Z.Z.Z.mtar のインポートで利用可能になる標準地理階層の確認をおこないます

1.SAP HANA Database Explorer を起動し、”DEMO” ユーザ で SQL コンソールを起動します

2.以下の SQL を実行します

-- 標準地理階層の確認
SELECT * FROM "SAP_FPA_SPATIAL_CUSTOM_REGIONS"."sap.fpa.services.spatial::custom_hierarchy.CHOROPLETH_CUSTOM_HIERARCHY";

3.SACで認識される標準地理階層が表示されます

残念ながら、標準地理階層には、日本の地図データとして国レベル(LEVEL=1)しか含まれていません。このため、現時点(2022/8)では、SACのコロプレス/ドリルレイヤを使用して日本の都道府県や市区町村といったエリアを”標準地理階層だけで” 扱うことができません。

SACのコロプレス/ドリルレイヤを使用して日本の都道府県や市区町村といったエリアを扱うためには、都道府県、市区町村の区域を表現するESRI Shapefileを入手して、カスタム地理階層を作成する必要があります。

SAP HANA Cloud : カスタム地理階層の作成

カスタム地理階層を作成する場合、下表に記載したカラムを持つテーブルを各階層レベルごとに作成する必要があります

必要なカラム データ型 概要
ID integer ユニークID
NAME varchar または nvarchar 名前。SACのUI(ツールチップ等)で利用される。
SHAPE ST_GEOMETRY SACの地図マップで表示される地理形状
SHAPEPOINT ST_POINT SHAPEの中心点。ST_Centroid() で算出する
IS_LEAF boolean データポイントに直接ドリルできるか否か

日本の地理階層テーブルの作成

日本の地理階層を作成します

1.“DEMO” ユーザで、任意のスキーマ(この例では DEMO スキーマ)に以下の階層レベルを表す3つのテーブルを作成します

  • レベル1: 国(JAPAN_HIER_LEVEL_1)
  • レベル2: 都道府県(JAPAN_HIER_LEVEL_2)
  • レベル3: 市区町村(JAPAN_HIER_LEVEL_3)
CREATE COLUMN TABLE “DEMO"."JAPAN_HIER_LEVEL_1" (
ID INT PRIMARY KEY
, NAME NVARCHAR(100)
, SHAPE ST_GEOMETRY(3857)
, SHAPEPOINT ST_POINT(3857)
, IS_LEAF BOOLEAN
); CREATE COLUMN TABLE “DEMO"."JAPAN_HIER_LEVEL_2" (
ID INT PRIMARY KEY
, NAME NVARCHAR(100)
, SHAPE ST_GEOMETRY(3857)
, SHAPEPOINT ST_POINT(3857)
, IS_LEAF BOOLEAN
); CREATE COLUMN TABLE “DEMO"."JAPAN_HIER_LEVEL_3" (
ID INT PRIMARY KEY
, NAME NVARCHAR(100)
, SHAPE ST_GEOMETRY(3857)
, SHAPEPOINT ST_POINT(3857)
, IS_LEAF BOOLEAN
);

日本地図のESRI Shapefileの準備

日本地図の階層を作成するための Shapefile を準備します
※今回使用するデータは非商用での利用のみ可能、再配布や商用利用は不可

1.今回は DIVA-GIS からフリーの Shapefile をダウンロードします

2.プルダウンメニューから以下を選択して、[OK]ボタンをクリックして、Shapefile をダウンロードします

  • Country: Japan
  • Subject: Administrative areas

3.[Download] リンクをクリックします

4.ダウンロードするフォルダを選択してダウンロードを実行します

HANA Cloud への ESRI Shapefile のインポート

HANA Cloud に Shapefile をインポートします。インポートは、SAP HANA Database Explorer から実行できます。

1.“DEMO” ユーザで SAP HANA Database Explorer にアクセスします

2.Tables を右クリックして表示されるコンテキストメニューから [Import Data] を選択します

3.IMPORT TYPE で、”Import ESRI Shapefiles” を選択し、[Step 2] ボタンをクリックします

4.IMPORT SOURCE で、以下を入力します

  • Import Shapefiles From: Local
  • Local Archives: ダウンロードした zip ファイル(この例では JPN_adm.zip)

5.zip ファイルに含まれる Shapefile が表示されます

6.license のチェックを外して、[Step 3] ボタンをクリックします

7.IMPORT TARGET で、Import into New/Existing Schema に 任意のスキーマ(この例ではDEMO)を入力して [Step 4] ボタンをクリックします

8.IMPORT OPTIONS で、以下を入力して、[Import] をクリックします(データの SRID4326 であるため SRID=4326 としてインポートします)

  • Number of Parallel Threads: 任意の数字(この例では4)
  • Spatial Reference Identifier (SRID): (4326) WGS 84

9.インポート結果を確認します

日本の地理階層テーブルにデータを入れる

インポートしたデータをもとに日本の地理階層テーブルにデータを入れます

1.“DEMO”ユーザで、SQL Console から 以下の SQL を実行します

  • SRIDを4326から3857に変換します
  • SHAPE の中心点を ST_Centroid() で算出します
INSERT INTO "DEMO"."JAPAN_HIER_LEVEL_1" ("ID", "NAME", "SHAPE", "SHAPEPOINT") SELECT ID_0, NAME_CHINE, SHAPE.ST_Transform(3857), SHAPE.ST_Transform(3857).ST_Centroid()
FROM "DEMO"."JPN_adm0"; INSERT INTO "DEMO"."JAPAN_HIER_LEVEL_2" ("ID", "NAME", "SHAPE", "SHAPEPOINT") SELECT ID_1, NL_NAME_1, SHAPE.ST_Transform(3857), SHAPE.ST_Transform(3857).ST_Centroid()
FROM "DEMO"."JPN_adm1"; INSERT INTO "DEMO"."JAPAN_HIER_LEVEL_3" ("ID", "NAME", "SHAPE", "SHAPEPOINT") SELECT ID_2	, NL_NAME_2, SHAPE.ST_Transform(3857), SHAPE.ST_Transform(3857).ST_Centroid()
FROM "DEMO"."JPN_adm2";

User Provided Service の作成

HDI スキーマから非 HDI スキーマにアクセスするために User Provided Service を作成します

1.SAP Business Application Studio のメニューから [Terminal] > [New Terminal] を選択し開いたターミナルから以下のコマンドを実行して、”hanacloud-ups” という名前の User Provided Service を作成します

$ cf cups hanacloud-ups -p “{\”user\“:\”DEMO\“, \”password\“:\“<パスワード>\", \"tags\":[\"hana\"], \"schema\":\"DEMO\"}"

データベース接続の作成

作成した User Provided Service を使用して HANA Cloud データベースに接続するために Database Connection を作成します

1.SAP Business Application Studio の SAP HANA PROJECTS の demo/db 以下の Database Connections の [add database connection] ボタンをクリックします

2.Add Database Connection の画面から以下を入力し、[Add] ボタンをクリックします

  • Select connection type: Existing user-provided service insntance
  • Select SAP HANA user-provided service instance name: 作成したUPSの名前(この例ではhanacloud-ups)

アクセス権限設定ファイルの作成

作成した User Provided Service を使用して HANA Cloud データベースに接続する際のアクセス権限の設定をおこないます

1.SAP Business Application Studio で demo プロジェクトを開きます

2.demo/db フォルダに cfg フォルダを作成します

3.cfg フォルダに、”demo.hdbgrants” という名前のファイルを作成します

4.エディタで右のコードを入力します。この例では、“DEMO” スキーマに対する SELECT 権限を付与しています

5.ファイルを Save して、Deploy します

シノニムの作成

HDI コンテナの Calculation View から非 HDI コンテナのスキーマ内のテーブルにアクセスするためにシノニムを作成します

1.SAP Business Application Studio のメニューから [View] > [Find Command…] を選択します

2.“SAP HANA: Create SAP HANA Database Artifact” を選択します

3.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: Synonym (hdbsynonym)
  • Specify the artifact name: 任意の名前(この例では demo)

4.シノニムエディタで Synonym Name に JAPAN_HIER_LEVEL_1 と入力します

5.Object Name の [Click to Select] ボタンをクリックします

6.Find Data Sources 画面において、Services の “hanacloud-ups” にチェックします

7.検索窓に “JAPAN_HIER” を入力します

8.JAPAN_HIER_LEVEL_1 テーブルにラジオボタンにチェックし、[Finish] ボタンをクリックします

9.同様に、シノニムエディタで以下のシノニムを定義します

  • Synonym Name: JAPAN_HIER_LEVEL_2(DEMO.JAPAN_HIER_LEVEL_2 にマッピング)
  • Synonym Name: JAPAN_HIER_LEVEL_3 (DEMO.JAPAN_HIER_LEVEL_3 にマッピング)

10.[File] > [Save] を選択して、シノニムファイルを保存します

11.作成したシノニムファイル(この例では demo.hdbsynonym)をデプロイします

日本の地理階層の Calculation Viewの作成

日本の地理階層テーブル毎に Dimension タイプの Calculation View を作成します

1.SAP Business Application Studio のメニューから [View] > [Find Command…] を選択します

2.“SAP HANA: Create SAP HANA Database Artifact” を選択します

3.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_JAPAN_HIER_LEVEL_1
  • Choose a data category: DIMENSION

4.New Calculation Viewのダイアログが表示された場合、Data Category を DIMENSION にして [Create] ボタンをクリックします(表示されない場合は次へ進む)

5.Projection ノードの [Add Data Source] をクリックします

6.Find Data Sources ダイアログで、”JAPAN_HIER_LEVEL_1” のラジオボタンにチェックし、[Finish] ボタンをクリックします

7.Projection ノードの [Expand Details Panel] をクリックします

8.Mapping タブで、Data Sources の “JAPAN_HIER_LEVEL_1” テーブルを選択し、[Add To Output] ボタンをクリックして、すべてのカラムを Output Columns に指定します

9.Semantics ノードをクリックします

10.Columns タブで、ID の Key にチェックします
※Key カラムが表示されていない場合、
歯車マーク⚙の[Customize Column Display] ボタンを
クリックして、Key カラムを表示するように
設定します

11.変更を保存して、デプロイします

12.同様の手順で JAPAN_HIER_LEVEL_2 をもとに CV_JAPAN_HIER_LEVEL_2 を作成して、デプロイします

13.同様の手順で JAPAN_HIER_LEVEL_3 をもとに CV_JAPAN_HIER_LEVEL_3 を作成して、デプロイします

HDIコンテナにアクセスするためのロールの付与

HDI コンテナに作成した日本の地理階層の Calculation View にデータベースユーザである “DEMO” ユーザでアクセスするために、”DEMO” ユーザに HDI コンテナにアクセスするためのロールを付与します

1.DBADMIN ユーザで SAP HANA Cockpit にログインし、 User Management アプリケーションを起動します

2.“DEMO” ユーザの [Assign Roles] をクリックします

3.Role Assignment for User DEMO 画面で、[Edit] ボタンをクリックします

4.Role Assignment for User DEMO 画面で、[Add] ボタンをクリックします

5.Select Roles の画面で以下のロールにチェックし、[Select] ボタンをクリックします

  • <HDIコンテナ名>::access_role(この例では、SPATIAL_DEMO_1::access_role)

6.Role Assignment for User DEMO 画面で、[Save] ボタンをクリックし、変更を保存します

カスタム階層の登録

作成したカスタム階層を CHOROPLETH_CUSTOM_HIERARCHY テーブルに登録します

1.SAP HANA Database Explorer を起動し、”DEMO” ユーザで HANA Cloud に接続します

2.SQL Console で以下の SQL を実行し、カスタム階層を登録します
※CV_JAPAN_HIER_LEVEL_*はCalculation View名、SPATIAL_DEMO_1はスキーマ名(HDIコンテナ名)

INSERT INTO "SAP_FPA_SPATIAL_CUSTOM_REGIONS"."sap.fpa.services.spatial::custom_hierarchy.CHOROPLETH_CUSTOM_HIERARCHY"
VALUES ('Japan Region Hierarchy', 2, 'NAME', 'name', 6, 1, '階層レベル1', 'SHAPE', 'CV_JAPAN_HIER_LEVEL_1', '', 'SPATIAL_DEMO_1', '0'); INSERT INTO "SAP_FPA_SPATIAL_CUSTOM_REGIONS"."sap.fpa.services.spatial::custom_hierarchy.CHOROPLETH_CUSTOM_HIERARCHY"
VALUES ('Japan Region Hierarchy', 2, 'NAME', 'name', 7, 2, '階層レベル2', 'SHAPE', 'CV_JAPAN_HIER_LEVEL_2', '', 'SPATIAL_DEMO_1', '0'); INSERT INTO "SAP_FPA_SPATIAL_CUSTOM_REGIONS"."sap.fpa.services.spatial::custom_hierarchy.CHOROPLETH_CUSTOM_HIERARCHY"
VALUES ('Japan Region Hierarchy', 2, 'NAME', 'name', 8, 3, '階層レベル3', 'SHAPE', 'CV_JAPAN_HIER_LEVEL_3', '', 'SPATIAL_DEMO_1', '0');

3.カスタム階層が登録され、SACから利用できるようになります

(参考)CHOROPLETH_CUSTOM_HIERARCHY テーブル

CHOROPLETH_CUSTOM_HIERARCHY テーブルは以下の構造をしています

  • NAMEは、SACでコロプレス/ドリルレイヤを指定した際の、ロケーションディメンションの階層を選んだ時に表示される値です
  • HIERARCHYIDは、同じ階層定義で同じ値を設定します
  • IDはテーブル内でユニークな値にします
  • LEVELは階層のレベルを表します
  • LNAMEは、SACでレイヤ階層の編集で表示されるラベル名です
  • OBJECT、PACKAGE、SCHEMAで、定義している DIMENSION タイプの Calculation View を指定します

HANA CLoud : 分析用データの準備

以下の情報を利用して、市区町村ごとの人口および世帯数データを作成します

  • 総務省ホームページの「住民基本台帳に基づく人口、人口動態及び世帯数(平成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 に接続します

2.下の 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)
);

3.IMPORT ウィザードを使用して、人口動態データを TEMP1 テーブルに、市町村役場の位置データを TEMP2 テーブルにインポートします

4.下の 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;

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 プロジェクトを開きます

2.シノニムファイル(この例では demo.hdbsynonym)ファイルを開きます

3.シノニムエディタで以下のシノニムを定義します

  • Synonym Name: ADMINISTRATIVE_AREA(DEMO.ADMINISTRATIVE_AREA にマッピング)

4.シノニムファイルを保存し、デプロイします

人口動態データをモデル化する Calculation Viewの作成

市区町村別の人口動態をモデル化する Calculation View を作成します

1.SAP Business Application Studio のメニューから [View] > [Find Command…] を選択します

2.“SAP HANA: Create SAP HANA Database Artifact” を選択します

3.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
  • Choose a data category: CUBE

4.Aggregation ノードの [Add Data Source] をクリックします

5.Find Data Sources ダイアログで、”ADMINISTRATIVE_AREA” のラジオボタンにチェックし、[Finish] ボタンをクリックします

6.Aggregation ノードの [Expand Details Panel] をクリックします

7.Mapping タブで、Data Sources の以下のカラムを Output Columns に設定します

  • ADMINISTRATIVE_AREA_CODE(行政区域コード)
  • CITY(市区町村名)
  • POPULATION(人口)
  • HOUSEHOLDS(世帯数)

8.Calculated Columns タブで    [Add] ボタンをクリックし、Calculated Column を選択します

9.以下の情報を入力します

  • Name: ID
  • Label: ID
  • Data Type: NVARCHAR
  • Length: 64

10.Expression 内の [Expression Editor] ボタンをクリックします

11.Expression Editor で、以下の Expression を入力します

"CITY" || '(' || "ADMINISTRATIVE_AREA_CODE" || ')'

12.[Validate Syntax] ボタンをクリックします

13.Validation Result ダイアログで問題がないことを確認し、[OK] ボタンをクリックします

14.[Back] ボタンをクリックします

15.ID カラムが作成されたことを確認します

16.Semantics ノードをクリックします

17.Columns タブで以下を設定します

  • ADMINISTRATIVE_AREA_CODE : Hidden にチェック
  • CITY: Hidden にチェック
  • ID: Key にチェック

18.変更を保存して、デプロイします

SAP_BOC_SPATIAL ネームスペースの作成

SAC の HANA Cloud ライブ接続(HDI コンテナを使用するオンプレミス HANA のライブ接続も同様)で地理マップを使用するためには、 SAP_BOC_SPATIAL ネームスペースを有するロケーションデータの Calculation View を作成する必要があります

1.SAP Business Application Studio で demo プロジェクトを開きます

2.db/src を右クリックして表示されるコンテキストメニューから [New Folder] を選択します

3.New Folder ダイアログでフォルダ名を入力して [OK] ボタンをクリックします

  • フォルダ名 : SAP_BOC_SPATIAL固定値

4.db/src を右クリックして表示されるコンテキストメニューから [New File] を選択します

5.New File ダイアログでフォルダ名を入力して [OK] ボタンをクリックします

  • ファイル名 : .hdbnamespace

6.エディタで以下を記述します

{ "name": "", "subfolder": "append"
}

7.変更を保存して、デプロイします

ロケーションデータの Calculation View の作成

ロケーションデータの Calculation View を作成します

1.SAP Business Application Studio のメニューから [View] > [Find Command…] を選択します

2.“SAP HANA: Create SAP HANA Database Artifact” を選択します

3.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

4.Projection ノードの [Add Data Source] をクリックします

5.Find Data Sources ダイアログで、”ADMINISTRATIVE_AREA” のラジオボタンにチェックし、[Finish] ボタンをクリックします

6.Projection ノードの [Expand Details Panel] をクリックします

7.Mapping タブで、Data Sources の以下のカラムを Output Columns に設定します

  • ADMINISTRATIVE_AREA_CODE(行政区域コード)
  • CITY(市区町村名)
  • ADMINISTRATIVE_AREA_POINT(地点)

8.Calculated Columns タブで    [Add] ボタンをクリックし、Calculated Column を選択します

9.以下の情報を入力します

  • Name: ID_LD
  • Label: ID_LD
  • Data Type: NVARCHAR
  • Length: 64

10.Expression 内の [Expression Editor] ボタンをクリックします

11.Expression Editor で、以下の Expression を入力します

"CITY" || '(' || "ADMINISTRATIVE_AREA_CODE" || ')'

12.[Validate Syntax] ボタンをクリックします

13.Validation Result ダイアログで問題がないことを確認し、[OK] ボタンをクリックします

14.[Back] ボタンをクリックします

15.ID_LD カラムが作成されたことを確認します

16.Semantics ノードをクリックします

17.Columns タブで以下を設定します

  • ID: Key にチェック

18.変更を保存して、デプロイします

SAP Analytics Cloud : システム設定

システム設定

SAP Analytics Cloud において、SAP HANA / SAP HANA Cloud のライブ接続で SAP HANA / SAP HANA Cloud のパブリックシノニム(公開同義語)を使用してコロプレスレイヤにアクセスできるように設定します

1.管理者権限をもつユーザで SAP Analytics Cloud にログインします

2.メインメニューから、[システム] > [管理] を選択します

3.[システム設定] タブを選択し、🖊[編集] ボタンをクリックます

4.検索窓に”コロプレス”と入力します

5.“コロプレスレイヤで公開同義語を使用” を “ON” に
します

6. [保存]ボタンをクリックして、変更を保存します

SAP Analytics Cloud : モデルの作成

モデルの作成

HANA Cloud ライブ接続を使用して、人口動態の分析モデルを作成します

1.SAP Analytics Cloud にログインします

2.メインメニューから、[モデラ] を選択します

3.[ライブデータモデル] を選択します

4.HANA Cloud への接続情報を入力します

  • システムタイプ: SAP HANA
  • 接続: 接続で定義した名前
  • データソース: CV_DEMOGRAPHICS(作成した分析用の Calculation View)

5.[OK]ボタンをクリックします
※データソースは、クリックするとデータソース選択ダイアログが表示されます

6.任意でメジャーを編集します

7.任意ですべてのディメンションを編集します

8. 上部のタブから[ロケーションディメンションの作成] ボタンをクリックします

9.ロケーションディメンションの作成ダイアログで以下の情報を入力後、[OK] ボタンをクリックして、ロケーションディメンションを作成します

  • ロケーションID: ID
    (分析対象モデル側のID)
  • ビュー名: CV_ADMINISTRATIVE_AREA_LOC
    (SAP_BOC_SPATIAL 名前空間に作成したロケーションモデル)
  • マッピング対象のID: ID_LD
    (ロケーションモデル側のID)

10.[モデルの保存]ボタンをクリックします

11.モデルの情報を入力します

  • 名前: DEMOGRAPHICS(任意の名前)
  • 説明: 人口動態(任意の名前)

12.[保存] ボタンをクリックして、モデルを保存します

SAP Analytics Cloud : 地理マップの作成

地理マップの作成

コロプレス/ドリルレイヤを使用する地理マップを作成します

1.メインメニューから、[ストーリー] を選択します

2.[キャンパス]を選択します

3.[デザインモードのタイプを選択] ダイアログで、”従来のデザインエクスペリエンス” を選択します

4.[作成] ボタンをクリックします
※ 2022/8時点では、デザインモードでは地理マップの最適化モードはサポートされていません

5.オブジェクト一覧から [地理マップ] を選択します

6.地図レイヤ > コンテンツレイヤ の [レイヤ追加] をクリックします

7.データソースの [モデルの選択]ボタンをクリックします

8.モデル選択ダイアログから [他のモデルを選択…] を選択します

9.データセットまたはモデルの選択ダイアログから ”DEMOGRAPHICS”(前の手順で作成したモデル)を検索して選択します

10.レイヤタイプから”コロプレス/ドリルレイヤ”を選択します

11.ロケーションディメンションから
”ADMINISTRATIVE_AREA_POINT_LD” を選択します

12.ロケーションディメンションの[階層]をクリックし、”Japan Region Hierarchy” を選択します

13.任意で、ロケーションディメンションの [名前の変更] をクリックし、名前を変更します

14.コロプレスの色の [+ メジャーの追加] をクリックし、メジャー以下の “人口” を選択します

15.任意でコロプレスの色を編集し、[OK]ボタンをクリックします

16.コンテンツレイヤのレイヤ1の[階層]を選択します

17.任意でレイヤ階層を編集し、[保存]ボタンをクリックします

  • 階層レベル1: 国
  • 階層レベル2: 都道府県
  • 階層レベル3: 市区町村

18.[保存]ボタンをクリックします

19.任意の名前と説明を入力して[OK]ボタンをクリックします

作成したマップの動作確認

作成した地図マップの動作を確認します

1.日本地図の任意の地点をクリックします

(注意)

  • 今回使用した日本全土のShapefileはサイズが大きく、パフォーマンスが低下したため、ツールバーのアクションが無効化され、ツールバーのアクションによる国レイヤから都道府県レイヤへのドリルダウン機能が利用できません(右画面参照)。
  • この現象を回避するためには、解像度の低いShapefileを使用するなどして、Shapefileのサイズを小さくする必要があります。
  • 都道府県のShapefile、市区町村のShapefileについてはサイズ的に問題ないため、ツールバーのドリルダウン機能を利用して、都道府県レイヤから市区町村レイヤ、市区町村レイヤから地点レイヤへのドリルダウンが可能です

2.[階層を上下にナビゲート]ボタンをクリックします

3.“都道府県”を選択します

4.都道府県単位のコロプレスマップが表示されます

5.関東地方にズームし、地図上の神奈川県の任意の地点をクリックします

6.神奈川県の人口がポップアップで表示されます。

7.[ドリルダウン]ボタンをクリックします

8.市区町村単位のコロプレスマップが表示されます

9.地図上の横浜市の任意の地点をクリックします

10.横浜市の人口が表示されます

11.[ドリルダウン]ボタンをクリックします

12.地図上に地点(各市区町村ポイント)がプロットされます

13.地点をクリックすると名称(行政区域コード)と人口がポップアップで表示されます

14.[ドリルアップ]ボタンをクリックすると上位階層にドリルアップできます

これで終了です!お疲れさまでした。最後までお読みいただきありがとうございました。

【参考】

SAP ブログ

SAP Notes

SAPヘルプ