部署寫回

寫回讓使用者能夠更新分析的資料。

主題:

關於管理員的寫回

寫回讓使用者能夠直接從儀表板和分析更新資料。

具備寫回資料庫權限的使用者在分析中見到的寫回欄位皆為可編輯欄位。這些使用者輸入的值會儲存到資料庫。不具備寫回資料庫權限的使用者,會以唯讀欄位的方式見到寫回欄位。

在使用者於可編輯欄位中輸入值並按一下寫回按鈕後,應用程式便會執行寫回範本中定義的 insertupdate SQL 命令。如果命令成功執行,系統就會以新的值更新分析。如果讀取範本或執行 SQL 命令時發生錯誤,則會顯示錯誤訊息。

使用者輸入的新資料記錄若尚不存在於表格中,應用程式便會執行 insert 命令。在此情況下,使用者所輸入表格記錄的原始值會是空值。當使用者修改現有資料時,update 命令便會執行。若要顯示實體表格中尚不存在的記錄,您可以建立另一個相似的表格。然後,使用此相似表格顯示使用者可以修改的預留位置記錄。

註:

建立寫回範本時,即使未使用 insert 命令和 update 命令,還是必須包含這兩個命令。例如,如果只要執行 insert,您還是必須包含空的 update 敘述句 <update></update>,如下列 XML 程式碼所示:

以下是包含兩個 insert 命令和兩個空 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>

啟用分析和儀表板寫回

管理員可以讓使用者編輯分析和儀表板中的資料。

  1. 設定語意模型。

    註:

    如果您使用「模型管理工具」開發語意模型,請依照下列步驟。若使用「語意模型產生器」,請參閱

    在資料欄啟用寫回 .

    1. 在「模型管理工具」中開啟語意模型 (.rpd 檔案)。
    2. 在「實體」層中,按兩下內含要啟用寫回之資料欄的實體表格。
    3. 實體表格對話方塊的一般頁籤中,確定未選取可快取。取消選取此選項可確保 Presentation Services 使用者能夠立即見到更新。
    4. 業務模型和對應層中,按兩下相對應的邏輯資料欄。
    5. 邏輯資料欄對話方塊中,選取可寫入,然後按一下確定
    6. 展示層中,按兩下與啟用寫回之邏輯資料欄對應的資料欄。
    7. 展示資料欄對話方塊中,按一下許可權
    8. 為適當的使用者和應用程式角色選取讀取/寫入許可權。
    9. 儲存所做的變更。
  2. 使用寫回範本來建立 XML 文件。請參閱建立寫回範本檔案

    您的 XML 文件可以包含多個範本。此範例顯示包含兩個範本 (SetQuotaUseIDSetForecastUseID) 的 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 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 敘述句。寫回函數會將這些敘述句傳送至資料庫。但是 Oracle 不支援也不建議使用 insertupdate 以外的任何敘述句。

  • Oracle Analytics 僅能對資料輸入進行最低限度的驗證。若使用者在數值欄位輸入文字資料,Oracle Analytics 會偵測到該問題,並避免將無效的資料傳送至資料庫。然而它無法偵測其他形式的無效資料輸入 (超出範圍的值、文字和數字混合等)。當使用者按一下寫回按鈕,而插入或更新作業正在執行,資料庫會傳回資料無效的錯誤訊息。使用者稍後便能更正錯誤的輸入。內容設計人員可在寫回分析中包含文字以協助使用者,例如「不允許在數值資料欄位輸入文數字混合值」。

  • 範本機制不適用於輸入任意新記錄。換句話說,不要使用它作為資料輸入工具。

  • 建立寫回的表格時,請確定至少一個資料欄不含寫回功能,但包含每個資料列的唯一值且不是空值。

  • 寫回分析不支援向下展開。由於向下展開會修改表格的結構,因此無法使用寫回範本。

    注意:

    範本機制會將使用者輸入直接寫入資料庫。確保實體資料庫的安全是您的責任。為了獲得最佳的安全性,請將寫回資料庫表格儲存至唯一的資料庫執行處理。

建立寫回範本檔案

寫回範本檔案是包含一或多個寫回範本的 XML 格式檔案。

寫回範本是由指定範本名稱、連線集區的 WebMessage 元素,以及在寫回表格和資料欄中插入與更新記錄所需的 SQL 敘述句組成。當內容設計人員啟用表格檢視的寫回功能時,必須指定要在表格檢視中用於插入與更新記錄的寫回範本名稱。

寫回範本的需求

寫回範本必須符合以下需求:

  • WebMessage:您必須在 WebMessage 元素中使用 name 屬性指定寫回範本的名稱。

    為了使寫回正確運作,啟用表格檢視的寫回功能時,內容設計人員必須指定要在檢視中用於插入與更新記錄的寫回範本名稱。

    此範例顯示名為 SetQuotaUseID 的寫回範本。

    <WebMessage name="SetQuotaUseID">
    
  • connectionPool:為了符合安全需求,您必須指定連線集區以及插入與更新記錄的 SQL 命令。這些 SQL 命令參照寫回綱要中傳送的值來產生用以修改資料庫表格的 SQL 敘述句。

  • VALUES:您可以透過資料欄 ID資料欄位置來參照資料欄值。使用資料欄 ID 會比較好。

    請使用單引號將字串與日期值括起來。數值則不需使用單引號。

    • 資料欄 ID - 每個資料欄 ID 都是隨機產生的文數字。您可以在分析編輯器進階頁籤中可用分析的 XML 定義中找到資料欄 ID。例如,如下所示的資料欄 ID 值:@{c5f6e60e1d6eb1098}@{c3a93e65731210ed1}'@{c6b8735ea60ff3011}'

      當您使用資料欄 ID 時,即使資料欄順序變更,寫回仍可繼續運作。

      分析編輯器「進階」頁籤中的 XML

    • 資料欄位置 - 資料欄位置會從 1 開始編號。例如,如下所示的資料欄位置值: @1@3'@5'

      如果資料欄順序變更,寫回便會不再運作,這也是使用資料欄 ID 會比較好的原因。

  • 您必須在範本中包含 <insert><update> 元素。如果不想在元素中包含 SQL 命令,則必須在開始標記和結束標記之間插入一個空格。例如,您必須以下列方式輸入元素:

    <insert> </insert>
    

    而不是:

    <insert></insert>
    

    如果省略空格,則會看到像是 「系統無法讀取寫回範本 'my_template'」的寫回錯誤訊息。

  • 如果參數的資料類型不是整數或實數,請使用單引號將它括起來。如果資料庫未自動進行確認,請在 insertupdate 節點之後新增選擇性的 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>