LoginSignup
0
0

Oracle Analytics Cloud:サブジェクト領域の列名を翻訳する

Posted at

はじめに

Oracle Analytics Cloud(OAC)は、ログインする言語環境に従ってユーザー・インターフェースの言語が切り替わります。

  • 日本語環境でログインした際のOAC
    image.png
  • 英語環境でログインした際のOAC
    image.png

ユーザー・インターフェースの言語は環境により切り替わりますが、サブジェクト領域やそこに定義されている列名はそうではありません。

そこで、サブジェクト領域とその列名を、日本語環境と英語環境で切り替えて表示するようにします。

1. セマンティック・モデルの定義

ブラウザで作成したセマンティック・モデルを改良し、多言語対応していきます。
セマンティック・モデルの作り方についてはこちらを参考にしてください。

1.1 プレゼンテーション・レイヤーの設定

セマンティック・モデルを開きます。
プレゼンテーション・レイヤーを確認すると、このセマンティック・モデルには「Sales」という名前のサブジェクト領域が定義されているのがわかります。(そういう想定です)
サブジェクト領域をダブルクリックします。
image.png

「ローカリゼーション」タブに移動し、「変数の生成」をクリックします。
image.png

「名前の変数」と「サブジェクト領域とそのすべての子オブジェクト」を選択し、「生成」をクリックします。
image.png

「名前の変数」に自動的に値が入力されました。
これは、「CN_Sales」というセッション変数に格納された値をサブジェクト領域の名称として参照することを意味します。
image.png

セッション変数とは?
セッションごとに生成される変数で、式などから参照することができます。
セッション変数の内容は、セッション開始時に初期化ブロックで定義されます。

サブジェクト領域を右クリックし、表示されたメニューの「文字列の外部化」をクリックします。
image.png

「外部化」をクリックすると、CSVファイルが作成されます。
image.png

作成されたCSVファイルをExcelで開いてみました。
B列には変数名、C列には表示名称が格納されています。
image.png

これを参考に、変数名に対応する表示名称を適切なものに変更します。
さらに、これらを言語別に作成します。

1.2 翻訳用データをロード

編集したCSVファイルを元にして作成したのが、こちらのSQLです。
このデータを使用して、サブジェクト領域内の列を翻訳します。

trans_sa.sql
create table	SALES.LOCALIZATION
(
LANG	varchar2(4),
VAL_NAME	varchar2(60),
VALUE	varchar2(60)
);
insert into SALES.LOCALIZATION values('EN', 'CN_Sales', 'Sales Analytics');
insert into SALES.LOCALIZATION values('JA', 'CN_Sales', '販売分析');
insert into SALES.LOCALIZATION values('EN', 'CN_Sales_PROD', 'Products');
insert into SALES.LOCALIZATION values('EN', 'CN_Sales_PROD_PROD_ID', 'Prod ID');
insert into SALES.LOCALIZATION values('EN', 'CN_Sales_PROD_PROD_NAME', 'Prod Name');
insert into SALES.LOCALIZATION values('EN', 'CN_Sales_PROD_PROD_TYPE', 'Prod Type');
insert into SALES.LOCALIZATION values('EN', 'CN_Sales_PROD_PROD_LOB', 'LOB');
insert into SALES.LOCALIZATION values('EN', 'CN_Sales_PROD_PROD_BRAND', 'Brand');
insert into SALES.LOCALIZATION values('JA', 'CN_Sales_PROD', '製品');
insert into SALES.LOCALIZATION values('JA', 'CN_Sales_PROD_PROD_ID', '製品ID');
insert into SALES.LOCALIZATION values('JA', 'CN_Sales_PROD_PROD_NAME', '製品名');
insert into SALES.LOCALIZATION values('JA', 'CN_Sales_PROD_PROD_TYPE', '製品タイプ');
insert into SALES.LOCALIZATION values('JA', 'CN_Sales_PROD_PROD_LOB', 'LOB');
insert into SALES.LOCALIZATION values('JA', 'CN_Sales_PROD_PROD_BRAND', 'ブランド');
insert into SALES.LOCALIZATION values('EN', 'CN_Sales_SAMPLE_SALES', 'Sales');
insert into SALES.LOCALIZATION values('EN', 'CN_Sales_SAMPLE_SALES_PROD_ID', 'Prod ID');
insert into SALES.LOCALIZATION values('EN', 'CN_Sales_SAMPLE_SALES_ORDER_DAY_DT', 'Order Date');
insert into SALES.LOCALIZATION values('EN', 'CN_Sales_SAMPLE_SALES_REVENUE', 'Revenue');
insert into SALES.LOCALIZATION values('EN', 'CN_Sales_SAMPLE_SALES_UNITS', 'Quantity');
insert into SALES.LOCALIZATION values('JA', 'CN_Sales_SAMPLE_SALES', '販売');
insert into SALES.LOCALIZATION values('JA', 'CN_Sales_SAMPLE_SALES_PROD_ID', '製品ID');
insert into SALES.LOCALIZATION values('JA', 'CN_Sales_SAMPLE_SALES_ORDER_DAY_DT', '販売日');
insert into SALES.LOCALIZATION values('JA', 'CN_Sales_SAMPLE_SALES_REVENUE', '販売金額');
insert into SALES.LOCALIZATION values('JA', 'CN_Sales_SAMPLE_SALES_UNITS', '販売数量');
commit;

1.3 ローカリゼーション変数を設定

セマンティック・モデラーに戻ります。
「変数」に移動し、初期化ブロックを作成します。
image.png

任意の名前を入力し、タイプを「セッション」にして「OK」をクリックします。
image.png

「問合せの返し」を「変数名と値」にして、「問合せ結果のキャッシュ」を選択しておきます。
SELECT文には、次の文を入力します。

select val_name, value from sales.localization where lang = upper('VALUEOF(NQ_SESSION.WEBLANGUAGE)') and value is not null

先程の翻訳データを検索するための接続プールを選択します。
image.png

この初期化ブロックは変数名とその値を同時に検索、変数名として検索したデータで自動的にセッション変数を作成し、値をその変数の値として格納します。
よって、個別に変数を定義しません。

「問合せのテスト」の実施結果です。
image.png

変数の値にはNULLは許されていません。

1.4 デプロイ

セマンティック・モデルを検査します。
image.png

警告が1つ出てしまいましたが、エラーはありません。
警告は初期化ブロックに関するもので

  • Localization for Sales初期化ブロック内で変数が定義されていない

というものでしたので、無視してしまいます。
image.png

デプロイします。
image.png

必要であれば、デプロイを取り消してスナップショットを取得後に再度デプロイしてください。
image.png

しばらく待つとデプロイが完了しました。
image.png

2. 英語環境と日本語環境でテスト

言語を日本語に設定したブラウザでログインし、サブジェクト領域を使用したワークブックを作成します。
image.png

ユーザー・インターフェースや列名が日本語で表示されています。
image.png

次に、言語を英語に設定したブラウザでログインします。
OACのユーザー・インターフェースが英語になっています。
image.png

ワークブックを作ってみましたが、列名も英語になりました。
image.png

3. 他の言語環境でログインしたらどうなる?

試しにスペイン語環境でログインしてみました。

UIはスペイン語になりましたが、サブジェクト領域名や列名は翻訳データを準備していないのでスペイン語になっていません。
image.png
image.png

セマンティック・モデルで定義した名称がそのまま表示されています。
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