ライトバックのデプロイ
ライトバックを使用すると、ユーザーは分析からデータを更新できます。
トピック:
管理者のライトバックについて
ライトバックを使用すると、ユーザーはダッシュボードおよび分析からデータを直接更新できます。
「データベースへのライトバック」権限を持つユーザーには、ライトバック・フィールドが分析で編集可能フィールドとして表示されます。 入力した値がデータベースに保存されます。 「データベースへのライトバック」権限がないユーザーには、ライトバック・フィールドは読取り専用フィールドとして表示されます。
ユーザーが編集可能なフィールドに値を入力し、ライトバック・ボタンをクリックすると、アプリケーションは「ライトバック・テンプレート」に定義されているinsert
またはupdate
SQLコマンドを実行します。 コマンドが成功すると、分析が新しい値で更新されます。 テンプレートの読取り中または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 AnalyticsからのSQL問合せの実行を許可するすべてのデータ・ソースにライトバックできます。
ライトバックの構成時には、次の制限に留意してください。
-
数値列に入力できるのは数字のみです。 ドル記号($)、ポンド記号すなわちハッシュ記号(#)、パーセント記号(%)など、文字形式のデータを含むことはできません。
-
テキスト列は文字列データのみを含む必要があります。
-
ライトバックを使用してデータが変更された分析を含むダッシュボードを、ログオンしたユーザーがすでに表示している場合、ダッシュボードではデータが自動的にリフレッシュされません。 更新されたデータを参照するには、ユーザーがダッシュボードを手動でリフレッシュする必要があります。
-
テンプレート・メカニズムは、表のビューで単一値に対してのみ使用できます。 ピボット表のビューや他のあらゆるタイプのビュー、複数値データおよび単一値データのドロップダウン列には、テンプレート・メカニズムはサポートされていません。
-
ライトバック列の値はすべて編集可能です。 印刷用ではないコンテキストで表示されるとき、編集可能な列は、ユーザーが「データベースへのライトバック」権限を持っているかのように表示されます。 しかし、論理列が変更可能な物理列にマップされている場合、論理列は複数のレベルの共通部分に対する値を返します。 このシナリオでは問題が発生する可能性があります。
-
作成したライトバック表から導出されたものではないフィールドも含めて、分析内のあらゆるフィールドにライトバックのフラグを設定できます。 ただし、表がライトバック有効に設定されていないと、ライトバック操作を正常に実行できません。 フィールドへの正しいタグ付けは、コンテンツ・デザイナが責任を持って行います。
-
テンプレートには、
insert
およびupdate
以外のSQL文を含めることができます。 ライトバック機能はこれらの文をデータベースに渡します。 ただし、Oracleでは、insert
またはupdate
以外の文の使用をサポートまたは推奨していません。 -
Oracle Analyticsは、データ入力の最小限の検証のみを実行します。 フィールドが数値の場合にユーザーがテキスト・データを入力すると、Oracle Analyticsはそれを検出して、無効なデータがデータベースの送られないようにします。 しかし、他の形式の無効なデータ入力(範囲外の値、テキストと数値の混合など)は検出されません。 ユーザーがライトバック・ボタンをクリックして挿入または更新を実行した場合、データが無効なときは、データベースからエラー・メッセージが出力されます。 その後、ユーザーは、誤った入力を修正できます。 コンテンツ・デザイナは、"数値データ・フィールドには英数字が混ざった値を入力できません"といった、ユーザーを支援するテキストをライトバック分析に含めることができます。
-
テンプレート・メカニズムは、任意の新しいレコードの入力には適しません。 このメカニズムをデータ入力ツールとして使用しないでください。
-
ライトバック用にテーブルを作成する場合、少なくとも1つの列にライトバック機能が組み込まれず、各行に固有かつNULL以外の値が含まれるようにします。
-
ライトバック分析ではドリルダウンがサポートされていません。 ドリルダウンを実行すると表の構造が変わるため、ライトバック・テンプレートが機能しなくなります。
注意:
テンプレート・メカニズムでは、ユーザーの入力が取得され、データベースに直接書き込まれます。 物理データベースのセキュリティについては、管理者が責任を持って対処してください。 最大限のセキュリティを確保するには、ライトバック・データベース表を固有のデータベース・インスタンスに格納します。
ライトバック・テンプレート・ファイルの作成
ライトバック・テンプレート・ファイルは、1つ以上のライトバック・テンプレートを含むXML形式のファイルです。
ライトバック・テンプレートは、テンプレートの名前、接続プール、および作成したライトバック表と列のレコードの挿入および更新に必要なSQL文を指定するWebMessage
要素で構成されます。 コンテンツ・デザイナがライトバックに対して表ビューを有効にした場合、コンテンツ・デザイナは、表ビューでのレコードの挿入および更新に使用するライトバック・テンプレートの名前を指定する必要があります。
ライトバック・テンプレートの要件
ライトバック・テンプレートでは、次の要件を満たす必要があります。
-
WebMessage
: ライトバック・テンプレートの名前は、WebMessage要素のname
属性を使用して指定する必要があります。ライトバックを正しく機能させるには、ライトバックに対して表ビューを有効にする際に、ビューでのレコードの挿入および更新に使用するライトバック・テンプレートの名前をコンテンツ・デザイナが指定する必要があります。
この例は、
SetQuotaUseID
というライトバック・テンプレートを示しています。<WebMessage name="SetQuotaUseID">
-
connectionPool
: セキュリティ要件を満たすには、レコードの挿入および更新を行うSQLコマンドとともに接続プールを指定する必要があります。 これらのSQLコマンドでは、ライトバック・スキーマで渡され、データベース表を変更するためのSQL文を生成する値が参照されます。 -
VALUES
: 列値は、列IDまたは列位置のいずれかで参照できます。 列IDの使用が優先されます。文字列と日付の値は一重引用符で囲みます。 数値には一重引用符は必要ありません。
-
列ID - 各列IDはランダムに生成された英数字です。 列IDは、分析エディタの「詳細」タブにある分析のXML定義で確認できます。 たとえば、次のような列IDの値です:
@{c5f6e60e1d6eb1098}
,@{c3a93e65731210ed1}
,'@{c6b8735ea60ff3011}'
列IDを使用すると、列の順序が変化する場合にもライトバックが作動します。
-
列位置 - 列位置は1から始まる数です。 たとえば、列位置の値(as:
@1
,@3
,'@5'
など)列の順序が変化するとライトバックは作動しなくなります。これが列IDをお薦めする理由です。
-
-
<insert>
要素と<update>
要素の両方をテンプレートに含める必要があります。 これらの要素内にSQLコマンドを挿入しない場合は、開始タグと終了タグの間に空白を挿入する必要があります。 たとえば、次のように要素を入力する必要があります。:<insert>â</insert>
次のようにしないでください:
<insert></insert>
空白を省略すると、「システムがライトバック・テンプレート'my_template'を読み取ることができません。」のようなライトバック・エラー・メッセージが表示されます。
-
パラメータのデータ型が整数または実数でない場合は、一重引用符で値を囲みます。 データベースでCommitsが自動的に実行されない場合は、
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>