進階技巧:參照變數中的預存值

您有的時候可能會想要建立標題為目前使用者名稱的分析。此時,您可以透過參照變數達成此目的。

您可以在分析、儀表板和動作中參照多種不同類型的變數,包括:階段作業語意模型 (儲存區域)展示要求全域。內容作者可以自行定義展示、要求和全域變數,但其他類型的變數 (階段作業和語意模型 (儲存區域) 則是在語意模型中定義。

注意:Oracle Analytics 不支援在資料來源連線證明資料中使用 :user 和 :password 變數。

變數類型 定義位置 定義者 其他資訊

階段作業

  • 系統

  • 非系統

語意模型

資料模型作者

關於階段作業變數

語意模型 (儲存區域)

  • 動態

  • 靜態

語意模型

資料模型作者

關於語意模型 (儲存區域) 變數

展示

分析和儀表板的提示

內容作者

關於展示變數

要求

分析和儀表板的提示

內容作者

關於要求變數

全域

分析

管理員

關於全域變數建立全域變數

關於階段作業變數

使用者登入後,系統就會起始階段作業變數。

這些變數的有效期間為每個使用者的瀏覽階段作業期間,只要使用者關閉瀏覽器或登出,這些變數就會過期。階段作業變數可分為系統與非系統兩種類型。

系統階段作業變數

您可以在報表和儀表板中使用多種系統階段作業變數。

系統階段作業變數的名稱都是保留名稱,因此您不能在其他種類的變數使用這些名稱。

系統階段作業變數 描述 範例 SQL 查詢值 (變數對話方塊)

PORTALPATH

設定要在使用者登入時顯示的預設儀表板 (使用者可在登入後覆寫這項偏好設定)。

在使用者登入時顯示 'mydashboard':

 select ‘/shared/_portal/mydashboard’ from dual;

TIMEZONE

指定使用者登入時的預設時區。

一般來說,系統會根據使用者的設定檔填入使用者的時間。使用者可藉由偏好設定 (我的帳戶) 變更其預設時區。

設定使用者登入時的時區:

select ‘(GMT-08:00) Pacific Time (US & Canada)’ from dual;

DATA_TZ

指定資料原始時區的偏移。

您可以使用此變數轉換時區,讓使用者看到正確的時區。

將時間資料轉換為東部標準時間 (EST):

select ‘GMT-05:00’ from dual;

此範例表示格林威治標準時間 (GMT) - 5 小時

DATA_DISPLAY_TZ

指定顯示資料的所屬時區。

顯示東部標準時間 (EST):

select ‘GMT-05:00’ from dual;

此範例表示格林威治標準時間 (GMT) - 5 小時

非系統階段作業變數

非系統階段作業變數要在您的語意模型中命名和建立。

例如,資料模型建立者可能會建立一個 SalesRegion 變數,用於起始使用者登入時的銷售地區名稱。

關於語意模型 (儲存區域) 變數

語意模型 (儲存區域) 變數是一種在任何時間點都只有單一值的變數。

語意模型 (儲存區域) 變數可以是靜態或動態。靜態語意模型 (儲存區域) 變數的值會保持不變,直到管理員變更為止。動態語意模型 (儲存區域) 變數的值在重新整理後會變為查詢傳回的資料。

關於展示變數

您可以在建立資料欄提示或變數提示時建立展示變數。

類型 描述

資料欄提示

建立為資料欄提示之一部分的展示變數與某個資料欄關聯,其可接受的值來自資料欄值。

若要建立屬於資料欄提示的展示變數,您必須在「新提示」對話方塊的設定變數欄位中選取展示變數。在變數名稱欄位中輸入變數的名稱。

變數提示

建立變數提示時所建立的展示變數不會有任何關聯的資料欄,而且由您定義它可接受的值。

若要建立屬於變數提示的展示變數,您必須在「新提示」對話方塊的提示欄位中選取展示變數。在變數名稱欄位中輸入變數的名稱。

展示變數的值是由用來建立變數的資料欄或變數提示所填入。也就是說,每次使用者在資料欄或變數提示中選取一或多個值時,展示變數的值會設成使用者選取的一或多個值。

關於要求變數

要求變數可讓您覆寫階段作業變數的值,但僅限在從資料欄提示起始之資料庫要求的持續時間。您可以在建立資料欄提示的過程中建立要求變數。

您可以在建立下列其中一種類型之儀表板提示的過程中建立要求變數:

  • 建立成資料欄提示之一部分的要求變數會和某個資料欄關聯,而且是從資料欄值取得可接受的值。

    若要將要求變數建立為資料欄提示的一部分,必須在「新提示」對話方塊的設定變數欄位中選取要求變數。輸入階段作業變數的名稱以覆寫變數名稱欄位。

  • 建立變數提示時所建立的要求變數不會有任何關聯的資料欄,而且由您定義它可接受的值。

    若要將要求變數建立為變數提示的一部分,必須在「新提示」對話方塊 (或「編輯提示」對話方塊) 的提示欄位中選取要求變數。接著輸入您想在變數名稱欄位中覆寫的階段作業變數名稱。

要求變數的值是由用來建立變數的資料欄提示所填入。也就是說,每次使用者在資料欄提示中選取值時,要求變數的值就會設成使用者選取的值。不過,值的有效期間僅限於從使用者按下提示的執行按鈕到分析結果傳回至儀表板的期間。

某些系統階段作業變數不能被要求變數覆寫,例如 USERGUID 或 ROLES。其他系統階段作業變數,例如 DATA_TZ 和 DATA_DISPLAY_TZ (時區),如果是在「模型管理工具」中設定,則可以被覆寫。

只有字串與數字要求變數才能支援多個值。所有其他資料類型都只會傳遞第一個值。

關於全域變數

全域變數是合併特定資料類型與值所建立的資料欄。值可以是日期、日期與時間、數字、文字以及時間。

全域變數是在執行分析時評估,而且會適當地替代全域變數的值。

唯有具備「BI 服務管理員」角色的使用者可以管理 (新增、編輯及刪除) 全域變數。

您可以在建立分析的過程中使用「編輯資料欄公式」對話方塊建立全域值。系統就會將全域變數儲存在目錄中,供特定租用戶系統內的所有其他分析使用。

建立全域變數

您可以將某個計算式另存為全域變數,然後在不同的分析中重複使用。

  1. 開啟分析進行編輯。
  2. 在「選取的資料欄」窗格中,按一下資料欄名稱旁的選項
  3. 選取編輯公式以顯示「資料欄公式」頁籤。
  4. 按一下變數,然後選取全域
  5. 按一下新增全域變數
  6. 輸入名稱的值。例如,gv_region、date_and_time_global_variable 或 rev_eastern_region_calc_gv。
    參照變數時使用的全域變數名稱必須是完整名稱,因此前面會加上文字 "global.variables"。例如,設為計算收益的全域變數會顯示在「資料欄公式」對話方塊中,如下所示:

    "Base Facts"."1- Revenue"*@{global.variables.gv_qualified}

  7. 輸入類型的值。
    • 如果您選取「日期和時間」作為資料類型,請依以下範例輸入值:03/25/2004 12:00:00 AM
    • 如果您輸入表示式或計算式作為值,就必須使用「文字」資料類型,如以下範例所示:"Base Facts"."1- Revenue"*3.1415
  8. 按一下確定。新全域變數即會新增至「插入全域變數」對話方塊。
  9. 選取您剛剛建立的新全域變數,然後按一下確定。就會顯示「編輯資料欄公式」對話方塊,且「資料欄公式」窗格中會插入全域變數。並會自動選取自訂標題核取方塊。
  10. 為已指定全域變數的資料欄輸入新名稱,以更準確地反映變數。
  11. 按一下確定

參照變數的語法

您可以在分析和儀表板中參照變數。

變數的參照方式視您執行的作業而定。對於以對話方塊欄位顯示的作業,例如在篩選定義中參照變數,您只需要指定變數的類型和名稱 (不是完整語法)。

對於其他作業,例如在標題檢視中參照變數,您必須指定變數語法。您所使用的語法會根據變數類型的不同而有所不同,如下表所述。

類型 語法 範例

階段作業

@{biServer.variables['NQ_SESSION。variablename']}

其中 variablename 是階段作業變數的名稱,例如 DISPLAYNAME。

@{biServer.variables['NQ_SESSION.SalesRegion]}

語意模型 (儲存區域)

@{biServer.variables.variablename}

@{biServer.variables['variablename']}

其中 variablename 是變數的名稱,例如 prime_begin。

@{biServer.variables.prime_begin}

@{biServer.variables['prime_begin']}

展示或要求

@{variables.variablename}[format]{defaultvalue}

@{scope.variables['variablename']}

其中:

variablename 是簡報或要求變數的名稱,例如 MyFavoriteRegion。

(選擇性) format 是相依於變數資料類型的格式遮罩,例如 #、##0、MM/DD/YY hh:mm:ss。(請注意,此格式不會套用至預設值。)

(選擇性) defaultvalue 是一個常數或變數參照,指示若未填入 variablename 所參照的變數時所要使用的值。

scope 會識別變數的辨識符號。如果變數是在多個層級 (分析、儀表板頁面及儀表板) 使用,而且您要存取特定值,您就必須指定範圍。(如果您未指定範圍,則優先順序依序為分析、儀表板頁面以及儀表板。)

當儀表板提示與可以有多個值的展示變數一起使用時,語法會視資料欄類型而有所不同。多個值會格式化為以逗號區隔的值,因此,會先將任何格式子句套用至每個值,再使用逗號予以結合。

@{variables.MyFavoriteRegion}{EASTERN REGION}

@{MyFavoriteRegion}

@{dashboard.variables['MyFavoriteRegion']}

(@{myNumVar}[#,##0]{1000})

(@{variables.MyOwnTimestamp}[YY-MM-DD hh:mm:ss]{)

(@{myTextVar}{A, B, C})

全域

@{global.variables.variablename}

其中 variablename 是全域變數的名稱 (例如 gv_region)。參照全域變數時,您必須使用範例中指示的完整名稱。

全域變數的命名慣例必須符合 JavaScript 的 EMCA Scripting 語言規格。名稱不得超出200個字元,也不得包含內嵌空格、保留字和特殊字元。如果您不熟悉 JavaScripting 語言需求,請參閱第三方參考資料。

@{global.variables.gv_date_n_time}

您也可以在表示式中參照變數。如需在表示式中參照變數的準則,請參閱以下主題:

階段作業變數

在表示式中參照階段作業變數時,請遵守以下準則。

  • 將階段作業變數作為 VALUEOF 函數的引數。
  • 在變數名稱前後加上雙引號。
  • 在階段作業變數前面加上 NQ_SESSION 和句點。
  • 在 NQ_SESSION 部分和階段作業變數名稱前後加上括弧。

例如:

"Market"."Region"=VALUEOF(NQ_SESSION."SalesRegion")

展示變數

在表示式中參照展示變數時,請遵守以下準則。

若要參照展示變數,請使用此語法:

@{variablename}{defaultvalue}

其中 variablename 是展示變數的名稱,defaultvalue (選擇性) 是常數或變數參照,指示若未填入 variablename 所參照的變數時所要使用的值。

若要將變數轉型 (即轉換) 為字串或包含多個變數,請在整個變數前後加上單引號,例如:

'@{user.displayName}'

如果 @ 符號之後未跟著 {,就會視為 @ 符號。使用可以有多個值的展示變數時,語法會視資料欄類型而有所不同。

針對指定的資料欄類型使用下列 SQL 語法,以產生有效的 SQL 敘述句:

  • 文字 — (@{variablename}['@']{'defaultvalue'})

  • 數值 — (@{variablename}{defaultvalue})

  • 日期時間 — (@{variablename}{timestamp 'defaultvalue'})

  • 日期 (只有日期) — (@{variablename}{date 'defaultvalue'})

  • 時間 (只有時間) — (@{variablename}{time 'defaultvalue'})

例如:

'@{user.displayName}'

語意模型 (儲存區域) 變數

在表示式中參照語意模型 (儲存區域) 變數時,請遵守以下準則。

  • 將變數作為 VALUEOF 函數的引數。
  • 在變數名稱前後加上雙引號。
  • 按名稱參照靜態語意模型 (儲存區域) 變數。
  • 按其完整名稱參照動態語意模型 (儲存區域) 變數。

例如:

CASE WHEN "Hour" >= VALUEOF("prime_begin") AND "Hour" < VALUEOF("prime_end") THEN 'Prime Time' WHEN ... ELSE...END