Database Actionsのデータ・ロードの新機能を試してみた（感情分析など）

# はじめに
4月のアップデートでDatabase Actionsのデータ・ロードに以下の機能強化がされました。

1. リソース・プリンシパルの有効化
1. 他のスキーマへのロード
1. 感情分析とキーフレーズの抽出(OCI Languageとの連携)
1. 最近のロードの情報確認 
1. OCI Data Catalog、AWS Glueカタログの登録と同期のサポート
1. GeoJSONファイルのロード

ローカルにあるファイルをロードして感情分析を行う流れで上から1から4を試してみます。
ファイルはOACのLivelabsのワークショップの提供ファイル[hotel.csv](https://c4u04.objectstorage.us-ashburn-1.oci.customer-oci.com/p/EcTjWk2IuZPZeNnD_fYMcgUhdNDIDA6rt9gaFj_WZMiL7VvxPBNMY60837hu5hga/n/c4u04/b/livelabsfiles/o/oci-library/hotel.zip
) を拝借しました。ホテルの宿泊客のレビュー情報です（英語）。


# 準備：ポリシーの設定
リソースプリンシパルのための動的グループを作成しポリシーを付与します。詳細はドキュメント「[Autonomous Databaseでリソース・プリンシパルを使用するための前提条件の実行](https://docs.oracle.com/cd/E83857_01/paas/autonomous-database/serverless/adbsb/resource-principal.html#GUID-3CF59CED-F7DF-46AF-B3CF-E703ED0BB3EE)」をご確認ください。

OCI Languageのためのポリシーを設定します。OCI Languageのテキスト・アナリティクスに必要なポリシーについてはホームに記載があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/38632cf8-9da3-cb6b-0661-c6fdf0a1139c.png)

今回はユーザーが存在するグループへ権限を付与しました。
```
allow group <group-name> to manage ai-service-language-family in tenancy
```
# リソース・プリンシパルの有効化
Database ActionsのData Studioにアクセスします。
今回のアップデートによりデータ・ロードの[**接続**]でリソース・プリンシパルの有効化ができるようになりました。[**作成**]から[**リソース・プリンシパルの管理**]を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/4f10d080-2b22-8fb8-3392-f21c1fbd30b6.png)

[**リソース・プリンシパルの有効化**]をオンにして[**実行**]をクリックします。ADMINユーザー以外のユーザーにリソース・プリンシパルを有効にしたい場合は[**使用可能なユーザー**]から選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/e8a2015d-7da1-c9ec-c0c1-012e93439652.png)

有効になった旨の確認ウィンドウが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/c40dcd26-237e-91f9-2390-7a76339dd20c.png)

# 感情分析とキーフレーズの抽出(OCI Languageとの連携)/他スキーマへのロード
データのロードでOCI Languageと連携し、選択した列に対して感情分析の結果とそのキーフレーズを新規列として生成することができるようになりました。ローカル・ファイルとクラウド・ストアからのロードが可能です。（現在、OCI Languageは日本語未サポートです。

またこれまではログインしたスキーマに対してのみのロードでしたが、他のスキーマにロードすることができるようになりました。今回はローカル・ファイルのロードで実行してみます。

[**ローカル・ファイル**]を選択し、ダウンロードしたhotel.csvを選択し、設定アイコン（えんびつ）をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/6fa4c98d-bfe2-f9fc-ea15-933464ef1dfd.png)

まず、[**スキーマ**]のプルダウン・メニューで他のスキーマが選択できるようになっていることが確認できました。今回はTESTUSERを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/a70e6c62-73a6-5ab4-1f95-7a3a9b6a420d.png)

感情分析の設定は[**マッピング**]で行います。[**式の追加**]をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/bf52037e-d026-4d8f-312d-48d4bda089f6.png)

::: note info
リソース・プリンシパルの有効化が行われていない場合は[式の追加]で次のエラーになります

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/18516feb-d83d-8a46-6903-a3c07a41f559.png)
:::

[**式の追加**]では、式タイプ(センチメント分析またはキー・フレーズの抽出)、入力列に分析対象の列を選択します。ターゲット列は自動的に名前が入りますが編集可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/6ba3e6d2-d246-fafb-6973-3a98e8132110.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/fd50b316-9edf-9f7a-b2ad-63a40ac66927.png)

それぞれ[**OK**]をクリックすることで、新たな列として追加がされます。[**閉じる**]をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/f172ca61-004d-1ff1-2646-15b26a38d2fc.png)


設定前は作成される表名がHOTELでしたが、TESTUSER.HOTELになっていることが確認できます。そのまま[**開始**]をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/7bc0290e-22d2-52c2-c552-dc04bae56e4b.png)

# 新しいダッシュボード

開始をクリックすると、データ・ロードの[**ホーム**]に遷移します。ホームには新たに最近の表およびビューのロードが表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/186495d7-b51c-60c7-d702-a963ec7d5b28.png)

実行が完了すると、実行に関するレポートの確認および3点リーダにある[**表**]からさまざまなアクションが選択できます。[**詳細の表示**]をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/2057ae72-4802-4747-bb89-de9cd2c4a103.png)

**プレビュー**でデータを確認してみます。REVIEW_SEMTIMENT列にPositive/Negativeといったデータが、REVIEWxxxx列にはキーワードのデータがあるようです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/c3acd344-baaa-ef96-cadf-394c15e2f0f6.png)


例えば、3行目の感情がNegativeでキーワードがvehicleのREVIEWはどういうデータだったかというとこちらでした。

<table><td>My vehicle was parked in underground hotel parkade during my 3 day stay there.  My vehicle was broken into shortly after I checked-in. The hotel asked if I was in valet parking - I was right beside it.  But no security cameras caught the break-in.  There was no electronic gate at the entrance or exit.  Very bad security!  I lost approximately \$800 in valuables including prescription medication.  I asked if the hotel would pay the deductible for the broken window and locks.  I was told the XT did not own the parkade and that there were signs advising that it was not responsible for vehicle break-ins.  Other than that, I found the staff quite friendly and the accomodation quite nice.  The $30 I paid for my daughter's breakfast buffet was a little steep!</td></table>

要約するとこちらです。確かにネガティブですね。。。
<table><td>
ホテルに3日間滞在中、地下駐車場で車が侵入され、800ドル相当の貴重品が盗まれた。防犯カメラや電子ゲートがなく、所有者のXTは責任を負わないとの標識があった。スタッフはフレンドリーだったが、朝食の値段が高いと感じた。
</td><table>

# おわりに
Database Actionsの新機能を紹介しました。OCI Languageとの連携による感情分析が本当に簡単にできることに驚きました。OCI Languageが日本語をサポートすることが楽しみです。また個人的には他のスキーマにロードできるようになったことが地味にうれしかったです。

# 参考資料
ドキュメント: [What’s New for Oracle Autonomous Database Serverless](https://docs.oracle.com/en/cloud/paas/autonomous-database/serverless/adbsb/whats-new-adwc.html#GUID-FB8BBA10-3AF2-46BC-89C7-56FF09466C83)