外部データを Insight にマイグレーションしてみよう

Jira Service Management にアセット管理ができる Insight 機能が統合されたことによって、Jira 課題とアセット（データ）をリンクさせて可視化し、効率的な課題解決に結び付けることができるようになりました。（※1）

Insight はとても柔軟な構造になっているため、H/W や S/W などのデバイス情報の他に、人事データ・法務データ・営業データなどのあらゆる情報を格納・管理することができ、RDB でのマスターテーブルのような位置付けとして利用できます。

格納するオブジェクトの属性についても、ステータス型や選択値など Insight 特有の機能が提供されており、視覚的にも分かりやすく、管理もしやすいユーザーフレンドリーなものとなっています。

この記事を読まれている方の中には、まだマスターデータ関連は個別にデータベースや Excel などで管理しているという方や、データを Insight に移行することに躊躇いを感じている方もいらっしゃるのではないでしょうか。

Insight には外部データを取り込むインポート機能が提供されており、基本的に RDB のような二次元管理しているデータであれば、簡単にインポートすることができます。

この記事を書いている時点で、Insight はインポート可能な外部データ形式として下記3種類に対応しています。

- CSV ファイル
- JSON ファイル
- Insight Discovery データ

本記事では、CSV ファイルから Insight へのデータのインポートについて、Insight 側で事前に設定しておくべきことや元データの準備時に気を付けるべきことなど、いくつかの例を交えながら説明していきます。

### 元データのエンコード
元データは Insight でサポートしているエンコードで作成する必要があります。

Insight では UFT-8、UFT-16の他、ISO-8859-1、ISO-8859-15、Windows-1250、Windows 1252 に対応しています。デフォルトは「UTF-8」です。（※2）

サポート外のエンコード形式のデータはインポートできても文字化けしますので、必ずサポートされている形式でデータを作成してください。

### 日付データのインポート
元データに日付形式のデータ（開始日・終了日など）があり、Insight 上でも日付属性として管理したい場合があると思います。

インポート設定時に Insight 構造（オブジェクト タイプ）を作成している場合は、インポート前に手動で属性を日付型に変更します。

