Oracle Analytics Cloud：2つのデータアクセス方法、ライブと自動キャッシュ

# はじめに
Oracle Analytics Cloud（**OAC**）では、データセットのアクセス方法としてライブと自動キャッシュがあります。
ライブとは、名前の通り必ずデータソースへの問い合わせが実施される、データ・アクセス方法です。頻繁に更新されるデータを使用する場合に便利です。
一方、自動キャッシュを選択した場合は、データソースからキャッシュにデータをロードまたはリロードします。これによりパフォーマンスを改善できる可能性があります。また、データソースへのアクセスの集中を避けることもできます。

公式ドキュメント：データセットをキャッシュするかライブにするか

https://docs.oracle.com/cd/E83857_01/paas/analytics-cloud/acubi/specify-whether-dataset-table-is-cached-or-live.html

:::note
データ・アクセス方法として、ライブとキャッシュ（自動キャッシュ）のいずれをサポートしているかは、こちらで確認できます。
「データセットでの利用」列を確認してください。
- [サポートされているデータソース](https://docs.oracle.com/cd/E83857_01/paas/analytics-cloud/acsds/supported-data-sources.html)
:::

# データセットの作成
事前にAutonomous Data Warehouseへの接続を作成しておきました。
作成した接続をクリックし、「手動問い合わせ」を右側のペインにドラッグ＆ドロップします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/699043b7-fcfa-b59a-a3e9-39556bf57959.png)
「手動問い合わせ」を右クリックし「定義の編集」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/4afa22ce-cde4-1fb5-403d-481c9d7dbf21.png)
文に
```sql
select sysdate as today from dual
```
と入力し、「データ・アクセス」を「自動キャッシュ」にして「OK」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/b4565af7-daaf-6473-58ba-edb9de0f493e.png)
保存アイコンをクリックして、任意の名前を付けて保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/574bff23-4c65-decb-c31c-1766dfba55e2.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/ff3daff6-1012-5b0b-57e6-8d10107d9b12.png)

# ワークブックの作成
ワークブックの作成ボタンがアクティブになるので、クリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/c8abb0d6-a300-9cc1-0045-33e8fa0066c0.png)
SYSDATEで取得した現在時刻はUTCなので、計算式で9時間加算してJSTにします。
「マイ計算」を右クリックしてメニューを表示し「計算の追加」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/ee583946-4cf0-cfe0-f5af-5b5512e257a3.png)
式を入力して「保存」をクリックします。
```
TIMESTAMPADD(SQL_TSI_HOUR, 9, TODAY)
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/97a54190-5ec2-3150-38e1-11d4eda343a1.png)
ドラッグ＆ドロップして、表ビジュアライゼーションを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/6212fa66-5810-285d-da0f-8f18d8995147.png)
このワークブックを保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/6242ac65-ec1f-ff0e-2537-aeb2b4734772.png)

# リフレッシュ
ワークブックをビューモードで開きました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/2ecf686b-ba7b-2715-8ab6-119a97051de8.png)
表に表示される日時は保存したときと同じです。
データをリフレッシュしてみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/c3d156a2-fd0f-ee07-7c2a-0b559be6ef08.png)
キャッシュからリフレッシュされましたが、キャッシュ自体は更新されていないので結果的に同じ日時が表示されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/723ed43c-e0c3-c3a1-476f-ca14aca0d531.png)

# データセットのリロード
2日放置して、もう一度ワークブックを開いてみました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/fd70802e-1173-89a0-1e67-4a59316d4a5a.png)
ワークブックレベルで「データのリフレッシュ」をしても、前回検索した結果が表示されます。
三本線のナビゲーションアイコンをクリックして、「データ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/560a7266-903f-e45c-c355-9a6daa2be429.png)
データセットのリフレッシュが2日前であることがわかります。
このデータセットを右クリックし、「データのリロード」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/314df3bb-ecf1-b628-01ee-0bd31d5656ea.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/371d8199-b680-449a-9c29-224e4a22b04b.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/11e74ff9-9f61-35f8-0f15-14e6181d4539.png)
閉じます。
しばらくすると、「リフレッシュ」が「直前」になりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/dfb82053-5b1a-221f-b694-4b4f60047b89.png)
もう一度、データセットを右クリックして「検査」をクリックします。
「履歴」タブに移動すると、データのリフレッシュが成功していたことがわかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/c4cdf997-d438-4bd5-cc4f-e6017229f62e.png)
もう一度、ワークブックを開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/3c822afa-a4e7-f951-b4c4-d5958c417dc8.png)
値が更新されていない場合は、「データのリフレッシュ」でキャッシュからデータを再取得します。

# リロードのスケジュール
先程は、手動でデータをリロードしましたが、スケジュール実行してみようと思います。
「データ」に移動し、データセットを右クリックします。
「新規スケジュール」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/52ae49b1-9255-dac4-e19f-fe65822f1391.png)
スケジュールの設定例です。
|プロパティ|値|
|:-|-:|
|名前|＜任意の名称＞|
|開始|23/05/26|
|時間|10:30|
|繰返し|時間単位|
|終了|23/05/31|
|次ごと|1|

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/8cc0da5d-df4f-544b-fe9e-5d2d9b3a8757.png)
「OK」をクリックします。
しばらく待ってみて、データセットの「検査」を開きます。
「履歴」タブで実行状況を確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/a9582dff-2126-2984-2b3b-ed8c5098b132.png)
定期的にリロードされていることがわかります。

# おわりに
スケジュールの最大単位は年、最小単位は時間です。

では、30分毎に実行したいときは？
そんな時は、1時間毎に毎時0分に実行するスケジュールと、毎時30分に実行するスケジュールの2つを作成します。

データベースの負荷状況も考慮しながら設定してみてください。