ライトバックにより、ユーザーは分析からデータを更新できます。
トピック:
ライトバックにより、ユーザーはダッシュボードおよび分析からデータを直接更新できます。
「データベースへのライトバック」権限を持つユーザーには、ライトバック・フィールドが分析で編集可能フィールドとして表示されます。入力した値はデータベースに保存されます。「データベースへのライトバック」権限がないユーザーには、ライトバック・フィールドは読取り専用フィールドとして表示されます。
ユーザーが編集可能なフィールドに値を入力してライトバック・ボタンをクリックすると、アプリケーションはライトバック・テンプレートに定義されているSQLのinsert
またはupdate
コマンドを実行します。コマンドが成功した場合、分析は新しい値で更新されます。テンプレートの読取り中またはSQLコマンドの実行中にエラーが発生した場合、エラー・メッセージが表示されます。
insert
コマンドは、レコードがまだ存在せず、ユーザーが新しいデータを表に入力したときに実行されます。この場合、ユーザーが入力した表レコードの元の値はnullでした。update
コマンドは、ユーザーが既存のデータを変更したときに実行されます。まだ物理表に存在しないレコードを表示するには、同様の表をもう1つ作成します。この同様の表を使用して、ユーザーが変更できるプレースホルダ・レコードを表示します。
注:
ライトバック・テンプレートを作成する際、insert
コマンドとupdate
コマンドの両方が使用されない場合でも両方を含める必要があります。たとえば、このXMLコードのようにinsert
のみを実行している場合、空のupdate
文<update></update>
を含める必要があります:
insert
コマンドと2つの空の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(@{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文を含めることができます。ライトバック機能がこれらの文をデータベースに渡します。ただし、insert
またはupdate
以外の文の使用はサポートされず、推奨もされません。
Oracle Analyticsは、データ入力の最小限の検証のみを実行します。フィールドが数値の場合にユーザーがテキスト・データを入力すると、Oracle Analyticsはそれを検出して、無効なデータがデータベースの送られないようにします。ただし、他の形式の無効なデータ入力(範囲外の値、テキストと数値の混在など)は検出されません。ユーザーがライトバック・ボタンをクリックし、挿入または更新が実行されると、無効なデータのためにデータベースでエラー・メッセージが生成されます。その後、正しくない入力をユーザーが修正できます。コンテンツ設計者が、「英数字が混在する値の数値フィールドへの入力は許可されません」といったテキストをライトバック分析に含めると、ユーザーにとって役立ちます。
テンプレート・メカニズムは、任意の新規レコードの入力には適していません。つまり、データ入力ツールとして使用しないでください。
ライトバック用の表を作成するときは、少なくとも1つの列にライトバック機能がなく、各行に一意の値を含んでおりnullではないことを確認します。
ライトバック分析ではドリルダウンはサポートされません。ドリルダウンによって表構造が変更されるため、ライトバック・テンプレートが機能しません。
注意:
テンプレート・メカニズムは、ユーザーの入力を受け取り、それをデータベースに直接書き込みます。物理データベースのセキュリティはユーザー自身の責任になります。最適なセキュリティのためには、ライトバック・データベース表を一意のデータベース・インスタンスに格納してください。ライトバック・テンプレート・ファイルは、1つ以上のライトバック・テンプレートを含むXML形式のファイルです。
ライトバック・テンプレートは、テンプレートの名前を指定するWebMessage
要素、接続プール、および作成したライトバック表および列でのレコードの挿入と更新に必要なSQL文によって構成されます。コンテンツ設計者が表ビューのライトバックを有効にするときは、表ビューのレコードの挿入と更新に使用するライトバック・テンプレートの名前を指定する必要があります。
ライトバック・テンプレートは次の要件を満たす必要があります:
WebMessage
: WebMessage要素のname
属性を使用してライトバック・テンプレートの名前を指定する必要があります。
ライトバックが正しく機能するためには、表ビューのライトバックを有効にするときに、コンテンツ設計者がビューのレコードの挿入と更新に使用するライトバック・テンプレートの名前を指定する必要があります。
この例ではSetQuotaUseID
という名前のライトバック・テンプレートを示します。
<WebMessage name="SetQuotaUseID">
connectionPool
: セキュリティ要件を満たすには、接続プールと一緒に、レコードを挿入および更新するためのSQLコマンドも指定する必要があります。これらのSQLコマンドは、ライトバック・スキーマに渡される値を参照して、データベース表を変更するSQL文を生成します。
VALUES
: 列の値は列IDまたは列位置で参照できます。列IDの使用をお薦めします。
文字列と日付の値は一重引用符で囲みます。数値には一重引用符は必要ありません。
列ID - 各列IDはランダムに生成された英数字です。列IDは、分析エディタの「詳細」タブにある分析のXML定義で確認できます。たとえば、@{c5f6e60e1d6eb1098}
、@{c3a93e65731210ed1}
、'@{c6b8735ea60ff3011}'
などが列IDの値です
列IDを使用すると、列の順序が変化する場合にもライトバックが作動します。
列位置 - 列位置は1から始まる数です。たとえば、@1
、@3
、'@5'
などが列位置の値です
列の順序が変化するとライトバックは作動しなくなります。これが列IDをお薦めする理由です。
テンプレートには<insert>
要素と<update>
要素の両方を含める必要があります。要素にSQLコマンドを含めない場合は、開始タグと終了タグの間に空白を挿入する必要があります。たとえば、次のように要素を入力してください:
<insert> </insert>
次のようにしないでください:
<insert></insert>
空白を省略すると、「システムがライトバック・テンプレート'my_template'を読み取ることができません。」のようなライトバック・エラー・メッセージが表示されます。
パラメータのデータ型がintegerまたはrealの数値ではない場合は、一重引用符で囲みます。データベースが自動的にコミットを実行しない場合、オプションのpostUpdate
ノードをinsert
ノードとupdate
ノードの後に追加してコミットを強制します。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>