ライトバックのデプロイ

ライトバックにより、ユーザーは分析からデータを更新できます。

トピック:

管理者のライトバックについて

ライトバックにより、ユーザーはダッシュボードおよび分析からデータを直接更新できます。

「データベースへのライトバック」権限を持つユーザーには、ライトバック・フィールドが分析で編集可能フィールドとして表示されます。入力した値はデータベースに保存されます。「データベースへのライトバック」権限がないユーザーには、ライトバック・フィールドは読取り専用フィールドとして表示されます。

ユーザーが編集可能なフィールドに値を入力してライトバック・ボタンをクリックすると、アプリケーションはライトバック・テンプレートに定義されているSQLのinsertまたはupdateコマンドを実行します。コマンドが成功した場合、分析は新しい値で更新されます。テンプレートの読取り中またはSQLコマンドの実行中にエラーが発生した場合、エラー・メッセージが表示されます。

insertコマンドは、レコードがまだ存在せず、ユーザーが新しいデータを表に入力したときに実行されます。この場合、ユーザーが入力した表レコードの元の値はnullでした。update コマンドは、ユーザーが既存のデータを変更したときに実行されます。まだ物理表に存在しないレコードを表示するには、同様の表をもう1つ作成します。この同様の表を使用して、ユーザーが変更できるプレースホルダ・レコードを表示します。

注:

ライトバック・テンプレートを作成する際、insertコマンドとupdateコマンドの両方が使用されない場合でも両方を含める必要があります。たとえば、このXMLコードのようにinsertのみを実行している場合、空のupdate<update></update>を含める必要があります:

次のサンプルのライトバックXMLファイルには2つの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>

分析およびダッシュボードでのライトバックの有効化

管理者は、ユーザーによる分析およびダッシュボードでデータの編集を有効にできます。

  1. セマンティック・モデルを設定します

    注:

    モデル管理ツールを使用してセマンティック・モデルを開発する場合は、これらのステップを実行してください。セマンティック・モデラーを使用する場合は、次を参照してください

    列でのライトバックの有効化 .

    1. モデル管理ツールで、セマンティック・モデル(.rpdファイル)を開きます。
    2. 物理レイヤーで、ライトバックを有効にする列を含む物理表をダブルクリックします。
    3. 「物理表」ダイアログの「一般」タブで、「キャッシュ可能」が選択されていないことを確認します。このオプションを選択解除すると、プレゼンテーション・サービスのユーザーは更新をすぐに確認できます。
    4. 「ビジネス・モデルとマッピング」レイヤーで、対応する論理列をダブルクリックします。
    5. 「論理列」ダイアログで、「書込み可能」を選択し、「OK」をクリックします。
    6. 「プレゼンテーション」レイヤーで、ライトバックを有効にした論理列に対応する列をダブルクリックします。
    7. 「プレゼンテーション列」ダイアログで、「権限」をクリックします。
    8. 適切なユーザーおよびアプリケーション・ロールに「読取り/書込み」権限を選択します。
    9. 変更内容を保存します。
  2. 1つ以上のライトバック・テンプレートを使用してXMLドキュメントを作成します。ライトバック・テンプレート・ファイルの作成を参照してください。

    XMLドキュメントには、複数のテンプレートを含めることができます。この例で示すXMLドキュメントには2つのテンプレート(SetQuotaUseIDおよびSetForecastUseID)が含まれています。

    <?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 regiontypequota SET Dollars=@{c0432jkl53eb92cd8} WHERE YR=@{c5f6e60e1d6eb1098} AND Quarter=@{c5d7e483445037d9e} AND Region='@{c3a93e65731210ed1}' AND ItemType='@{c6b8735ea60ff3011}'</update>
             </writeBack>
          </XML>
       </WebMessage>
    <WebMessage name="SetForecastUseID">
          <XML>
             <writeBack connectionPool="Supplier">
                <insert>INSERT INTO regiontypeforecast VALUES(@{c83ebf607f3cb8320},@{cb7e2046a0fba2204},'@{c5a93e65d31f10e01}','@{c5a93e65d31f10e0}',@{c7322jkl93ev92cd8})</insert>
                <update>UPDATE regiontypeforecast SET Dollars=@{c7322jkl93ev92cd8} WHERE YR=@{c83ebf607f3cb8320} AND Quarter=@{cb7e2046a0fba2204} AND Region='@{c5a93e65d31f10e01}' AND ItemType='@{c5a93e65d31f10e0}'</update>
             </writeBack>
          </XML>
       </WebMessage>
    </WebMessageTable>
    </WebMessageTables>
    ノート: 両方が使用されない場合でも<insert>要素と<update>要素を含める必要があります。たとえば、insertのみを実行している場合、空のupdate<update></update>を含める必要があります。
  3. ライトバック・テンプレートを含むXMLドキュメントをクリップボードにコピーします。
  4. ライトバック・テンプレートをOracle Analyticsに適用します。
    1. 「コンソール」をクリックしてから、「システム設定」をクリックします。
    2. 「ライトバック・テンプレートXML」に、ステップ3でコピーしたライトバック・テンプレートを貼り付けます。
  5. ライトバック・コードを使用する権限を付与します。
    1. クラシック・ホームに移動し、「管理」をクリックします。
    2. 「セキュリティ」で、「権限の管理」をクリックし、「ライトバック」に移動します。
    3. 「認証されたユーザー」「データベースへのライトバック」を付与します。
    4. 「BIサービス管理者」「ライトバックの管理」を付与します。
  6. 列でのライトバックを有効にするには:
    1. 分析エディタで、ライトバックを有効にする列の「列のプロパティ」を表示します。
    2. 「列のプロパティ」ダイアログで、「ライトバック」タブをクリックします。
      セマンティック・モデルで、列に対してライトバックが有効になっている場合、「ライトバックの有効化」ボックスが使用可能です。
    3. 「ライトバックの有効化」オプションを選択します。
    4. デフォルトを変更する場合は、他のオプションの値を指定します。
    5. 変更内容を保存します。
    列を含む分析で、この列に対してライトバックが有効になります。
  7. 表ビューでのライトバックを有効にするには:
    1. 分析エディタで、編集する表ビューを開きます。
    2. 「プロパティの表示」をクリックします。
    3. 「表のプロパティ」ダイアログで、「ライトバック」タブをクリックします。
    4. 「ライトバックの有効化」オプションを選択します。
    5. 「テンプレート名」ボックスを選択し、ステップ2で指定したライトバック・テンプレートに"WebMessage name="の値を指定します。
      たとえば、ステップ2のサンプル・テンプレートの「テンプレート名」は'SetQuotaUseID'です。
    6. 変更内容を保存します。

