分析およびダッシュボードでのライトバックの構成
ダッシュボード・ページまたは分析のユーザーは表に表示されているデータを変更する機能を使用できる場合があります。
この機能は、通常ライトバックと呼ばれます。管理者は、コンテンツ・デザイナがユーザー用にライトバック機能を構成できるように支援します。
次の各項では、ライトバックの構成方法について説明します。
管理者のライトバックについて
ライトバックにより、ユーザーはダッシュボードおよび分析からデータを直接更新できます。
「データベースへのライトバック」権限を持つユーザーには、ライトバック・フィールドが分析で編集可能フィールドとして表示されます。入力した値はデータベースに保存されます。「データベースへのライトバック」権限がないユーザーには、ライトバック・フィールドは読取り専用フィールドとして表示されます。
ユーザーが編集可能なフィールドに値を入力してライトバック・ボタンをクリックすると、アプリケーションはライトバック・テンプレートに定義されているSQLのinsert
またはupdate
コマンドを実行します。コマンドが成功した場合、分析は新しい値で更新されます。テンプレートの読取り中またはSQLコマンドの実行中にエラーが発生した場合、エラー・メッセージが表示されます。
insert
コマンドは、レコードがまだ存在せず、ユーザーが新しいデータを表に入力したときに実行されます。この場合、ユーザーが入力した表レコードの元の値はnullでした。update
コマンドは、ユーザーが既存のデータを変更する場合に実行されます。まだ物理表に存在していないレコードを表示するには、同様の表をもう1つ作成します。この同様の表を使用して、ユーザーが変更できるプレースホルダ・レコードを表示します。
ノート:
ライトバック・テンプレートを作成する際、insert
コマンドとupdate
コマンドの両方が使用されない場合でも両方を含める必要があります。たとえば、insert
のみを実行している場合、次のXMLコードに示すように、空のupdate
文<update></update>
を含める必要があります:
insert
コマンドと2つの空のupdate
文を含むライトバックXMLファイルの例を示します。ライトバックXMLファイルの作成と構成の詳細は、「ライトバック・テンプレート・ファイルの作成」を参照してください。<?xml version="1.0" encoding="utf-8" ?>
<WebMessageTables xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="oracle.bi.presentation/writebackschemas/v1">
<WebMessageTable lang="en-us" system="WriteBack" table="Messages">
<WebMessage name="SetQuotaUseID">
<XML>
<writeBack connectionPool="Supplier">
<insert>INSERT INTO regiontypequota VALUES(@{c5f6e60e1d6eb1098},@{c5d7e483445037d9e},'@{c3a93e65731210ed1}','@{c6b8735ea60ff3011}',@{c0432jkl53eb92cd8})</insert>
<update></update>
</writeBack>
</XML>
</WebMessage>
<WebMessage name="SetForecastUseID">
<XML>
<writeBack connectionPool="Supplier">
<insert>INSERT INTO regiontypeforecast VALUES(@{c83ebf607f3cb8320},@{cb7e2046a0fba2204},'@{c5a93e65d31f10e0}','@{c5a93e65d31f10e0}',@{c7322jkl93ev92cd8})</insert>
<update></update>
</writeBack>
</XML>
</WebMessage>
</WebMessageTable>
</WebMessageTables>
ライトバックの制限
ユーザーは、Oracle BIサーバーからSQL問合せを実行できるあらゆるデータ・ソース(ADFデータ・ソースを除く)に対してライトバックを実行できます。
ライトバックの構成時には、次の制限に留意してください。
-
数値列に入力できるのは数字のみです。ドル記号($)、ポンド記号すなわちハッシュ記号(#)、パーセント記号(%)など、文字形式のデータを含むことはできません。
-
テキスト列は文字列データのみを含む必要があります。
-
ライトバックを使用してデータが変更された分析を含むダッシュボードを、ログオンしたユーザーがすでに表示している場合、ダッシュボードではデータが自動的にリフレッシュされません。更新されたデータを参照するには、ユーザーがダッシュボードを手動でリフレッシュする必要があります。
-
テンプレート・メカニズムは、表のビューで単一値に対してのみ使用できます。ピボット表のビューや他のあらゆるタイプのビュー、複数値データおよび単一値データのドロップダウン列には、テンプレート・メカニズムはサポートされていません。
-
ライトバック列の値はすべて編集可能です。印刷用ではないコンテキストで表示されるとき、編集可能な列は、ユーザーが「データベースへのライトバック」権限を持っているかのように表示されます。しかし、論理列が変更可能な物理列にマップされている場合、論理列は複数のレベルの共通部分に対する値を返します。このシナリオでは問題が発生する可能性があります。
-
作成したライトバック表から導出されたものではないフィールドも含めて、分析内のあらゆるフィールドにライトバックのフラグを設定できます。ただし、表がライトバック有効に設定されていないと、ライトバック操作を正常に実行できません。フィールドへの正しいタグ付けは、コンテンツ・デザイナが責任を持って行います。
-
テンプレートでは、
insert
およびupdate
以外のSQL文も使用できます。ライトバック機能はこれらの文をデータベースに渡します。ただし、insert
またはupdate
以外の文の使用はサポートされていません。使用しないことをお薦めします。 -
プレゼンテーション・サービスが実行するのは、データ入力の最小限の検証のみです。数値フィールドにユーザーがテキスト・データを入力した場合、プレゼンテーション・サービスはこれを検出し、無効なデータがデータベースに送られるのを防止します。しかし、他の形式の無効なデータ入力(範囲外の値、テキストと数値の混合など)は検出されません。ユーザーがライトバック・ボタンをクリックして挿入または更新を実行した場合、データが無効なときは、データベースからエラー・メッセージが出力されます。その後、ユーザーは、誤った入力を修正できます。コンテンツ・デザイナは、"数値データ・フィールドには英数字が混ざった値を入力できません"といった、ユーザーを支援するテキストをライトバック分析に含めることができます。
-
テンプレート・メカニズムは、任意の新しいレコードの入力には適しません。このメカニズムをデータ入力ツールとして使用しないでください。
-
ライトバック用にテーブルを作成する場合、少なくとも1つの列にライトバック機能が組み込まれず、各行に固有かつNULL以外の値が含まれるようにします。
-
ライトバック分析ではドリルダウンがサポートされていません。ドリルダウンを実行すると表の構造が変わるため、ライトバック・テンプレートが機能しなくなります。
注意:
テンプレート・メカニズムでは、ユーザーの入力が取得され、データベースに直接書き込まれます。物理データベースのセキュリティについては、管理者が責任を持って対処してください。最大限のセキュリティを確保するには、ライトバック・データベース表を固有のデータベース・インスタンスに格納します。
ライトバック・テンプレート・ファイルの作成
ライトバック・テンプレート・ファイルは、1つ以上のライトバック・テンプレートを含むXML形式のファイルです。
ライトバック・テンプレートは、テンプレートの名前を指定するWebMessage
要素、接続プール、および作成したライトバック表と列でのレコードの挿入と更新に必要なSQL文によって構成されます。コンテンツ・デザイナがライトバックに対して表ビューを有効にした場合、コンテンツ・デザイナは、表ビューでのレコードの挿入および更新に使用するライトバック・テンプレートの名前を指定する必要があります。
複数のライトバック・テンプレート・ファイルを作成できます。複数のライトバック・テンプレートを1つのテンプレート・ファイルに含め、それぞれのテンプレートを特定の分析で使用するフィールド用にカスタマイズできます。ただし、1つのファイルには1つのテンプレートのみを含めることをベスト・プラクティスとしてお薦めします。
コンソールで設定することもできます。コンソールでの詳細システム設定の構成の分析、ダッシュボードおよびピクセルパーフェクト・レポートのオプションを参照してください。
ライトバック・テンプレートの要件
ライトバック・テンプレートでは、次の要件を満たす必要があります。
-
WebMessage
: WebMessage要素のname
属性を使用してライトバック・テンプレートの名前を指定する必要があります。ライトバックを正しく機能させるには、ライトバックに対して表ビューを有効にする際に、ビューでのレコードの挿入および更新に使用するライトバック・テンプレートの名前をコンテンツ・デザイナが指定する必要があります。
この例では、
SetQuotaUseID
というライトバック・テンプレートを示します。<WebMessage name="SetQuotaUseID">
-
connectionPool
: セキュリティ要件を満たすには、接続プールと一緒に、レコードを挿入および更新するためのSQLコマンドも指定する必要があります。これらのSQLコマンドでは、ライトバック・スキーマで渡され、データベース表を変更するためのSQL文を生成する値が参照されます。 -
VALUES
: 列値は、列IDまたは列位置によって参照できます。列IDの使用が優先されます。文字列と日付の値は一重引用符で囲みます。数値には一重引用符は必要ありません。
-
列ID - 各列IDはランダムに生成された英数字です。列IDは、分析エディタの「詳細」タブにある分析のXML定義で確認できます。たとえば、列IDの値は
@{c5f6e60e1d6eb1098}
、@{c3a93e65731210ed1}
、'@{c6b8735ea60ff3011}'
などです列IDを使用すると、列の順序が変化する場合にもライトバックが作動します。
-
列位置 - 列位置は1から始まる数です。たとえば、列位置の値は
@1
、@3
、'@5'
などです列の順序が変化するとライトバックは作動しなくなります。これが列IDをお薦めする理由です。
-
-
<insert>
要素と<update>
要素の両方をテンプレートに含める必要があります。これらの要素内にSQLコマンドを挿入しない場合は、開始タグと終了タグの間に空白を挿入する必要があります。たとえば、次のように要素を入力する必要があります。:<insert> </insert>
次のようにしないでください:
<insert></insert>
空白を省略すると、「システムがライトバック・テンプレート'my_template'を読み取ることができません。」のようなライトバック・エラー・メッセージが表示されます。
-
パラメータのデータ型が整数または実数でない場合は、一重引用符で値を囲みます。データベースがコミットを自動的に実行しない場合は、
insert
ノードとupdate
ノードの後にオプションのpostUpdate
ノードを追加してコミットを強制的に実行します。postUpdate
ノードは通常は次の例のようになります:<postUpdate>COMMIT</postUpdate>
列ID構文を使用したライトバック・テンプレートの例
列IDで値を参照するライトバック・テンプレート・ファイルはこの例のようになります:
<?xml version="1.0" encoding="utf-8" ?>
<WebMessageTables xmlns:sawm="com.siebel.analytics.web/message/v1">
<WebMessageTable lang="en-us" system="WriteBack" table="Messages">
<WebMessage name="SetQuotaUseID">
<XML>
<writeBack connectionPool="Supplier">
<insert>INSERT INTO regiontypequota VALUES(@{c5f6e60e1d6eb1098},@{c5d7e483445037d9e},'@{c3a93e65731210ed1}','@{c6b8735ea60ff3011}',@{c0432jkl53eb92cd8})</insert>
<update>UPDATE regiontypequota SET Dollars=@{c0432jkl53eb92cd8} WHERE YR=@{c5f6e60e1d6eb1098} AND Quarter=@{c5d7e483445037d9e} AND Region='@{c3a93e65731210ed1}' AND ItemType='@{c6b8735ea60ff3011}'</update>
</writeBack>
</XML>
</WebMessage>
</WebMessageTable>
</WebMessageTables>
列位置構文を使用したライトバック・テンプレートの例
列位置で値を参照するライトバック・テンプレート・ファイルはこの例のようになります:
<?xml version="1.0" encoding="utf-8" ?>
<WebMessageTables xmlns:sawm="com.siebel.analytics.web/message/v1">
<WebMessageTable lang="en-us" system="WriteBack" table="Messages">
<WebMessage name="SetQuota">
<XML>
<writeBack connectionPool="Supplier">
<insert>INSERT INTO regiontypequota VALUES(@1,@2,'@3','@4',@5)</insert>
<update>UPDATE regiontypequota SET Dollars=@5 WHERE YR=@1 AND Quarter=@2 AND Region='@3' AND ItemType='@4'</update>
</writeBack>
</XML>
</WebMessage>
</WebMessageTable>
</WebMessageTables>