實作資料來源的參數

若要讓資料來源更有彈性,您可以在查詢中實作程式實際執行參數以允許資料來源使用變數。

這些可以是 Essbase 中定義的替代變數、Smart View 使用者鑽研至外部資料時網格相關資訊環境所定義的程式實際執行參數,或是在外部來源系統中撰寫的使用者定義函數。

每當您打算在 Essbase 資料來源中使用變數時,請務必先確認

  1. 在資料來源查詢中包含變數語法。例如,資料來源查詢必須在語法中包含 ?,其中 ? 是某個要在程式實際執行時定義的變數預留位置。

  2. 請執行下列其中一個動作:

    • 在資料來源中設定固定的預設參數,供 Essbase 用來作為後援,以防變數在程式實際執行時有無效的相關資訊環境,或者

    • 設定要供資料來源使用的替代變數
    • 將外部的使用者定義函數 (或預存程序) 當作參數傳送

若要定義資料來源並為它們實作參數,您必須是應用程式管理者或具備更高權限的使用者。

允許在 Essbase 資料來源中使用變數可減少需要維護的資料來源,協助您簡化作業。對資料來源實作變數可讓您指定程式實際執行查詢相關資訊環境,以在使用者每次存取與 Essbase 立方體相關聯的資料來源時套用這些相關資訊環境。

例如,假設有下列使用案例。

  • 資料庫管理者監控週期性資料載入工作,每個月都會將資料載入立方體。資料庫管理者現在可以使用替代變數來載入當前月份的資料,而不需維護每個月的載入規則。

  • 應用程式管理者維護不同業務使用案例的鑽研報表定義。應用程式管理者在基礎資料來源中實作變數,而 Smart View 使用者對此資料來源執行鑽研作業時可從中提取資料。因此,應用程式管理者需要維護和除錯的鑽研報表定義就會減少。

在資料來源中設定預設參數

Essbase 使用儲存在立方體外部的資料時會產生查詢,如果您要允許在這類查詢中使用變數,請在資料來源中設定預設參數。

設定預設參數的作業如下:

  1. 取得或建立外部資料來源的連線 (例如,建立 Oracle Database 的連線)。

    1. 您可以使用全域連線 (如果 Essbase Web 介面的「來源」頁面中已有該連線),或者,

    2. 您可以建立應用程式層級連線:


      與 Oracle Database 的應用程式層級連線 (名稱為 oracledb_conn) 圖像。

  2. 透過您將用來存取 Oracle Database 的連線建立資料來源。

    同樣地,請注意,您可以在全域定義資料來源 (如果資料來源可供所有應用程式使用),也可以在應用程式層級定義資料來源。

    1. 一般步驟的連線中,選取您已建立的 Oracle Database 連線。

    2. 針對名稱,為資料來源命名。

    3. 針對查詢,提供查詢 (此範例使用 SQL)。若要讓此查詢成為參數化查詢,您必須在其中包含一個篩選條件 (WHERE 子句),將來源中的關聯式資料欄對應至預留位置。您可以在查詢語法中使用預留位置 ? 來指出變數的位置。您將在稍後步驟中傳遞參數時,使用此預留位置。

      select * from SB_DT where DIMENSION_YEAR=?

      例如,假設您的關聯式資料庫有 SB_DT 表格。此表格有以月份作為值的 DIMENSION_YEAR 資料欄:
      已選取 DIMENSION_YEAR 資料欄的關聯式資料庫表格圖像。此資料欄的所有值皆為月份:Jul、Aug、Aug、Sep、Sep、Oct 等

      若要使用變數從 DIMENSION_YEAR 資料欄選取月份值,請在查詢中套用下列篩選語法:where DIMENSION_YEAR=?
      「建立資料來源」精靈中的「一般」頁籤圖像。連線:SAMPLE.oracledb_conn、名稱:oracledb_ds、描述:Datasource for Oracle DB 以及查詢:select * from SB_DT where dimension_year=?

    4. 按一下下一步

    5. 資料欄步驟中,套用適當的資料類型,Essbase 將使用此資料類型與您關聯式來源資料中的每個資料欄建立關聯。

      例如,將數值資料欄設為雙精度浮點數類型,將英數資料欄保留字串類型。


      「建立資料來源」精靈中的「資料欄」頁籤圖像,其中的「類型」有雙精度浮點數與字串。

    6. 按一下下一步

    7. 在「參數」步驟中,會建立 Param1 – 因為您在「一般」步驟的查詢中使用了 ?,所以會有此參數。

      請將使用變數維持取消勾選,按兩下底下的文字欄位,然後輸入程式實際執行參數的預設值。此預設值的目的是要供 Essbase 用來作為後援,以防參數在程式實際執行時有無效的相關資訊環境。如果您打算使用程式實際執行參數作為鑽研報表定義的一部分,此步驟就相當重要。

      您可以將 Param1 重新命名為對您使用案例有意義的名稱。例如,您可以將其重新命名為 param_G_month 以表示此參數針對當前月份使用全域變數,或是將其重新命名為 param_<appName>_month 以表示此參數針對當前月份使用應用程式層級變數。自訂參數名稱有助於使用 Essbase 伺服器日誌檔進行參數除錯。


      「建立資料來源」精靈中的「參數」頁籤圖像。已取消勾選「使用變數」,且輸入的「值」為 Jan。

      如果您想要自訂參數以參考替代變數,則不需要提供預設值。請參閱在資料來源中使用替代變數,而不是此主題。

    8. 按一下下一步

    9. 預覽中,請注意預設參數已套用至您的查詢。因此,預覽中僅填入了 DIMENSION_YEAR 資料欄值為 Jan 的外部來源記錄。


      「建立資料來源」精靈中的「預覽」頁籤圖像,當中僅顯示 DIMENSION_YEAR = Jan 的記錄。

      雖然預覽僅顯示已套用預設參數的值,但稍後當您針對鑽研報表定義實作程式實際執行參數時,將能夠存取比預覽中可見更多的外部資料。

    10. 按一下建立,以根據您外部來源資料的這個查詢建立資料來源。資料來源已能夠實作程式實際執行參數。

