分析およびダッシュボードでのライトバックの構成
ダッシュボード・ページまたは分析のユーザーは表に表示されているデータを変更する機能を使用できる場合があります。
この機能は、通常ライトバックと呼ばれます。管理者は、コンテンツ・デザイナがユーザー用にライトバック機能を構成できるように支援します。
次の各項では、ライトバックの構成方法について説明します。
管理者のライトバックについて
ライトバックにより、ユーザーはダッシュボードおよび分析からデータを直接更新できます。
「データベースへのライトバック」権限を持つユーザーは、ライトバック・フィールドを分析での編集可能フィールドとみなします。入力した値はデータベースに保存されます。ユーザーが「データベースへのライトバック」権限を持っていない場合、ライトバック・フィールドは通常のフィールドとして表示されます。
ユーザーが編集可能なフィールドに値を入力してライトバック・ボタンをクリックすると、アプリケーションはライトバック・テンプレートに定義されているSQLのinsertまたはupdateコマンドを実行します。コマンドが成功した場合、分析は新しい値で更新されます。テンプレートの読取りまたはSQLコマンドの実行でエラーが発生した場合は、エラー・メッセージが表示されます。
insertコマンドは、レコードがまだ存在せず、ユーザーが新しいデータを表に入力したときに実行されます。この場合、ユーザーが入力した表内のレコードの値は、入力前はnullとなっています。updateコマンドは、ユーザーが既存のデータを変更する場合に実行されます。まだ物理表に存在していないレコードを表示するには、同様の表をもう1つ作成します。この同様の表を使用して、ユーザーが変更できるプレースホルダ・レコードを表示します。
ノート: ライトバック・テンプレートを作成する際、挿入コマンドと更新コマンドを、それらの両方が使用されていなくても含める必要があります。たとえば、挿入のみを実行している場合、空の更新文<update></update>
を次の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(@{c0},@{c1},'@{c2}','@{c3}',@{c4})</insert>
<update></update>
</writeBack>
</XML>
</WebMessage>
<WebMessage name="SetForecastUseID">
<XML>
<writeBack connectionPool="Supplier">
<insert>INSERT INTO regiontypeforecast VALUES(@{c0},@{c1},'@{c2}','@{c3}',@{c4})</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要素のname属性を使用して指定する必要があります。
ライトバックを正しく機能させるには、ライトバックに対して表ビューを有効にする際に、ビューでのレコードの挿入および更新に使用するライトバック・テンプレートの名前をコンテンツ・デザイナが指定する必要があります。
次の例では、SetQuotaUseIDというライトバック・テンプレートを指定しています。
<WebMessage name="SetQuotaUseID">
-
セキュリティ要件を満たすために、レコードの挿入と更新を実行するSQLコマンドとともに接続プールを指定する必要があります。これらのSQLコマンドでは、ライトバック・スキーマで渡され、データベース表を変更するためのSQL文を生成する値が参照されます。値は列位置(@1や@3など)または列ID(@{c1234abc}や@{c687dfg}など)によって参照できます。列位置の開始番号は1です。列IDの使用が優先されます。各列IDはランダムに生成された英数字であり、分析エディタの「詳細設定」タブにある分析のXML定義に表示されます。
-
<insert>要素と<update>要素の両方をテンプレートに含める必要があります。これらの要素内にSQLコマンドを挿入しない場合は、開始タグと終了タグの間に空白を挿入する必要があります。たとえば、次のように要素を入力する必要があります。
<insert> </insert>
次は不適切な例です
<insert></insert>
空白を省略すると、「システムがライトバック・テンプレート'my_template'を読み取ることができません。」のようなライトバック・エラー・メッセージが表示されます。
-
パラメータのデータ型が整数または実数でない場合は、一重引用符で値を囲みます。データベースがコミットを自動的に実行しない場合は、insertノードとupdateノードの後にオプションのpostUpdateノードを追加してコミットを強制的に実行します。一般的なpostUpdateノードの例を次に示します。
<postUpdate>COMMIT</postUpdate>
例20-1 例: ライトバック・テンプレート・ファイル
列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(@{c0},@{c1},'@{c2}','@{c3}',@{c4})</insert>
<update>UPDATE regiontypequota SET Dollars=@{c4} WHERE YR=@{c0} AND Quarter=@{c1} AND Region='@{c2}' AND ItemType='@{c3}'</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>