(「インポート後に属性の変更はできませんので、必ずインポート前におこなってください）

![image2022-3-11_17-41-19(1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626313/108022a3-397c-9e76-cf2f-fea03a961bac.png)

日付型データとしてデータがインポートされ、オブジェクト入力・編集時もカレンダーから選択することができるようになります。

![image2022-3-11_17-51-53(2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626313/fb52a868-4a66-ab5c-3730-17c4ecb218b8.png)

![image2022-3-22_11-28-7(3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626313/1fd993ff-dd3d-2937-85e7-3cf47da38a71.png)

### 選択値データのインポート
Insight では、オブジェクトの属性を選択値とすることができます。

これにより、オブジェクト入力時や編集時に、データをドロップダウンリストから選べるようになります。

この場合も、インポート設定時に Insight 構造（オブジェクト タイプ）を作成している場合は、**インポート前に**手動で属性を選択値に変更しておきます。

![image2022-3-18_8-37-26(4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626313/8dd021f3-b185-857f-c56e-4d78a5708df6.png)

また、インポート設定時に未知の値を「追加」に設定しておくと、すべての値が追加されて選択可能になります。

逆に、未知の値を「無視」に設定しておくと、オプションに設定されていない値はインポートされません。

![image2022-3-18_8-43-33(5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626313/960d72d7-57f1-f39a-6bc5-553d13a138d4.png)

特定の値のみ有効としたい場合には、あらかじめ属性にオプションを設定しておく必要があります。

![image2022-3-22_12-31-8(6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626313/247dc74d-3b68-7a42-3336-170323390fd9.png)

データがインポートされると、選択値オブジェクトであることが分かるようになります。

![image2022-3-22_17-40-5(7).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626313/6da7ce7c-96fb-9994-e619-392b49308331.png)

### ステータス データのインポート
ステータス型データのインポートも選択値データと同様に、**インポート前に**手動で属性をステータスに変更しておきます。

ステータスに変更後、特定の値を設定しておきます。（※3）

![image2022-3-22_18-8-35(8).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626313/de99b5e1-b9c9-6804-dda4-03749cd3ba77.png)

インポートを実行すると、事前に登録されている値は自動的にステータスとして認識されます。

![image2022-3-24_17-41-52(9).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626313/386ce09f-2318-d22f-9ded-982c8e590e6d.png)

### PKのないテーブルをインポートするには・・
Insight では、オブジェクトタイプ マッピングにて識別子の設定が必要となり、Primary Key (PK) が設定されていない（ユニークとなる列がない）データは全件がインポートされません。

そのため、全件データをインポートしたい場合には、事前に元データにユニークとなる列データ（例：連番など）を追加しておく必要があります。

そして、この列をラベルに設定したうえでインポートします。

![image2022-3-11_17-43-51(10).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626313/8ab40524-9ed6-ea75-d862-c06f0106bc4d.png)

インポート後、この属性は不要となるため、削除し、本来ラベルとして設定したい属性に変更します。

![image2022-3-11_17-46-32(11).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626313/ee995948-db16-955b-636c-b13a009175b7.png)

![image2022-3-22_17-22-24(12).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626313/58486a7e-08fa-1133-9b14-15f8f6d19b18.png)

以降は、新しくラベルとした属性を選択することによってオブジェクトの編集などが可能になります。

ただし、同一ラベルのオブジェクトが複数存在することになりますので、編集の際には誤入力がないように注意する必要があります。

![image2022-3-11_17-50-29(13).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626313/5ac1a270-25a8-dd5e-82ab-ce1b0786cabf.png)

### 外部参照データをインポートするには・・
Foreign Key (FK) のあるテーブルをインポートする場合にも、事前に設定しておく箇所がいくつか存在します。

属性の タイプ のドロップダウンから「オブジェクト」を選択し、さらに タイプ値 から参照先のオブジェクトタイプを選択し、「更新」します。

:::note info
オブジェクトの参照設定をする場合には、参照先のオブジェクトタイプが先に作成されている必要があります。
また、参照先のオブジェクトがラベルとして設定されている必要があります。
:::

![image2022-3-11_15-35-2(14).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626313/35a72fc0-3be5-d6ce-0cfc-1b22964638c4.png)

![image2022-3-11_15-36-10(15).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626313/56687fc9-0d50-abe7-2b93-fd8171aaa23c.png)

オブジェクトマッピング側でIQLを入力します。

「Label=${カテゴリーID}」などのように、参照先のラベル名を変数に設定してください。

![image2022-3-11_15-38-21(16).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626313/d9b5fd7b-67b5-f34e-7079-7215dbb78181.png)

![image2022-3-11_15-40-19(17).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626313/31a1b14f-6c31-7931-5895-b756b9bf0fea.png)

データがインポートされると、オブジェクトに参照先へのリンクが張られた状態で表示されます。

リンクをクリックすると、参照先オブジェクトの概要を確認できます。

![image2022-3-22_17-27-23(18).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626313/a01938b8-8489-0c31-1e3b-ee900aa0a186.png)

![image2022-3-22_17-37-15(19).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626313/2ad418ba-84b8-d0f7-fa64-159cf0e86612.png)

以上、日頃から業務にて使用しているデータにはさまざまなパターンがあり、インポートする際に考慮すべき事項がいろいろとあります。

本記事が、Jira Service Management のオススメ機能である Insight 活用の参考にしていただけると幸いです。

※1）Jira Service Management の Insight は、Premium と Enterprise でのみ利用できます。また、企業管理対象プロジェクトとのみ互換性があります。
https://www.atlassian.com/ja/software/jira/service-management/premium
https://www.ricksoft.jp/atlassian/jira-service-desk/jira-service-desk-pricing-atlassiancloud.html#link_title
※2）デフォルトのエンコードは UTF-8 ですが、その他のエンコードにも対応しています。
https://support.atlassian.com/ja/jira-service-management-cloud/docs/import-a-csv-file-into-insight/
※3）ステータスは、Insight 設定画面の「ステータス」にて設定できます。
https://support.atlassian.com/jira-service-management-cloud/docs/what-is-a-status/