在資料來源中使用替代變數

以下工作流程說明如何使用 Essbase 中定義的替代變數,從外部來源資料的查詢建立 Essbase 資料來源。替代變數可在您設計查詢並從來源資料進行提取時,增添彈性設計方式。

在此範例中,您將使用 Essbase 中的替代變數來宣告當前月份。您可以不理會資料來源,僅更新您定義的替代變數,而不必每月更新資料來源即可提取當前月份的資料。

  1. 建立全域或應用程式層級的替代變數


    在應用程式層級建立的替代變數圖像。名稱:mnth,值:Aug

  2. 取得或建立外部資料來源的連線 (例如,建立 Oracle Database 的連線)。

    1. 您可以使用全域連線 (如果 Essbase Web 介面的「來源」頁面中已有該連線),或者,

    2. 您可以建立應用程式層級連線:


      與 Oracle Database 的應用程式層級連線 (名稱為 oracledb_conn) 圖像。

  3. 透過您將用來存取 Oracle Database 的連線建立資料來源。

    同樣地,請注意,您可以在全域定義資料來源 (如果資料來源可供所有應用程式使用),也可以在應用程式層級定義資料來源。

    1. 一般步驟的連線中,選取您已建立的 Oracle Database 連線。

    2. 針對名稱,為資料來源命名。

    3. 針對查詢,提供查詢 (此範例使用 SQL)。若要讓此查詢成為參數化查詢,您必須在其中包含一個篩選條件 (WHERE 子句),將來源中的關聯式資料欄對應至預留位置。您可以在查詢語法中使用預留位置 ? 來指出變數的位置。您將在稍後步驟中傳遞參數時,使用此預留位置。

      select * from SB_DT where DIMENSION_YEAR=?

      例如,假設您的關聯式資料庫有 SB_DT 表格。此表格的 DIMENSION_YEAR 資料欄值為月份:
      已選取 DIMENSION_YEAR 資料欄的關聯式資料庫表格圖像。此資料欄的所有值皆為月份:Jul、Aug、Aug、Sep、Sep、Oct 等

      若要使用變數從 DIMENSION_YEAR 資料欄選取月份值,請在查詢中套用下列篩選語法:where DIMENSION_YEAR=?
      「建立資料來源」精靈中的「一般」頁籤圖像。連線:SAMPLE.oracledb_conn、名稱:oracledb_ds、描述:Datasource for Oracle DB 以及查詢:select * from SB_DT where dimension_year=?

    4. 按一下下一步

    5. 資料欄步驟中,套用適當的資料類型,Essbase 將使用此資料類型與您關聯式來源資料中的每個資料欄建立關聯。

      例如,將數值資料欄設為雙精度浮點數類型,將英數資料欄保留字串類型。


      「建立資料來源」精靈中的「資料欄」頁籤圖像,其中的「類型」有雙精度浮點數與字串。

    6. 按一下下一步

    7. 在「參數」步驟中,會建立 Param1 – 因為您在「一般」步驟的查詢中使用了 ?,所以會有此參數。若要自訂 Param1 以參考替代變數,請按一下使用變數,然後從下拉式清單中選取替代變數。

      如果是要建立應用程式內的資料來源,則可選取全域和應用程式層級替代變數。應用程式層級變數會以應用程式名稱作為首碼。如果是要建立全域資料來源,則只能選取全域替代變數。

      您可以將 Param1 重新命名為對您使用案例有意義的名稱。例如,您可以將其重新命名為 param_G_month 以表示此參數針對當前月份使用全域變數,或是將其重新命名為 param_<appName>_month 以表示此參數針對當前月份使用應用程式層級變數。自訂參數名稱有助於使用 Essbase 伺服器日誌檔進行參數除錯。


      「建立資料來源」精靈中的「參數」頁籤圖像。已勾選「使用變數」,且「值」為 Sample.mnth。

    8. 按一下下一步

    9. 預覽中,請注意替代變數已套用至您的查詢。因此,預覽中僅填入了 DIMENSION_YEAR 資料欄值為 Aug 的外部來源記錄。


      「建立資料來源」精靈中的「預覽」頁籤圖像,當中僅顯示 DIMENSION_YEAR = Aug 的記錄。

    10. 按一下建立,以根據您本次外部來源資料的查詢建立資料來源。