0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Oracle Analytics Cloud: データセットを設定する。データセットの設定で"キャッシュ"と"ライブ"が混在しているときの動きについてみてみる

Last updated at Posted at 2023-01-27

はじめに

Oracle Analytics Cloud : データセットで、データベースの表のデータアクセスの設定では、"自動キャッシュ"と"ライブ"が設定できます。複数のデータベースの表からなるデータセットを作成したとき、
ある表は"自動キャッシュ"で、別の表が"ライブ"と設定している場合、どのような動きになるかみてみたいと思います。

前提

・データセットを作成したことがある
・データセットで、データアクセスの設定をしたことがある
・開発者メニューを設定したことがある

開発者メニューは、右上部の"アカウント"をクリックし、
{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png

"拡張"をクリック、"開発者オプションの有効化"をON(右側にツマミを移動)し、保存します。
{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png

複数表からなるデータセットの用意

複数表からなるデータセットを作成します。
PRODUCTS表、SALES表をデータセットに追加します
{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png

PRODUCTS表のデータアクセスの設定を"自動キャッシュ"に変更します。
PRODUCTS表を右クリックします。メニューで"定義の編集"をクリックします。
{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png

データアクセスで、ライブから自動キャッシュに変更します。自動キャッシュをクリックします。
image.png

"OK"をクリックします。
image.png

同様に、SALES表で"ライブ"に設定されていることを確認します。
下部の結合ダイアグラムをクリックします。SALES表を右クリックし、メニューから定義の編集をクリックします。
{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png

データアクセスが"ライブ"になっていることを確認します。OKをクリックします。
image.png

データセットを保存します。右上部の保存アイコンをクリックします。
image.png

データセットの名前を入力します。
DS_SALESLIVE_PRODUCTSCACHEと入力し、OKをクリックします。
image.png

ワークブックを作成する

DS_SALESLIVE_PRODUCTSCACHEのデータセットを使ってワークブックを作成します。
DS_SALESLIVE_PRODUCTSCACHEデータセットを開き、"ワークブックの作成"をクリックします。
image.png

SALES表からTIME_ID、SALES_AMOUNTを選択し、右の空白のキャンバスにドロップします。
列を複数選択するときは、TIME_IDをクリックし、Ctrlキーを押しながらSALES_AMOUNTをクリックします。
image.png

PRODUCTS表からPROD_NAMEをクリックします。PROD_NAMEをドラッグし上部のフィルタペインにドロップします。
image.png

PROD_NAMEで、1つ選択します。128MB SDメモリ・カードをクリックします。
image.png

下図のように問合せエラーになることがあります。詳細をクリックします。
image.png

"状態: HY000。コード: 43121。[nQSError: 43121] 最大行制限を超過しています" とでており、こちらは、OACがデータベースに対して物理SQLで問合せをした後、受け取った結果がOACで設定されている最大行制限を超える場合に出力されるエラーです。
{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png

つまり、以下のようなことが考えられます。データアクセスが"自動キャッシュ"のPRODUCTS表と"ライブ"のSALES表を結合して、結果を取得しますが、混在していると、OACでの結合となるためSALES表からデータをとってきます。その際、最大行制限が超過してしまった。ということになります。
image.png

最大行制限は、2023/1/27現在、以下です。今回は1 OCPUの環境のため125000行の制限を超過したことになります。
https://docs.oracle.com/cd/E83857_01/paas/analytics-cloud/acoci/create-services.html#GUID-7D6DB4EE-8DD5-44C5-9B6E-9FA847463A5F
image.png

実際どのような物理SQLが発行されているかは、開発者モードで確認できます。
開発メニューを開きます。
image.png

リフレッシュをクリックし、再度実行します。"実行ログ"のタブで、下部の方にスクロールダウンします。物理SQLが表示されていますが、PROD_NAME,PROD_IDの検索条件はついていないことがわかります。以下エラーも出力されています。
[nQSError: 43119] Query Failed:
[nQSError: 43121] Max Row Limit Exceeded
{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png

このように複数のデータベースの表からのデータセットをつかっていて、データアクセスの設定で"自動キャッシュ"と"ライブ"が混在しているときに、結合はOAC側で実施されます。その際、最大行数の制限が超過したエラーがでた場合、データセット内のデータアクセスの設定を"ライブ"にすることで対処できます。

両方を"ライブ"にした場合は、PROD_NAMEの絞り込みもDB側で実施されます。
image.png

以上

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?