ライトバックの制限

ユーザーは、Oracle AnalyticsからのSQL問合せの実行を許可するすべてのデータ・ソースにライトバックできます。

ライトバックを構成する際に、次の制限を考慮してください:

  • 数値列は数値のみを含む必要があります。ドル記号($)、ポンド記号すなわちハッシュ記号(#)、パーセント記号(%)など、文字形式のデータを含むことはできません。

  • テキスト列は文字列データのみを含む必要があります。

  • ログオンしたユーザーがすでに表示しているダッシュボードに、ライトバックを使用して変更されたデータの分析が含まれる場合、ダッシュボードのデータは自動的にはリフレッシュされません。更新されたデータを表示するには、ユーザーが手動でダッシュボードをリフレッシュする必要があります。

  • テンプレート・メカニズムを使用できるのは、表ビューを使用する場合のみ、単一値データに対してのみです。テンプレート・メカニズムは、ピボット表ビューや他のタイプのビュー、複数値データ、または単一値データを含むドロップダウン列ではサポートされていません。

  • ライトバック列のすべての値は編集可能です。印刷用ではないコンテキストで表示されるとき、編集可能な列は、ユーザーが「データベースへのライトバック」権限を持っているかのように表示されます。ただし、論理列がマップされている物理列が変化する可能性があるとき、論理列は複数レベルの交差を返します。このシナリオでは問題が発生する可能性があります。

  • 分析のすべてのフィールドは、ユーザーが作成したライトバック表から導出されていない場合でも、ライトバック・フィールドとしてフラグを設定できます。ただし、表がライトバック対応でない場合、ライトバック操作を正常に実行することはできません。フィールドのタグ設定を正しく行う責任はコンテンツ設計者にあります。

  • テンプレートにはinsertupdate以外の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を使用すると、列の順序が変化する場合にもライトバックが作動します。

      分析エディタの「詳細」タブのXML

    • 列位置 - 列位置は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>