はじめに
SAP Analytics Cloudへのデータ連携の方法は次の2種類になります。
- インポート接続
- ライブデータ接続
このうちインポート接続の場合は、座標データがあればSACのディメンション設定時に地理データを作成することができます。(下記の別記事を参照)
【SAC】SAP Analytics Cloud でデモ環境を構築する ~前編~
https://qiita.com/iwa_gino/items/72be48318e897908303a
一方、ライブデータ接続下で地理データを扱う場合には、HANA側で別途地理モデルを作成する必要があります。
今回は、GEOMETRYを使用した地理モデルの構築と、データモデルとの連携方法をご紹介します。
なお、手順については下記のページを参考にしました。
Creating Geo model from Live HANA Calculation View
https://saphanajourney.com/sap-analytics-cloud/learning-article/creating-geo-model-from-live-hana-calculation-view/
前提
・HANAのバージョンが SPS11 112.07 または SPS12 122.03 以降である必要があります
・今回は次のテーブル、CalclationViewを使用します。
【CL_TEST_SALES_DATA(Calclation View)】
手順
1.SPATIAL REFERENCEの追加
HANA側で下記のSQLを実行し、SPATIAL REFERENCEを追加します。
CREATE SPATIAL REFERENCE SYSTEM "WGS 84 / Pseudo-Mercator" IDENTIFIED BY 3857
TYPE PLANAR
SNAP TO GRID 1e-4
TOLERANCE 1e-4
COORDINATE X BETWEEN -20037508.3427892447 AND 20037508.3427892447
COORDINATE Y BETWEEN -19929191.7668547928 AND 19929191.766854766
ORGANIZATION "EPSG" IDENTIFIED BY 3857
LINEAR UNIT OF MEASURE "metre"
ANGULAR UNIT OF MEASURE NULL
POLYGON FORMAT 'EvenOdd'
STORAGE FORMAT 'Internal'
DEFINITION 'PROJCS["Popular Visualisation CRS / Mercator",GEOGCS["Popular
Visualisation CRS",DATUM["Popular_Visualisation_Datum",SPHEROID["Popular
Visualisation
Sphere",6378137,0,AUTHORITY["EPSG","7059"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[
"EPSG","6055"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",
0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4055"]],UNIT[
"metre",1,AUTHORITY["EPSG","9001"]],PROJECTION["Mercator_1SP"],PARAMETER["cen
tral_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PA
RAMETER["false_northing",0],AUTHORITY["EPSG","3785"],AXIS["X",EAST],AXIS["Y",
NORTH]]'
TRANSFORM DEFINITION '+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0
+lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null
+wktext +no_defs'
2.GEOMETRYを使用したGEOCODEテーブルの作成
今回は「T_TEST_SALES_DATA(実テーブル)」の**「営業所」**をキーに、
**「緯度」「経度」**を使ってジオコーディングしました。
CREATE COLUMN TABLE "SAC_TEST"."T_TEST_GEO_OFFICE"(
"EIGYOUSYO" NVARCHAR(50) CS_STRING PRIMARY KEY,
"GEOMETRY" ST_GEOMETRY(3857)
);
UPSERT "SAC_TEST"."T_TEST_GEO_OFFICE" ("EIGYOUSYO")
SELECT "営業所" FROM "SAC_TEST"."T_TEST_SALES_DATA" GROUP BY
"営業所";
UPDATE "SAC_TEST"."T_TEST_GEO_OFFICE"
SET "GEOMETRY" = new ST_GEOMETRY('POINT(' || "経度" || ' ' ||"緯度" ||
')', 4326).ST_Transform(3857)
FROM (
SELECT MIN("緯度") "緯度",
MIN("経度") "経度", "営業所"
FROM "SAC_TEST"."T_TEST_SALES_DATA" GROUP BY "営業所"),
"SAC_TEST"."T_TEST_GEO_OFFICE"
WHERE "営業所" = "EIGYOUSYO";
SQL実行結果:緯度経度が「GEOMETRY」にマッピングされた**「T_TEST_GEO_OFFICE」**というテーブルが作成されました。
3.GEOCODEテーブルのディメンション化
コンテンツ配下に**「SAP_BOC_SPATIAL」**という名称でパッケージを作成します。
(他のパッケージ名にすると上手くいかないため注意)
「SAP_BOC_SPATIAL」内でCalclation Viewを新規作成します。
今回は「CL_TEST_GEO_OFFICE」という名称で作成します。
Data Categoryを「DIMENSION」に変更し、「完了」をクリックしてください。
Projectionのソースに「T_TEST_GEO_OFFICE」を指定します。
EIGYOUSYO、GEOMETRYともにOUTPUTに指定します。
Semanticsに移動し、EIGYOUSYOをキー項目に設定します。
以上で「CL_TEST_GEO_OFFICE」の作成は終了です。Activate実行して、Calclation Viewを有効化してください。
4.データモデルとの連携
今回は「CL_TEST_SALES_DATA」をデータソースとした「SALES_DATA_LIVE」というモデルを作成しています。
SACにてモデル編集画面を開き、「ロケーションディメンションの作成」をクリックします。
ロケーションディメンションを作成画面が表示されます。
ビュー名に、先ほど作成した「CL_TEST_GEO_OFFICE」を選択します。
ロケーションIDに「営業所」、マッピング対象のIDに「EIGYOUSYO」を選び、「CL_TEST_SALES_DATA」と「CL_TEST_GEO_OFFICE」を連携します。
設定後「OK」をクリックし、モデルの保存を行ってください。