This page is in Japanese version. The English version is in preparation.
|
フォームのデータインポートで、マスター(ディメンション)に無いコードをはじきたい
質問
フォームのデータインポートで、マスター(ディメンション)に無いコードを使用しているデータは、インポートせずにはじきたい(ただしエラーにはしたくない)。
例)他システムで管理されている為替レートデータをインポートする際、当アプリケーションで通貨ディメンションに登録されている通貨に関するレート値だけを取り込みたい。
回答
基本的な考えとしては、フォームのインポート仕様で、インポートデータの通貨コードをキーに通貨ディメンションを検索し、通貨が無ければ #IGNORE することで、本件に対応できます。
例.
通貨ディメンションのラベルが「CURRENCY」であり、インポート仕様において通貨コードのフィールドのラベルが「CURR」であると仮定します。
以下のような算出フィールドを設けると、インプットデータの「CURR」フィールドの値をラベルとするメンバが通貨ディメンションに無い場合、当該データはスキップされます。
| ラベル | 値 | 名称 | 算出式 |
|---|---|---|---|
SKIP |
□ |
スキップ条件(通貨登録なし) |
IF Dimensions!CURRENCY.Item(CURR).Label ="" |
上記の設定で、ラベルと名称は任意です。
ディメンションオブジェクトのItemメソッドは、与えられた文字列をラベルとするメンバを検索します。そうしたメンバが無い場合、ラベルも名称も空文字列であるようなオブジェクトを返します。
「Item メソッドに関する留意事項」もご覧下さい。
別解
別解として変換テーブルを用いる方法もあります。例えば、「取込対象通貨一覧」といった変換テーブルを設けて、以下のように設定します。
| 変換対象コード | 変換先コード |
|---|---|
JPY |
JPY |
USD |
USD |
EUR |
EUR |
* |
#IGNORE |
この変換テーブルをインポート用のフォームの「通貨コード」に適用します。
-
簡易版フォームならば「通貨」ディメンションの行の「変換テーブル」欄で、上記変換テーブルを指定
-
フル機能版フォームの場合、インポート用のフォームの「インポート仕様」で定義した通貨コード用のフィールドの「変換テーブル」欄で、上記変換テーブルを指定
変換テーブルを用いると、計算式の記述は不要です。一方で、取り込み対象のコード値が増える場合(例えば CNY を取り込み対象とする場合)、ディメンションだけでなく変換テーブルもメンテナンスする必要があります。