Oracle Analytics Cloud：セマンティックモデルで変数を設定してみる　～動的変数編～

はじめに
---
OACでは、セマンティックモデラーを利用してセマンティックモデルを作成します
作成したセマンティックモデルをOACにデプロイすると、ワークブック、分析からセマンティックモデルのサブジェクト領域を利用できるようになります
また、セマンティック・モデルでは、式で利用できるいくつかの種類の変数を設定することができます
本記事では、セマンティック・モデルで、動的変数を設定してみます。
動的変数は、OACにユーザーがサインインした際に、データベースから取得した値を変数にセットします。
データベースから値を取得する際に条件としてサインインしたユーザーを使用して、動的に値を変えるといった用途での利用が考えられます
セマンティック・モデル内での利用の他、分析、ダッシュボードなどから利用することができます。



記載時のOACバージョン：OAC 2024 March版


前提
---
セマンティックモデルが作成済のOACインスタンスがある。
動的変数にセットする際に参照するテーブル、データがある。
<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/eedbffd3-eab1-17cf-3359-bfd04b18551f.jpeg">

初期化ブロックおよび静的変数の作成
---
初期化ブロックおよび動的に値を格納するセッション変数を作成します
セマンティック・モデルを開きます
上部左のメニューアイコンをクリックし、セマンティック・モデルをクリックします
![2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/8a95b198-177e-245f-90f4-48890be71b28.jpeg)

作成済のセマンティック・モデルをクリックして開きます
![3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/850d994b-da8f-6d13-da9c-fc3bf495e27a.jpeg)

左上部の"(x) 変数"タブをクリックします。右上部の"新規"ボタンをクリックし、"初期化ブロック"をクリックします
![4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/dd93064d-e162-f2a7-45f7-49f485b9cea3.jpeg)

動的変数の初期化ブロックを作成します。任意の名前を入力します。タイプをクリックし、"セッション"を選択します
![5.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/ea72e02b-db8a-dadb-6db2-237b518c943d.jpeg)

"OK"をクリックします
![6.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/3f2db5ec-b338-4e7f-34ae-3795b460b279.jpeg)

動的変数にセットする値を取得するSQLを記載します。本記事では、以下を入力しています。
```
select corporate_name,area from shjp.tbl_dynamic_variables where username='VALUEOF(NQ_SESSION.USER)'
```
入力後、SELECT文の下部の"選択"ボタンをクリックし、取得するデータベースを指定します。セマンティック・モデルの物理レイヤーに定義されている接続プールを指定します。
![7.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/82821565-08b6-ed2e-02a8-287ed8edde87.jpeg)

物理レイヤーを展開し、接続プールをクリック、"選択"ボタンをクリックします
![8.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/ac48240e-a2fd-f327-281f-25f6eaefd4c2.jpeg)

"問合せのテスト"をクリックします
![9.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/7eb6f515-aafe-6295-5625-96f894e16faf.jpeg)


接続プールを利用し、SQLを実行、結果が取得されます。
![10.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/1cbc5aa2-c0bc-5d50-e659-c5ddbc521212.jpeg)

結果を格納する変数を作成します
中程、"+ 変数の追加"をクリックします
![11.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/3b04e9bf-ae11-818f-1a71-fb0e9037f7c4.jpeg)

変数の名前を入力します。入力後、"詳細ビュー"アイコンをクリックします
![12.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/45c74e02-faf2-31a0-450f-df584d766939.jpeg)

"fx 式列"をクリックします
![13.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/f1bc6bfc-928d-f560-c51d-6441a90fa43a.jpeg)

デフォルト値を入力します。"検証"をクリックし、"保存"をクリックします。
値を取得する際には取得した値で上書きされます。
![14.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/7ed2b102-5aa6-023e-1a62-f41e9739d91b.jpeg)

SELECT文では、列を２つ指定しています。２つめの変数を追加します。
"+ 変数の追加"をクリックします
![15.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/4672a2a8-0ed8-166f-9700-3d27ca15eea6.jpeg)

変数名を入力します。入力後"fx"アイコンをクリックします
![16.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/193fdb38-997b-1e51-e80c-6ebe38dca2f0.jpeg)

デフォルト値を入力します。"検証"をクリックし、"保存"をクリックします。
値を取得する際には取得した値で上書きされます。
![17.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/9bc11be8-d130-a7f2-608a-8bd462375ac2.jpeg)

"問合せのテスト"をクリックします
![18.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/a0311fab-a8e5-dbfa-8190-ce80e626a156.jpeg)

変数名と値が表示されます。"OK"をクリックします。
![19.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/f3f86b88-da29-91dc-e561-00845b07f14e.jpeg)

"保存"をクリックします
![20.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/dba315a0-9ccf-d180-699c-c71568448c88.jpeg)

"整合性のチェック"をクリックします
![21.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/965652bc-f150-6c21-dfcd-dfc120d086e3.jpeg)

右上部のアクションメニューアイコン"・・・(縦)"をクリックし、"デプロイ"をクリックします
![22.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/ade72b09-803a-d55e-c7f4-dba005cd74d3.jpeg)

"デプロイ"をクリックします
![23.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/fe45d040-83ab-3062-5001-f62a660b71ee.jpeg)



セマンティック・モデル変数の動的変数の利用
---
分析で、テキストやナレーティブで動的変数を利用する
@{biServer.variables['NQ_SESSION.<変数名>']}{<デフォルト値>}で参照します。本記事では@{biServer.variables['NQ_SESSION.dynamic_area']}{}
![24.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/c525330f-e677-5dda-df05-85d32beef6ac.jpeg)

分析で、式列で静的変数を利用する
VALUEOF(NQ_SESSION.<変数名>)で参照します
![25.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/2916130d-5b1c-8a3f-d3db-6ccef711ebec.jpeg)

サインイン時に、サインインしたユーザーを条件に、データベースから動的に値を取得して、セッション変数に動的に値をセットし、表示しています。
![26.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/29d4f367-ea2a-4bb7-dc0c-83c593e95824.jpeg)

まとめ
---
セマンティック・モデルでは、セマンティック・モデル・変数という式で利用できる静的変数、動的変数など、いくつかの種類の変数を設定することができます。
本記事では、セマンティック・モデルで、セッション変数に動的に値を設定する動的変数をためしてみました。
分析で動的変数を参照する他、セマンティック・モデルの論理レイヤーの式列でも動的変数を参照できます。

以上