SAP Analytics Cloud（SAC）のインポートモデルのインポート方法について

# はじめに
SAP Analytics Cloud（以下SAC）のインポートモデルのインポート方法について紹介します。インポート方法には「更新」「追加」「選択したバージョンデータを削除および置換」「データのサブセットを削除および置換」の４パターン存在します。要は既存データに対して更にデータをインポートする際にどのような方法で更新するかを選択するのですが、ヘルプを見ても文章ばかりでイメージがしにくかったので、それぞれの方法でどのようにデータがインポートされるか、絵にしてそのイメージを紹介したいと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2705941/74a8330e-e310-3289-c4f6-571330934831.png)

# インポート方法
　(1)更新
　(2)追加
　(3)選択したバージョンデータを削除および置換
　(4)データのサブセットを削除および置換

 # （１）更新
　インポート方法で「更新」を選択した場合のデータ更新イメージです。

 　①【サンプル】以下、既存データ
　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2705941/ab387896-4f98-53f3-38df-0dc4619af93a.png)

　②【サンプル】以下、インポートデータ
　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2705941/0a57e8da-e327-77d0-1cea-a57a3cd7d81c.png)

　③上記、既存データにインポートデータを「更新」モードで実施した場合の
　 データイメージが以下となります。

　＜結果＞
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2705941/d8d88bd7-f64a-f24d-573a-118d57cfa999.png)
　Date、Department、Personをキーにして同一メンバー行のメジャー値を上書きします。
　元々、担当Bの金額が「500」だったのが、インポートデータをインポートする事で
　「1000」に更新されています。それ以外のレコードは値が同じなので変更はありません。
　また、存在しないメンバーは新規レコードとして追加されます。

 # （２）追加
　インポート方法で「新規」を選択した場合のデータ更新イメージです。
 
　①【サンプル】以下、既存データ
　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2705941/ab387896-4f98-53f3-38df-0dc4619af93a.png)

　②【サンプル】以下、インポートデータ
　 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2705941/87eba4dd-e807-71b5-87bb-0f9e538568e4.png)

　③上記、既存データにインポートデータを「新規」モードで実施した場合の
　 データイメージが以下となります。

　＜結果＞
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2705941/60e5eb41-f36b-d9ca-bd3a-b72217d7ba28.png)
　Date、Department、Personをキーにして同一メンバー行のメジャー値を合算します。
　新規にレコードが追加されるわけではなく、既存データとインポートデータの
　メジャー値が合計される形となるので担当Bの金額は500+1000＝1500で更新されます。
　存在しないメンバーは「更新」と同様で新規レコードとして追加されます。

  # （３）選択したバージョンデータを削除および置換
　インポート方法で「選択したバージョンデータを削除および置換」を選択した場合のデータ更新イメージです。

 　①【サンプル】以下、既存データ
 　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2705941/9a577319-8290-65f6-63de-42d89cd08c19.png)

　②【サンプル】以下、インポートデータ
　 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2705941/16028a9e-8316-d552-16e5-ade446c9e4c2.png)

　③上記、既存データにインポートデータを「選択したバージョンデータを削除および置換」モードで実施した場合の　 データイメージが以下となります。

　＜結果＞
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2705941/371da314-9eb5-5bb5-4403-42497f4668ff.png)
Version単位にDelete・Insertで更新されます。上記の例で言いますと既存データのVersion「Actual」には３レコード存在していますが、一度削除され、インポートデータ（１レコード）が追加される動きとなります。また、インポートデータに「Forecast」のレコードは存在しない為、更新はされません。

※（補足）分析モデルの場合、 Versionは「Actual」のみなので特にVersionを意識する必要はなく、Delete・Insertで更新される認識で良いと思います。

  # （４）データのサブセットを削除および置換
　インポート方法で「データのサブセットを削除および置換」を選択した場合のデータ更新イメージです。

  　①【サンプル】以下、既存データ
 　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2705941/784768e1-0dc9-c6cc-1155-c80c059eeb3b.png)


　②【サンプル】以下、インポートデータ
 　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2705941/acb010bc-152b-1913-b816-f3750c284742.png)

　③上記、既存データにインポートデータを「データのサブセットを削除および置換」
　モードで実施した場合のデータイメージが以下となります。
 
　＜結果＞
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2705941/29f615c8-9929-1bf1-d841-7e83223dde07.png)
　「選択したバージョンデータを削除および置換」はVersion単位で置換が実施されるのに対して、当方法はディメンションも指定しての置換が可能です。その為、Versionのみだと「Actual」の6レコードが置換対象となりますが、今回の例の様に「Vresion」と「Persion」を指定した事により、置換対象が左記のディメンションで絞り込まれる為、「Actual」「担当A」の2レコード（上記赤枠）が対象となります。

 # まとめ
　何も考えずにインポートすると意図しない値になってしまう為、データソース側のデータ構成を確認し、適切なインポート方法を設定しましょう。

 # おわりに
　インポート方法についていかがでしたでしょうか。SACのヘルプにも記載はありますが文章ばかりで結果としてどうなるのかイメージしづらいと個人的には思いました。今回紹介したように文章ではイメージしづらい機能があれば、少しでも処理のイメージが伝えられるように今後も投稿していきたいと思います。