概念︰Prism 運算式語言
Prism Analytics 包含自己的由函數和運算子組成的運算式語言。您可以使用 Prism 運算式語言來建立
運算式
,然後使用該運算式來建立新值或篩選現有值。運算式會組合欄位、常數值、運算子和函數,計算或產生值。運算式會輸出特定欄位類型的值,例如「數值」或「文字」值。簡單運算式可以是單一常數值、指定欄位的值,也可以只是函數。您可以使用運算子將兩個或多個簡單運算式聯結為複雜運算式。
您可以在資料集中使用運算式︰
- 計算欄位使用運算式定義可對來源資料執行運算的計算欄位。計算欄位運算式會根據計算或條件產生值,並為每個輸入列傳回一個值。計算欄位運算式可以包含其他欄位、常數、數學運算子、比較運算子或內建列函數的值。
- 篩選階段。在篩選階段中使用運算式來限制資料集的來源資料範圍。
運算式建置器可協助您在資料集中建立計算欄位運算式。其中顯示資料集中可用的欄位,以及 Prism 函數的清單。其會驗證您的運算式語法、輸入欄位類型等是否正確。
函數輸入和輸出
函數會採用一或多個輸入值並傳回輸出值。輸入值可以是常值或包含值的欄位名稱。在這兩種情況下,函數都要求輸入值為特定欄位類型,例如「文字」或「整數」。範例︰CONCAT() 函數可合併文字輸入並輸出新的文字。
此範例示範如何使用 CONCAT() 函數來串連
「月
」、「日
」和 「年」
欄位中的值,並以正斜線字元分隔︰CONCAT([month],"/",[day],"/",[year])
函數傳回值可能與其輸入類型相同,也可能是全新的欄位類型。範例︰TO_DATE() 函數以文字做為輸入,但輸出日期值。如果函數需要文字,但傳入的是另一個欄位類型做為輸入,則函數會傳回錯誤。
通常,函數會依據其使用的欄位類型或用途來分類。範例︰CONCAT() 是文字函數,TO_DATE() 是欄位類型轉換函數。
內嵌函數
函數可以接受其他函數做為引數。範例︰您可以使用 CONCAT 函數做為 TO_DATE() 函數的引數。最終結果是格式為 10/31/2014 的日期值。
TO_DATE(CONCAT([month],"/",[day],"/",[year]),"MM/dd/yyyy")
內嵌函數必須傳回正確的欄位類型。因此,由於 TO_DATE() 需要文字輸入,而 CONCAT() 會傳回文字,因此套疊會成功。
參照目前資料集中的欄位
Workday 建議在所有欄位名稱前後加上方括號 (
[]
)。範例︰TO_INT([sales])
TO_INT([Sale Amount])
TO_INT([2013_data])
TO_INT([count])
如果欄位名稱包含 ] (結束方括號),則必須將結束方括號加倍 ]] 以將其轉義。假設您有以下欄位名稱︰
[Total Sales]
您可以將整個欄位名稱放在方括號中,並避開做為實際欄位名稱一部分的右括號︰
[[Total Sales]]]
常值文字值
若要指定常值或實際文字值,請將值放在雙引號 (
"
)。範例︰以下運算式會將 「性別」
欄位的值轉換為 「男性
」、「女性
」或 「未知」
的字面值︰
CASE WHEN [gender]="M"THEN"male"WHEN [gender]="F"THEN"female"ELSE"unknown"END
若要在文字值本身內對文字引號進行轉義,請將文字引號字元加倍。範例︰
CASE WHEN [height]="60""" THEN "5 feet" WHEN [height]="72""" THEN "6 feet" ELSE "other" END
REGEX() 函數是一種特殊情況。在 REGEX() 函數中,文字運算式也會放在引號中。當文字運算式包含常值引號時,請將常值引號字元加倍。範例︰
REGEX([height], "\d\'(\d)+""")
實際日期值
若要在篩選條件階段運算式中參照「日期」值,您必須使用以下格式 (或其任何簡化版本),且不可使用任何括起來的引號或其他標點符號︰
yyyy-MM-ddTHH:mm:ss:SSSZ
範例︰
[Order Date] BETWEEN 2016-06-01T00:00:00.000Z AND 2016-07-31T00:00:00.000Z
如果篩選條件運算式是完整格式的縮短版本,Prism 會指派任何未包含在內的值零 (0)。範例︰ 此運算式︰
[Order Date] >= 2017-01-01
相當於︰
[Order Date] >= 2017-01-01T00:00:00.000Z
若要在計算欄位運算式中參照常值日期值,您必須使用 TO_DATE 指定日期和時間組成的格式,其接受文字常值引數和格式字串。範例︰
CASE WHEN [Order Date]=TO_DATE("2013-01-01 00:00:59 PST","yyyy-MM-dd HH:mm:ss z") THEN "free shipping" ELSE "standard shipping" DONE
常值數值
對於常值數值,您可以直接指定數字本身,而不需要任何特殊的轉義或格式設定。範例︰
CASE WHEN [is married]=1THEN "married" WHEN [is married]=0THEN "not_married" ELSE NULL END