

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 函數
<a name="functions"></a>

在本節中，您可以找到 Amazon Quick 中可用的函數清單。若要檢視依類別排序的函數清單，並具有簡短定義，請參閱[依類別排序的函數](https://docs.aws.amazon.com/quicksight/latest/user/functions-by-category.html)。

**Topics**
+ [addDateTime](addDateTime-function.md)
+ [addWorkDays](addWorkDays-function.md)
+ [Abs](abs-function.md)
+ [Ceil](ceil-function.md)
+ [Coalesce](coalesce-function.md)
+ [Concat](concat-function.md)
+ [contains](contains-function.md)
+ [decimalToInt](decimalToInt-function.md)
+ [dateDiff](dateDiff-function.md)
+ [endsWith](endsWith-function.md)
+ [epochDate](epochDate-function.md)
+ [Exp](exp-function.md)
+ [Extract](extract-function.md)
+ [Floor](floor-function.md)
+ [formatDate](formatDate-function.md)
+ [Ifelse](ifelse-function.md)
+ [in](in-function.md)
+ [intToDecimal](intToDecimal-function.md)
+ [isNotNull](isNotNull-function.md)
+ [isNull](isNull-function.md)
+ [isWorkDay](isWorkDay-function.md)
+ [Left](left-function.md)
+ [Locate](locate-function.md)
+ [Log](log-function.md)
+ [Ln](ln-function.md)
+ [Ltrim](ltrim-function.md)
+ [Mod](mod-function.md)
+ [netWorkDays](netWorkDays-function.md)
+ [Now](now-function.md)
+ [notIn](notIn-function.md)
+ [nullIf](nullIf-function.md)
+ [parseDate](parseDate-function.md)
+ [parseDecimal](parseDecimal-function.md)
+ [parseInt](parseInt-function.md)
+ [parseJson](parseJson-function.md)
+ [Replace](replace-function.md)
+ [Right](right-function.md)
+ [Round](round-function.md)
+ [Rtrim](rtrim-function.md)
+ [Split](split-function.md)
+ [Sqrt](sqrt-function.md)
+ [startsWith](startsWith-function.md)
+ [Strlen](strlen-function.md)
+ [Substring](substring-function.md)
+ [switch](switch-function.md)
+ [toLower](toLower-function.md)
+ [toString](toString-function.md)
+ [toUpper](toUpper-function.md)
+ [trim](trim-function.md)
+ [truncDate](truncDate-function.md)

# addDateTime
<a name="addDateTime-function"></a>

`addDateTime` 會從日期時間值加上或減去某個單位的時間。例如，`addDateTime(2,'YYYY',parseDate('02-JUL-2018', 'dd-MMM-yyyy') )` 傳回 `02-JUL-2020`。您可以使用此函數對您的日期和時間資料執行日期數學。

## 語法
<a name="addDateTime-function-syntax"></a>

```
addDateTime(amount, period, datetime)
```

## 引數
<a name="addDateTime-function-arguments"></a>

 *amount*   
正數或負整數值，代表您要從提供的日期時間欄位加上或減去的時間量。

 *period*   
正數或負數值，代表您要從提供的日期時間欄位加上或減去的時間量。有效的期間如下：  
+ YYYY：這會傳回日期的年份部分。
+ Q：這會傳回日期所屬的季別 (1–4)。
+ MM：這會傳回日期的月份部分。
+ DD：這會傳回日期的日部分。
+ WK：這會傳回日期的週部分。本週從 Amazon Quick 的星期日開始。
+ HH：這會傳回日期的小時部分。
+ MI：這會傳回日期的分鐘部分。
+ SS：這會傳回日期的秒部分。
+ MS：這會傳回日期的毫秒部分。

 *datetime*   
您想要執行日期數學的日期或時間。

## 傳回類型
<a name="addDateTime-function-return-type"></a>

日期時間

## 範例
<a name="addDateTime-function-example"></a>

假設您有一個名為 `purchase_date` 的欄位，它有以下值。

```
2018 May 13 13:24
2017 Jan 31 23:06
2016 Dec 28 06:45
```

使用以下計算，`addDateTime` 會如下所示修改值。

```
addDateTime(-2, 'YYYY', purchaseDate)

2016 May 13 13:24
2015 Jan 31 23:06
2014 Dec 28 06:45


addDateTime(4, 'DD', purchaseDate)

2018 May 17 13:24
2017 Feb 4 23:06
2017 Jan 1 06:45


addDateTime(20, 'MI', purchaseDate)

2018 May 13 13:44
2017 Jan 31 23:26
2016 Dec 28 07:05
```

# addWorkDays
<a name="addWorkDays-function"></a>

`addWorkDays` 會在指定日期值上加上或減去指定的工作天數。此函數傳回工作日的日期，該日期位於指定輸入日期值之後或之前的指定工作日天數。

## 語法
<a name="addWorkDays-function-syntax"></a>

```
addWorkDays(initDate, numWorkDays)
```

## 引數
<a name="addWorkDays-function-arguments"></a>

*initDate*  
充當計算開始日期的有效非 NULL 日期。  
+ **資料集欄位**：您要在其中新增此函數的資料集中的任何 `date` 欄位。
+ **日期函數**：從另一個 `date` 函數輸出的任何日期，例如 `parseDate`、`epochDate`、`addDateTime` 等。  
**Example**  

  ```
  addWorkDays(epochDate(1659484800), numWorkDays)
  ```
+ **計算欄位** – 傳回`date`值的任何快速計算欄位。  
**Example**  

  ```
  calcFieldStartDate = addDateTime(10, “DD”, startDate)
  addWorkDays(calcFieldStartDate, numWorkDays)
  ```
+ **參數** – 任何快速`datetime`參數。  
**Example**  

  ```
  addWorkDays($paramStartDate, numWorkDays)
  ```
+ 上述引數值的任意組合。

 *numWorkDays*   
充當計算結束日期的非 NULL 整數。  
+ **常值**：直接在表達式編輯器中鍵入的整數常值。  
**Example**  

  ```
  ```
+ **資料集欄位**：資料集中的任何日期欄位   
**Example**  

  ```
  ```
+ **純量函數或計算** – 從另一個函數傳回整數輸出的任何純量快速函數，例如 `decimalToInt`、 `abs`等。  
**Example**  

  ```
  addWorkDays(initDate, decimalToInt(sqrt (abs(numWorkDays)) ) )
  ```
+ **計算欄位** – 傳回`date`值的任何快速計算欄位。  
**Example**  

  ```
  someOtherIntegerCalcField = (num_days * 2) + 12
  addWorkDays(initDate, someOtherIntegerCalcField)
  ```
+ **參數** – 任何快速`datetime`參數。  
**Example**  

  ```
  addWorkDays(initDate, $param_numWorkDays)
  ```
+ 上述引數值的任意組合。

## 傳回類型
<a name="addWorkDays-function-return-type"></a>

Integer 

## 輸出值
<a name="addWorkDays-function-output-type"></a>

預期輸出值包括：
+ 正整數 (當 start\$1date < end\$1date 時)
+ 負整數 (當 start\$1date > end\$1date 時)
+ 當一個或兩個引數從 `dataset field` 取得 null 值時為 NULL。

## 輸入錯誤
<a name="addWorkDays-function-errors"></a>

不允許的引數值會導致錯誤，如以下範例所示。
+ 不允許在表達式中使用常值 NULL 作為引數。  
**Example**  

  ```
  addWorkDays(NULL, numWorkDays) 
  ```  
**Example**  

  ```
  Error
  At least one of the arguments in this function does not have correct type. 
  Correct the expression and choose Create again.
  ```
+ 不允許在表達式中使用字串常值作為引數，或使用日期以外的任何其他資料類型。在下面的範例中，字串 **"2022-08-10"** 看似日期，但它實際上是一個字串。若要使用它，您必須使用可將其轉換為日期資料類型的函數。  
**Example**  

  ```
  addWorkDays("2022-08-10", 10)
  ```  
**Example**  

  ```
  Error
  Expression addWorkDays("2022-08-10", numWorkDays) for function addWorkDays has 
  incorrect argument type addWorkDays(String, Number). 
  Function syntax expects Date, Integer.
  ```

## 範例
<a name="addWorkDays-function-example"></a>

將正整數作為 `numWorkDays` 引數將產生相對於輸入日期未來的日期。將負整數作為 `numWorkDays` 引數將產生相對於輸入日期過去的日期。`numWorkDays` 引數的值為零時會產生與輸入日期相同的值，無論該日期是工作日還是週末。

`addWorkDays` 函數的運作精細程度為：`DAY`。在低於或高於 `DAY` 精細程度的任何精細程度下都無法保持準確性。

```
addWorkDays(startDate, endDate)
```

假設有一個名為 `employmentStartDate` 的欄位，其值如下：

```
2022-08-10 2022-08-06 2022-08-07 
```

使用上述欄位和以下計算，`addWorkDays` 傳回的修改後的值如下所示：

```
addWorkDays(employmentStartDate, 7)

2022-08-19 
2022-08-16 
2022-08-16 

addWorkDays(employmentStartDate, -5)

2022-08-02 
2022-08-01 
2022-08-03 

addWorkDays(employmentStartDate, 0)

2022-08-10 
2022-08-06 
2022-08-07
```

以下範例根據每位員工實際工作天數，計算 2 年內按比例支付給每位員工的獎金總額。

```
last_day_of_work = addWorkDays(employment_start_date, 730)
total_days_worked = netWorkDays(employment_start_date, last_day_of_work)
total_bonus = total_days_worked * bonus_per_day
```

![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/quick/latest/userguide/images/addWorkDays-function-example.png)


# Abs
<a name="abs-function"></a>

`abs` 會傳回指定運算式的絕對值。

## 語法
<a name="abs-function-syntax"></a>

```
abs(expression)
```

## 引數
<a name="abs-function-arguments"></a>

 *表達式*   
表達式必須是數字。它可以是欄位名稱、常值或另一個函數。

# Ceil
<a name="ceil-function"></a>

`ceil` 會將小數值無條件進位至最接近的整數。例如，`ceil(29.02)` 傳回 `30`。

## 語法
<a name="ceil-function-syntax"></a>

```
ceil(decimal)
```

## 引數
<a name="ceil-function-arguments"></a>

 *decimal*   
使用小數資料類型的欄位、**17.62** 之類的常值，或對輸出小數的另一個函數的呼叫。

## 傳回類型
<a name="ceil-function-return-type"></a>

Integer

## 範例
<a name="ceil-function-example"></a>

以下範例會將小數欄位四捨五入到下一個最高整數。

```
ceil(salesAmount)
```

以下是指定欄位的值。

```
20.13
892.03
57.54
```

對於這些欄位值，會傳回以下值。

```
21
893
58
```

# Coalesce
<a name="coalesce-function"></a>

`coalesce` 會傳回非 Null 的第一個引數的值。找到非 Null 值時，就不會評估清單中剩餘的引數。如果所有引數都是 Null，則結果為 Null。長度為 0 的字串為有效值，不會將它視為等同於 Null。

## 語法
<a name="coalesce-function-syntax"></a>

```
coalesce(expression1, expression2 [, expression3, ...])
```

## 引數
<a name="coalesce-function-arguments"></a>

`coalesce` 需要兩個或多個表達式做為引數。所有表達式必須擁有相同資料類型，或可以是隱含轉換為相同資料類型。

 *表達式*   
表達式可以是數字、日期時間或字串。它可以是欄位名稱、常值或另一個函數。

## 傳回類型
<a name="coalesce-function-return-type"></a>

`coalesce` 會傳回與輸入引數相同資料類型的值。

## 範例
<a name="coalesce-function-example"></a>

以下範例會擷取客戶的帳單地址 (如果存在)、其街道地址 (如果沒有帳單地址)，或如果前述兩個地址不存在，則傳回「地址列未列出」。

```
coalesce(billingAddress, streetAddress, 'No address listed')
```

# Concat
<a name="concat-function"></a>

`concat` 會串連兩或多個字串。

## 語法
<a name="concat-function-syntax"></a>

```
concat(expression1, expression2 [, expression3 ...])
```

## 引數
<a name="concat-function-arguments"></a>

`concat` 需要兩個或多個字串表達式為做為引數。

 *表達式*   
表達式必須是字串。它可以是使用字串資料類型的欄位、**'12 Main Street'** 之類的常值，或對輸出字串的另一個函數的呼叫。

## 傳回類型
<a name="concat-function-return-type"></a>

String

## 範例
<a name="concat-function-example"></a>

以下範例會串連三個字串欄位，並新增適當的空隔。

```
concat(salutation, ' ', firstName, ' ', lastName)
```

以下是指定欄位的值。

```
salutation     firstName          lastName
-------------------------------------------------------
Ms.            Li                  Juan
Dr.            Ana Carolina        Silva
Mr.            Nikhil              Jayashankar
```

對於這些欄位值，會傳回以下值。

```
Ms. Li Juan
Dr. Ana Carolina Silva
Mr. Nikhil Jayashankar
```

下列範例會串連兩個字串常值。

```
concat('Hello', 'world')
```

會傳回下列值。

```
Helloworld
```

# contains
<a name="contains-function"></a>

`contains` 會評估您指定的子字串是否存在於某個表達式中。如果相應表達式包含該子字串，contains 會傳回 true，否則會傳回 false。

## 語法
<a name="contains-function-syntax"></a>

```
contains(expression, substring, string-comparison-mode)
```

## 引數
<a name="contains-function-arguments"></a>

 *表達式*   
表達式必須是字串。它可以是使用字串資料類型的欄位、**'12 Main Street'** 之類的常值，或對輸出字串的另一個函數的呼叫。

 *substring*   
要針對表達式**檢查的字元集。該子字串在表達式**中可能出現一或多次。

 字串比較模式**   
(選用) 指定要使用的字串比較模式：  
+ `CASE_SENSITIVE`：字串比較區分大小寫。
+ `CASE_INSENSITIVE`：字串比較不區分大小寫。
空白時此值會預設為 `CASE_SENSITIVE`。

## 傳回類型
<a name="contains-function-return-type"></a>

Boolean

## 範例
<a name="contains-function-example"></a>

### 預設區分大小寫的範例
<a name="contains-function-example-default-case-sensitive"></a>

以下區分大小寫的範例評估 `state_nm` 是否包含 **New**。

```
contains(state_nm, "New")
```

以下是指定欄位的值。

```
New York
new york
```

對於這些欄位值，會傳回以下值。

```
true
false
```

### 不區分大小寫的範例
<a name="contains-function-example-case-insensitive"></a>

以下不區分大小寫的範例評估 `state_nm` 是否包含 **new**。

```
contains(state_nm, "new", CASE_INSENSITIVE)
```

以下是指定欄位的值。

```
New York
new york
```

對於這些欄位值，會傳回以下值。

```
true
true
```

### 條件陳述式範例
<a name="contains-function-example-conditional-statements"></a>

contains 函數可用作以下 If 函數中的條件陳述式：[avgIf](https://docs.aws.amazon.com/quicksight/latest/user/avgIf-function.html)、[minIf](https://docs.aws.amazon.com/quicksight/latest/user/minIf-function.html)、[distinct\$1countIf](https://docs.aws.amazon.com/quicksight/latest/user/distinct_countIf-function.html)、[countIf](https://docs.aws.amazon.com/quicksight/latest/user/countIf-function.html)、[maxIf](https://docs.aws.amazon.com/quicksight/latest/user/maxIf-function.html)、[medianIf](https://docs.aws.amazon.com/quicksight/latest/user/medianIf-function.html)、[stdevIf](https://docs.aws.amazon.com/quicksight/latest/user/stdevIf-function.html)、[stdevpIf](https://docs.aws.amazon.com/quicksight/latest/user/stdevpIf-function.html)、[sumIf](https://docs.aws.amazon.com/quicksight/latest/user/sumIf-function.html)、[varIf](https://docs.aws.amazon.com/quicksight/latest/user/varIf-function.html) 和 [varpIf](https://docs.aws.amazon.com/quicksight/latest/user/varpIf-function.html)。

以下範例僅當 `state_nm` 包含 **New** 時才對 `Sales` 求和。

```
sumIf(Sales,contains(state_nm, "New"))
```

### 不包含範例
<a name="contains-function-example-does-not-contain"></a>

條件 `NOT` 運算子可用來評估表達式是否不包含指定的子字串。

```
NOT(contains(state_nm, "New"))
```

### 使用數值的範例
<a name="contains-function-example-numeric-values"></a>

透過套用 `toString` 函數，可以在表達式或子字串引數中使用數值。

```
contains(state_nm, toString(5) )
```

# decimalToInt
<a name="decimalToInt-function"></a>

`decimalToInt` 會藉由去除小數點和所有後方數字，將小數值轉換成整數資料類型。`decimalToInt` 不會四捨五入。例如，`decimalToInt(29.99)` 傳回 `29`。

## 語法
<a name="decimalToInt-function-syntax"></a>

```
decimalToInt(decimal)
```

## 引數
<a name="decimalToInt-function-arguments"></a>

 *decimal*   
使用小數資料類型的欄位、**17.62** 之類的常值，或對輸出小數的另一個函數的呼叫。

## 傳回類型
<a name="decimalToInt-function-return-type"></a>

Integer

## 範例
<a name="decimalToInt-function-example"></a>

以下範例會將小數欄位轉換為整數。

```
decimalToInt(salesAmount)
```

以下是指定欄位的值。

```
 20.13
892.03
 57.54
```

對於這些欄位值，會傳回以下值。

```
 20
892
 57
```

# dateDiff
<a name="dateDiff-function"></a>

`dateDiff` 會以天為單位，傳回兩個日期欄位之間的差異。如果您包含的值為一段期間，`dateDiff` 傳回的差異則以期間間隔為單位，而非以天為單位。

## 語法
<a name="dateDiff-function-syntax"></a>

```
dateDiff(date1, date2,[period])
```

## 引數
<a name="dateDiff-function-arguments"></a>

`dateDiff` 需要兩個日期做為引數。指定期間為選用。

 *date 1*   
第一個日期比較。日期欄位或對輸出日期的另一個函數的呼叫。

 *date 2*   
第二個日期比較。日期欄位或對輸出日期的另一個函數的呼叫。

 *period*   
您想要傳回差異的期間，將其括在引號中。有效的期間如下：  
+ YYYY：這會傳回日期的年份部分。
+ Q：這會傳回日期所屬的季別第一天的日期。
+ MM：這會傳回日期的月份部分。
+ DD：這會傳回日期的日部分。
+ WK：這會傳回日期的週部分。本週從 Amazon Quick 的星期日開始。
+ HH：這會傳回日期的小時部分。
+ MI：這會傳回日期的分鐘部分。
+ SS：這會傳回日期的秒部分。
+ MS：這會傳回日期的毫秒部分。

## 傳回類型
<a name="dateDiff-function-return-type"></a>

Integer

## 範例
<a name="dateDiff-function-example"></a>

以下範例會傳回兩個日期之間的差異。

```
dateDiff(orderDate, shipDate, "MM")
```

以下是指定欄位的值。

```
orderDate          shipdate
=============================
01/01/18            03/05/18
09/13/17            10/20/17
```

對於這些欄位值，會傳回以下值。

```
2
1
```

# endsWith
<a name="endsWith-function"></a>

`endsWith` 會評估表達式是否以您指定的子字串結尾。如果表達式以相應子字符串結束，則 `endsWith` 會返回 true，否則會返回 false。

## 語法
<a name="endsWith-function-syntax"></a>

```
endsWith(expression, substring, string-comparison-mode)
```

## 引數
<a name="endsWith-function-arguments"></a>

 *表達式*   
表達式必須是字串。它可以是使用字串資料類型的欄位、**'12 Main Street'** 之類的常值，或對輸出字串的另一個函數的呼叫。

 *substring*   
要針對表達式**檢查的字元集。該子字串在表達式**中可能出現一或多次。

 字串比較模式**   
(選用) 指定要使用的字串比較模式：  
+ `CASE_SENSITIVE`：字串比較區分大小寫。
+ `CASE_INSENSITIVE`：字串比較不區分大小寫。
空白時此值會預設為 `CASE_SENSITIVE`。

## 傳回類型
<a name="endsWith-function-return-type"></a>

Boolean

## 範例
<a name="endsWith-function-example"></a>

### 預設區分大小寫的範例
<a name="endsWith-function-example-default-case-sensitive"></a>

以下區分大小寫的範例評估 `state_nm` 是否以 **"York"** 結尾。

```
endsWith(state_nm, "York")
```

以下是指定欄位的值。

```
New York
new york
```

對於這些欄位值，會傳回以下值。

```
true
false
```

### 不區分大小寫的範例
<a name="endsWith-function-example-case-insensitive"></a>

以下不區分大小寫的範例評估 `state_nm` 是否以 **"york"** 結尾。

```
endsWith(state_nm, "york", CASE_INSENSITIVE)
```

以下是指定欄位的值。

```
New York
new york
```

對於這些欄位值，會傳回以下值。

```
true
true
```

### 條件陳述式範例
<a name="endsWith-function-example-conditional-statements"></a>

`endsWith` 函數可用作以下 If 函數中的條件陳述式：[avgIf](https://docs.aws.amazon.com/quicksight/latest/user/avgIf-function.html)、[minIf](https://docs.aws.amazon.com/quicksight/latest/user/minIf-function.html)、[distinct\$1countIf](https://docs.aws.amazon.com/quicksight/latest/user/distinct_countIf-function.html)、[countIf](https://docs.aws.amazon.com/quicksight/latest/user/countIf-function.html)、[maxIf](https://docs.aws.amazon.com/quicksight/latest/user/maxIf-function.html)、[medianIf](https://docs.aws.amazon.com/quicksight/latest/user/medianIf-function.html)、[stdevIf](https://docs.aws.amazon.com/quicksight/latest/user/stdevIf-function.html)、[stdevpIf](https://docs.aws.amazon.com/quicksight/latest/user/stdevpIf-function.html)、[sumIf](https://docs.aws.amazon.com/quicksight/latest/user/sumIf-function.html)、[varIf](https://docs.aws.amazon.com/quicksight/latest/user/varIf-function.html) 和 [varpIf](https://docs.aws.amazon.com/quicksight/latest/user/varpIf-function.html)。

以下範例僅當 `state_nm` 以 **"York"** 結尾時才對 `Sales` 求和。

```
sumIf(Sales,endsWith(state_nm, "York"))
```

### 不包含範例
<a name="endsWith-function-example-does-not-start-with"></a>

條件 `NOT` 運算子可用來評估表達式是否以指定的子字串開頭。

```
NOT(endsWith(state_nm, "York"))
```

### 使用數值的範例
<a name="endsWith-function-example-numeric-values"></a>

透過套用 `toString` 函數，可以在表達式或子字串引數中使用數值。

```
endsWith(state_nm, toString(5) )
```

# epochDate
<a name="epochDate-function"></a>

`epochDate` 會將 epoch 日期轉換為格式為 yyyy-MM-dd**T**kk:mm:ss.SSS**Z** 的標準日期，使用 Joda 專案文件[類別 DateTimeFormat](http://www.joda.org/joda-time/apidocs/org/joda/time/format/DateTimeFormat.html) 中指定的格式模式語法。例如，`2015-10-15T19:11:51.003Z`。

`epochDate` 支援與根據存放在 Quick () 中的資料集進行分析搭配使用SPICE。

## 語法
<a name="epochDate-function-syntax"></a>

```
epochDate(epochdate)
```

## 引數
<a name="epochDate-function-arguments"></a>

 *epochdate*   
epoch 日期，是日期的整數表示，即自 1970 年 1 月 1 日 00:00:00 UTC 起的秒數。  
*epochdate* 必須為整數。它可以是使用整數資料類型的欄位、常值整數值，或對輸出整數的另一個函數的呼叫。如果整數值超過 10 位數字，則會捨棄第 10 位數之後的數字。

## 傳回類型
<a name="epochDate-function-return-type"></a>

Date

## 範例
<a name="epochDate-function-example"></a>

以下範例會將 epoch 日期轉換為標準日期。

```
epochDate(3100768000)
```

會傳回下列值。

```
2068-04-04T12:26:40.000Z
```

# Exp
<a name="exp-function"></a>

`exp` 會傳回指定運算式之以自然對數為底的 e 次方。

## 語法
<a name="exp-function-syntax"></a>

```
exp(expression)
```

## 引數
<a name="exp-function-arguments"></a>

 *表達式*   
表達式必須是數字。它可以是欄位名稱、常值或另一個函數。

# Extract
<a name="extract-function"></a>

`extract` 會傳回日期值的指定部分。請求未包含時間資訊的日期的時間相關部分會傳回 0。

## 語法
<a name="extract-function-syntax"></a>

```
extract(period, date)
```

## 引數
<a name="extract-function-arguments"></a>

 *period*   
您要從日期值擷取的期間。有效的期間如下：  
+ YYYY：這會傳回日期的年份部分。
+ Q：這會傳回日期所屬的季別 (1–4)。
+ MM：這會傳回日期的月份部分。
+ DD：這會傳回日期的日部分。
+ WD：這會以整數形式傳回當週的星期幾，星期日為 1。
+ HH：這會傳回日期的小時部分。
+ MI：這會傳回日期的分鐘部分。
+ SS：這會傳回日期的秒部分。
+ MS：這會傳回日期的毫秒部分。
**注意**  
Presto 0.216 以下版本的資料庫不支援擷取毫秒。

 *date*   
日期欄位或對輸出日期的另一個函數的呼叫。

## 傳回類型
<a name="extract-function-return-type"></a>

Integer

## 範例
<a name="extract-function-example"></a>

以下範例會從日期值擷取日。

```
extract('DD', orderDate)
```

以下是指定欄位的值。

```
orderDate
=========
01/01/14  
09/13/16
```

對於這些欄位值，會傳回以下值。

```
01
13
```

# Floor
<a name="floor-function"></a>

`floor` 會將小數值遞減至下一個最低的整數。例如，`floor(29.08)` 傳回 `29`。

## 語法
<a name="floor-function-syntax"></a>

```
floor(decimal)
```

## 引數
<a name="floor-function-arguments"></a>

 *decimal*   
使用小數資料類型的欄位、**17.62** 之類的常值，或對輸出小數的另一個函數的呼叫。

## 傳回類型
<a name="floor-function-return-type"></a>

Integer

## 範例
<a name="floor-function-example"></a>

以下範例會將小數欄位遞減至下一個最低整數。

```
floor(salesAmount)
```

以下是指定欄位的值。

```
20.13
892.03
57.54
```

對於這些欄位值，會傳回以下值。

```
20
892
57
```

# formatDate
<a name="formatDate-function"></a>

`formatDate` 會使用您指定的模式設定日期格式。在您準備資料時，您可以使用 `formatDate` 來重新格式化日期。若要重新格式化分析中的日期，您可以從日期欄位的內容功能表中選擇 format (格式) 選項。

## 語法
<a name="formatDate-function-syntax"></a>

```
formatDate(date, ['format'])
```

## 引數
<a name="formatDate-function-arguments"></a>

 *date*   
日期欄位或對輸出日期的另一個函數的呼叫。

 *format*   
(選用) 包含要套用的格式模式的字串。此引數接受[以支援的日期格式指定的格式](https://docs.aws.amazon.com/quicksight/latest/user/supported-date-formats.html)模式。  
如果您不指定格式，這個字串預設為 yyyy-MM-dd**T**kk:mm:ss:SSS。

## 傳回類型
<a name="formatDate-function-return-type"></a>

String

## 範例
<a name="formatDate-function-example"></a>

下列範例將 UTC 日期格式化。

```
formatDate(orderDate, 'dd-MMM-yyyy')
```

以下是指定欄位的值。

```
order date      
=========
2012-12-14T00:00:00.000Z  
2013-12-29T00:00:00.000Z
2012-11-15T00:00:00.000Z
```

對於這些欄位值，會傳回以下值。

```
13 Dec 2012
28 Dec 2013
14 Nov 2012
```

## 範例
<a name="formatDate-function-example2"></a>

如果日期包含單引號或撇號，例如 `yyyyMMdd'T'HHmmss`，您可以使用下列方法之一來處理此日期格式。
+ 將整個日期用雙引號括起來，如下例所示：

  ```
  formatDate({myDateField}, "yyyyMMdd'T'HHmmss")
  ```
+ 透過在單引號或撇號左側新增反斜線 (`\`) 讓單引號或撇號進行逸出，如下例所示：

  ```
  formatDate({myDateField}, 'yyyyMMdd\'T\'HHmmss')
  ```

# Ifelse
<a name="ifelse-function"></a>

`ifelse` 會評估一組 *if* 和 *then* 表達式對，並傳回第一個評估結果為 true 的 *if* 引數的 *then* 引數值。如果 *if* 引數評估為 true，則會傳回 *else* 引數的值。

## 語法
<a name="ifelse-function-syntax"></a>

```
ifelse(if-expression-1, then-expression-1 [, if-expression-n, then-expression-n ...], else-expression)
```

## 引數
<a name="ifelse-function-arguments"></a>

`ifelse` 需要一或多個 *if* 和 *then* 表達式配對，加上 *else* 引數的正好一個表達式。

 *if-expression*   
要評估為 true 或否的表達式。它可以是 **address1** 之類的欄位名稱、**'Unknown'** 之類的常值，或 `toString(salesAmount)` 之類的函數。例如，`isNotNull(FieldName)`。  
如果您在 `if` 引數中使用多個 AND 和 OR 運算子，請將陳述式含括在括號中，以識別處理順序。例如，下列 `if` 引數會傳回月份 1、2、或 5 且年份為 2000 年的記錄。  

```
ifelse((month = 5 OR month < 3) AND year = 2000, 'yes', 'no')
```
下一個 `if` 引數會使用相同的運算子，但傳回月份為 5 和任何年份，或月份為 1 或 2 且年份為 2000 年的記錄。  

```
ifelse(month = 5 OR (month < 3 AND year = 2000), 'yes', 'no')
```

 *then-expression*   
如果其 *if* 引數評估為 true，要傳回的表達式。它可以是 **address1** 之類的欄位名稱、**'Unknown'** 之類的常值，或對另一個函數的呼叫。運算式必須與其他 `then` 引數和 `else` 引數擁有相同的資料類型。

 *else-expression*   
如果沒有任何 *if* 引數評估為 true，要傳回的表達式。它可以是 **address1** 之類的欄位名稱、**'Unknown'** 之類的常值，或 `toString(salesAmount)` 之類的函數。運算式必須與所有 `then` 引數擁有相同的資料類型。

## 傳回類型
<a name="ifelse-function-return-type"></a>

`ifelse` 會傳回與 *then-expression* 中的值具有相同資料類型的值。從 *then* 和 *else* 表達式傳回的所有資料必須具有相同的資料類型或轉換為相同的資料類型。

## 範例
<a name="ifelse-function-example"></a>

以下範例為欄位 `country` 產生別名資料欄。

```
ifelse(country = "United States", "US", country = "China", "CN", country = "India", "IN", "Others") 
```

對於此類根據常值清單評估欄位中每個值，並傳回與第一個相符值相對應的結果的使用案例，建議使用函數 switch 來簡化工作。可以使用 [https://docs.aws.amazon.com/quicksight/latest/user/switch-function.html](https://docs.aws.amazon.com/quicksight/latest/user/switch-function.html) 將前面的範例重寫為以下陳述式：

```
switch(country,"United States","US","China","CN","India","IN","Others")
```

以下範例將每位客戶的銷售額分類為人類可讀的等級。

```
ifelse(salesPerCustomer < 1000, “VERY_LOW”, salesPerCustomer < 10000, “LOW”, salesPerCustomer < 100000, “MEDIUM”, “HIGH”)
```

以下範例使用 AND、OR 和 NOT 來比較多個表達式，使用條件運算子來標記特殊促銷活動中，不在華盛頓或奧勒岡、提出了 10 個以上訂單的前幾大客戶。如果沒有傳回任何值，則會使用值 `'n/a'`。

```
ifelse(( (NOT (State = 'WA' OR State =  'OR')) AND Orders > 10),  'Special Promotion XYZ',  'n/a')
```

以下範例僅使用 OR 產生一個新資料欄，其中包含與每個 `country` 對應的大洲名稱。

```
ifelse(country = "United States" OR country = "Canada", "North America", country = "China" OR country = "India" OR country = "Japan", "Asia", "Others")
```

前面的範例可以簡化稱如下範例。以下範例使用 `ifelse` 和 [https://docs.aws.amazon.com/quicksight/latest/user/in-function.html](https://docs.aws.amazon.com/quicksight/latest/user/in-function.html) 針對測試值位於常值清單中的任何列在新資料欄中建立一個值。您也可以將 `ifelse` 與 [https://docs.aws.amazon.com/quicksight/latest/user/notIn-function.html](https://docs.aws.amazon.com/quicksight/latest/user/notIn-function.html) 搭配使用。

```
ifelse(in(country,["United States", "Canada"]), "North America", in(country,["China","Japan","India"]),"Asia","Others")
```

作者可以將常值清單儲存在多值參數中，並在 [https://docs.aws.amazon.com/quicksight/latest/user/in-function.html](https://docs.aws.amazon.com/quicksight/latest/user/in-function.html) 或 [https://docs.aws.amazon.com/quicksight/latest/user/notIn-function.html](https://docs.aws.amazon.com/quicksight/latest/user/notIn-function.html) 函數中使用。以下範例與前面的範例等效，只是這裡的常值清單儲存在兩個多值參數中。

```
ifelse(in(country,${NorthAmericaCountryParam}), "North America", in(country,${AsiaCountryParam}),"Asia", "Others") 
```

以下範例會根據銷售總計，將群組指派給銷售記錄。每個 `if-then` 片語的結構模仿 *between* (該關鍵字目前在計算欄位表達式中不起作用) 的行為。例如，比較 `salesTotal >= 0 AND salesTotal < 500` 的結果傳回與 SQL 比較 `salesTotal between 0 and 499` 相同的值。

```
ifelse(salesTotal >= 0 AND salesTotal < 500, 'Group 1', salesTotal >= 500 AND salesTotal < 1000, 'Group 2', 'Group 3')
```

以下範例透過使用 `coalesce` 傳回第一個非 NULL 值來測試 NULL 值。您可以為日期欄位使用可讀的描述，從而無需記住 NULL 的含義。如果中斷連線日期為 NULL，則此範例會傳回暫停日期，除非兩者皆為 NULL。然後 `coalesce(DiscoDate, SuspendDate, '12/31/2491')` 會回傳 `'12/31/2491'`。傳回值必須與其他資料類型相符。這個日期看似一個不尋常的值，但 25 世紀的某個日期作為「結束時間」 (定義為資料市集中的最晚日期) 是合理的。

```
ifelse (  (coalesce(DiscoDate, SuspendDate, '12/31/2491') = '12/31/2491'),  'Active subscriber', 'Inactive subscriber')
```

下面以更易讀的格式顯示了一個更複雜的範例，目的在於表明您不需要將所有程式碼壓縮成一長行。此範例提供了對調查結果值的多重比較。它處理該欄位的潛在 NULL 值，並對兩個可接受的範圍進行分類。它還標記了一個需要更多測試的範圍，以及另一個無效 (超出範圍) 的範圍。對於所有剩餘值，它會套用 `else` 條件，並將相應列標記為需要在列上的日期三年後重新測試。

```
ifelse
( 
    isNull({SurveyResult}), 'Untested',  
    {SurveyResult}=1, 'Range 1', 
    {SurveyResult}=2, 'Range 2', 
    {SurveyResult}=3, 'Need more testing',
    {SurveyResult}=99, 'Out of Range',
    concat  
    (
        'Retest by ', 
        toString    
        (
           addDateTime(3, "YYYY", {Date}) 
        )
    )
)
```

以下範例將「手動」建立的地區名稱指派給一個州名群組。它還使用空白和包含在 `/* */` 中的註解，以便讓維護程式碼更輕鬆。

```
ifelse 
(    /* NE REGION*/
     locate('New York, New Jersey, Connecticut, Vermont, Maine, Rhode Island, New Hampshire',{State}) > 0,
    'Northeast',

     /* SE REGION*/
     locate('Georgia, Alabama, South Carolina, Louisiana',{State}) > 0,
    'Southeast',

    'Other Region'
)
```

地區標記的邏輯分解如下：

1. 我們列出每個地區相應的州，將每個清單括在引號中以使每個清單成為一個字串，如下所示：
   + `'New York, New Jersey, Connecticut, Vermont, Maine, Rhode Island, New Hampshire'`
   + `'Georgia, Alabama, South Carolina, Louisiana'`
   + 您可以新增更多集合，或根據需要使用國家/地區、城市、省份或 What3Words。

1. 我們使用 `locate` 函數詢問是否在清單中找到了 `State` (每列) 的值，如果在清單中找到了相應州，則傳回非零值，如下所示。

   ```
   locate('New York, New Jersey, Connecticut, Vermont, Maine, Rhode Island, New Hampshire',{State}) 
   
   and
   
   locate('Georgia, Alabama, South Carolina, Louisiana',{State})
   ```

1. `locate` 函數傳回一個數字，而不是 `TRUE` 或 `FALSE`，但 `ifelse` 需要 `TRUE`/`FALSE` 布林值。為了解決這個問題，我們可以將 `locate` 的結果與某個數字進行比較。如果相應州在清單中，則傳回值大於零。

   1. 詢問相應州是否存在。

      ```
      locate('New York, New Jersey, Connecticut, Vermont, Maine, Rhode Island, New Hampshire',{State}) > 0
      ```

   1. 如果存在於相應地區，則將其標記為特定地區，在本例中為 Northeast 地區。

      ```
      /*The if expression:*/     locate('New York, New Jersey, Connecticut, Vermont, Maine, Rhode Island, New Hampshire',{State}) > 0,
      /*The then expression:*/   'Northeast',
      ```

1. 由於有些州不在清單中，而且 `ifelse` 需要單一 `else` 表達式，因此我們提供 `'Other Region'` 作為剩餘州的標籤。

   ```
   /*The if expression:*/     locate('New York, New Jersey, Connecticut, Vermont, Maine, Rhode Island, New Hampshire',{State}) > 0,
   /*The then expression:*/   'Northeast',
   /*The else expression:*/   'Other Region'
   ```

1. 我們將所有內容包裝在 `ifelse( )` 函數中以取得最終版本。以下範例省略了原始範例中屬於 Southeast 地區的州。您可以使用它們取代 *`<insert more regions here>`* 標籤將它們加回來。

   如果您想新增更多地區，您可以建立這兩行的更多複本，並變更州清單以滿足您的需求。您可以將地區名稱變更為所需名稱，並將欄位名稱從 `State` 變更為您需要的任何名稱。

   ```
   ifelse 
   (
   /*The if expression:*/     locate('New York, New Jersey, Connecticut, Vermont, Maine, Rhode Island, New Hampshire',{State}) > 0,
   /*The then expression:*/   'Northeast',
   
   /*<insert more regions here>*/
   
   /*The else expression:*/   'Other Region'
   )
   ```
**注意**  
還有其他方法可以對上述 if 表達式進行初始比較。例如，假設您提出問題「此清單中未缺少哪些州？」，而不是「哪些州在清單上？」。如果是這樣，那麼編碼可能會不同。您可以將 locate 陳述式與零進行比較，以尋找清單中缺少的值，然後使用 NOT 運算子將它們分類為「未缺失」，如下所示。  

   ```
   /*The if expression:*/      NOT (locate('New York, New Jersey, Connecticut, Vermont, Maine, Rhode Island, New Hampshire',{State}) = 0),
   ```
兩個版本均正確。不論選擇何版本，應該讓編碼易於您和您的團隊理解，從而讓維護程式碼更輕鬆。如果所有選項看起來等效，則建議選擇最簡單的選項。

# in
<a name="in-function"></a>

`in` 會評估表達式是否存在於某個常值清單中。如果清單包含相應表達式，則 in 傳回 true，否則傳回 false。`in` 對於字串類型輸入區分大小寫。

`in` 接受兩種常值清單，一種是手動輸入清單，另一種是[多值參數](https://docs.aws.amazon.com/quicksight/latest/user/parameters-in-quicksight.html)。

## 語法
<a name="in-function-syntax"></a>

使用手動輸入的清單：

```
in(expression, [literal-1, ...])  
```

使用多值參數：

```
in(expression, $multivalue_parameter)
```

## 引數
<a name="in-function-arguments"></a>

 *表達式*   
要與常值清單中的元素進行比較的表達式。它可以是欄位名稱 (如 `address`)、常值 (如 "**Unknown**")、單值參數或對另一個純量函數的呼叫 (前提是該函數不是彙總函數或表計算)。

 *literal list*   
(必要) 這可以是手動輸入的清單或多值參數。此引數最多接受 5,000 個元素。但是，在直接查詢第三方資料來源 (例如 Oracle 或 Teradata) 時，限制可能會更小。  
+ ***手動輸入清單***：包含要與表達式進行比較的一個或多個常值的清單。此清單應括在方括號內。所有要比較的常值必須具有與表達式相同的資料類型。
+ ***多值參數***：作為常值清單傳入的預定義多值參數。此多值參數必須具有與表達式相同的資料類型。


## 傳回類型
<a name="in-function-return-type"></a>

布林值：TRUE/FALSE

## 靜態清單範例
<a name="in-function-example-static-list"></a>

以下範例針對某個字串清單中的值評估 `origin_state_name` 欄位。比較字串類型輸入時，`in` 僅支援區分大小寫的比較。

```
in(origin_state_name,["Georgia", "Ohio", "Texas"])
```

以下是指定欄位的值。

```
"Washington"
        "ohio"
        "Texas"
```

對於這些欄位值，會傳回以下值。

```
false
        false
        true
```

第三個傳回值為 true，因為只有 "Texas" 是包含的值之一。

以下範例針對某個字串清單中的值評估 `fl_date` 欄位。為了與類型相符，使用 `toString` 將日期類型轉換為字串類型。

```
in(toString(fl_date),["2015-05-14","2015-05-15","2015-05-16"])
```

![\[函數範例結果的影像 (以資料表形式顯示)。\]](http://docs.aws.amazon.com/zh_tw/quick/latest/userguide/images/in-function-example-manual-list.png)


與清單中的常值進行比較的表達式引數支援常值和 NULL 值。以下兩個範例都將產生一個新的 TRUE 值資料欄。

```
in("Washington",["Washington","Ohio"])
```

```
in(NULL,[NULL,"Ohio"])
```

## 多值參數的範例
<a name="in-function-example-mutivalue-parameter"></a>

假設某個作者建立了一個[多值參數](https://docs.aws.amazon.com/quicksight/latest/user/parameters-in-quicksight.html)，其中包含所有州名稱的清單。然後該作者新增了一個控制項，以允許讀者從清單中選取值。

接著，有讀者從參數的下拉式清單控制項中選取三個值 "Georgia"、"Ohio" 和 "Texas"。在這種情況下，以下表達式等效於第一個範例，其中三個州名稱作為常值清單傳遞以與 `original_state_name` 欄位進行比較。

```
in (origin_state_name, ${stateName MultivalueParameter})
```

## `ifelse` 的範例
<a name="in-function-example-with-ifelse"></a>

`in` 可以作為布林值以巢狀結構置於其他函數中。一個例子是，作者可以使用 `in` 和 `ifelse` 評估清單中的任何表達式，並傳回他們想要的值。以下範例評估航班的 `dest_state_name` 是否位於特定美國州清單中，並根據比較返回不同的州類別。

```
ifelse(in(dest_state_name,["Washington", "Oregon","California"]), "WestCoastUSState", "Other US State")
```

![\[函數範例結果的影像 (以資料表形式顯示)。\]](http://docs.aws.amazon.com/zh_tw/quick/latest/userguide/images/in-function-with-ifelse.png)


# intToDecimal
<a name="intToDecimal-function"></a>

`intToDecimal` 會將整數值轉換成小數資料類型。

## 語法
<a name="intToDecimal-function-syntax"></a>

```
intToDecimal(integer)
```

## 引數
<a name="intToDecimal-function-arguments"></a>

 *int*   
使用整數資料類型的欄位、**14** 之類的常值，或對輸出整數的另一個函數的呼叫。

## 傳回類型
<a name="intToDecimal-function-return-type"></a>

舊版資料準備體驗中的小數 （固定）。

新資料準備體驗中的小數 （浮點數）。

## 範例
<a name="intToDecimal-function-example"></a>

以下範例會將整數欄位轉換為小數。

```
intToDecimal(price)
```

以下是指定欄位的值。

```
20
892
57
```

對於這些欄位值，會傳回以下值。

```
20.0
892.0
58.0
```

您可以在分析內套用格式，例如將 `price` 格式化為貨幣。

# isNotNull
<a name="isNotNull-function"></a>

`isNotNull` 會評估表達式來查看它是否非 Null。如果表達式不是 Null，`isNotNull` 會傳回 true，否則會傳回 false。

## 語法
<a name="isNotNull-function-syntax"></a>

```
isNotNull(expression)
```

## 引數
<a name="isNotNull-function-arguments"></a>

 *表達式*   
要評估為 Null 或否的表達式。它可以是欄位名稱，例如，**address1**，或是對可輸出字串的另一個函數的呼叫。

## 傳回類型
<a name="isNotNull-function-return-type"></a>

Boolean

## 範例
<a name="isNotNull-function-example"></a>

以下範例會評估 sales\$1amount 欄位是否有 Null 值。

```
isNotNull(salesAmount)
```

以下是指定欄位的值。

```
20.13
(null)
57.54
```

對於這些欄位值，會傳回以下值。

```
true
false
true
```

# isNull
<a name="isNull-function"></a>

`isNull` 會評估表達式來查看它是否為 Null。如果表達式為 Null，`isNull` 會傳回 true，否則會傳回 false。

## 語法
<a name="isNull-function-syntax"></a>

```
isNull(expression)
```

## 引數
<a name="isNull-function-arguments"></a>

 *表達式*   
要評估為 Null 或否的表達式。它可以是欄位名稱，例如，**address1**，或是對可輸出字串的另一個函數的呼叫。

## 傳回類型
<a name="isNull-function-return-type"></a>

Boolean

## 範例
<a name="isNull-function-example"></a>

以下範例會評估 sales\$1amount 欄位是否有 Null 值。

```
isNull(salesAmount)
```

以下是指定欄位的值。

```
20.13
(null)
57.54
```

對於這些欄位值，會傳回以下值。

```
false
true
false
```

以下範例測試 `ifelse` 陳述式中的 NULL 值，並傳回人類可讀的值。

```
ifelse( isNull({ActiveFlag}) , 'Inactive',  'Active') 
```

# isWorkDay
<a name="isWorkDay-function"></a>

`isWorkDay` 會評估指定的日期時間值，以判斷該值是否為工作日。

`isWorkDay` 假設標準的每週工作 5 天，從週一開始到週五結束。週六和週日為週末。此函數永遠以 `DAY` 精細程度計算其結果，並且不包含指定的輸入日期。

## 語法
<a name="isWorkDay-function-syntax"></a>

```
isWorkDay(inputDate)
```

## 引數
<a name="isWorkDay-function-arguments"></a>

 *inputDate*   
您要評估的日期時間值。有效值如下：  
+ 資料集欄位：您要在其中新增此函數的資料集中的任何 `date` 欄位。
+ 日期函數：從另一個 `date` 函數輸出的任何日期，例如 `parseDate`。
+ 計算欄位：傳回`date`值的任何快速計算欄位。
+ 參數：任何快速`DateTime`參數。

## 傳回類型
<a name="isWorkDay-function-return-type"></a>

整數 (`0` 或 `1`)

## 範例
<a name="isWorkDay-function-example"></a>

以下範例判斷 `application_date` 欄位是否為工作日。

假設有一個名為 `application_date` 的欄位，其值如下：

```
2022-08-10 
2022-08-06 
2022-08-07
```

當您使用這些欄位並新增以下計算時，`isWorkDay` 傳回下列值：

```
isWorkDay({application_date})     
                                                     
1
0
0
```

以下範例使用條件格式篩選在工作日離職的員工，並判斷他們入職當天是工作日還是週末：

```
is_start_date_work_day = isWorkDay(employment_start_date)
is_end_date_work_day = isWorkDay(employment_end_date)
```

![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/quick/latest/userguide/images/isWorkDay-example.png)


# Left
<a name="left-function"></a>

`left` 會傳回來自某個字串最左邊的字元，包括空格。您可以指定要傳回的字元數。

## 語法
<a name="left-function-syntax"></a>

```
left(expression, limit)
```

## 引數
<a name="left-function-arguments"></a>

 *表達式*   
表達式必須是字串。它可以是使用字串資料類型的欄位、**'12 Main Street'** 之類的常值，或對輸出字串的另一個函數的呼叫。

 *limit*   
要從 *expression* 傳回的字元數，從字串中的第一個字元開始。

## 傳回類型
<a name="left-function-return-type"></a>

String

## 範例
<a name="left-function-example"></a>

以下範例會傳回字串前 3 個字元。

```
left('Seattle Store #14', 3)
```

會傳回下列值。

```
Sea
```

# Locate
<a name="locate-function"></a>

`locate` 會找到您在另一個字串內指定的子字串，並傳回字元數，直到子字串中的第一個字元為止。如果找不到子字串，函數會傳回 0。該函數從 1 開始。

## 語法
<a name="locate-function-syntax"></a>

```
locate(expression, substring, start)
```

## 引數
<a name="locate-function-arguments"></a>

 *表達式*   
表達式必須是字串。它可以是使用字串資料類型的欄位、**'12 Main Street'** 之類的常值，或對輸出字串的另一個函數的呼叫。

 *substring*   
您要尋找的 *expression* 中的一組字元。該子字串在 *expression* 中可能出現一或多次。

 *start*   
(選用) 如果 *substring* 出現不只一次，請使用 *start* 來識別字串中，函數應該開始尋找子字串的位置。例如，假設您想要找到子字串的第二個範例，並且您認為它一般會發生在前 10 個字元之後。您指定的 *start* 值為 10。應該從 1 開始。

## 傳回類型
<a name="locate-function-return-type"></a>

Integer

## 範例
<a name="locate-function-example"></a>

以下範例會傳回有關字串中第一個出現子字串 'and' 的位置資訊。

```
locate('1 and 2 and 3 and 4', 'and')
```

會傳回下列值。

```
3
```

以下範例會傳回有關字串中第四個字元之後，第一個出現子字串 'and' 的位置資訊。

```
locate('1 and 2 and 3 and 4', 'and', 4)
```

會傳回下列值。

```
9
```

# Log
<a name="log-function"></a>

`log` 會傳回指定運算式之以 10 為底的對數。

## 語法
<a name="log-function-syntax"></a>

```
log(expression)
```

## 引數
<a name="log-function-arguments"></a>

 *表達式*   
表達式必須是數字。它可以是欄位名稱、常值或另一個函數。

# Ln
<a name="ln-function"></a>

`ln` 會傳回指定運算式的自然對數。

## 語法
<a name="ln-function-syntax"></a>

```
ln(expression)
```

## 引數
<a name="ln-function-arguments"></a>

 *表達式*   
表達式必須是數字。它可以是欄位名稱、常值或另一個函數。

# Ltrim
<a name="ltrim-function"></a>

`ltrim` 會從字串移除前面的空白。

## 語法
<a name="ltrim-function-syntax"></a>

```
ltrim(expression)
```

## 引數
<a name="ltrim-function-arguments"></a>

 *表達式*   
表達式必須是字串。它可以是使用字串資料類型的欄位、**'12 Main Street'** 之類的常值，或對輸出字串的另一個函數的呼叫。

## 傳回類型
<a name="ltrim-function-return-type"></a>

String

## 範例
<a name="ltrim-function-example"></a>

下列範例會從字串中移除前述空格。

```
ltrim('   Seattle Store #14')
```

會傳回下列值。

```
Seattle Store #14
```

# Mod
<a name="mod-function"></a>

在以除數除以數字後使用 `mod` 函數找到餘數。您可以交替使用 `mod` 函數或模數運算子 (%)。

## 語法
<a name="mod-function-syntax"></a>

```
mod(number, divisor)
```

```
number%divisor
```

## 引數
<a name="mod-function-arguments"></a>

 *number*   
該數字是您要除以並找到餘數的正整數。

 除數**   
除數是您要用來除的正整數。如果除數為零，則此函數會傳回除以 0 的錯誤。

## 範例
<a name="mod-function-example"></a>

下列範例除以 6 時傳回 17 的模數。第一個範例使用 % 運算子，而第二個範例使用 mod 函數。

```
17%6
```

```
mod( 17, 6 )
```

會傳回下列值。

```
5
```

# netWorkDays
<a name="netWorkDays-function"></a>

`netWorkDays` 傳回提供兩個日期欄位之間的工作天數，甚至是使用其他快速日期函數產生的自訂日期值，例如 `parseDate`或 `epochDate`作為整數。

`netWorkDays` 假設標準的每週工作 5 天，從週一開始到週五結束。週六和週日為週末。此計算包含 `startDate` 和 `endDate`。此函數以天精細程度執行並顯示結果。

## 語法
<a name="netWorkDays-function-syntax"></a>

```
netWorkDays(startDate, endDate)
```

## 引數
<a name="netWorkDays-function-arguments"></a>

 *startDate*   
充當計算開始日期的有效非 NULL 日期。  
+ 資料集欄位：您要在其中新增此函數的資料集中的任何 `date` 欄位。
+ 日期函數：從另一個 `date` 函數輸出的任何日期，例如 `parseDate`。
+ 計算欄位：傳回`date`值的任何快速計算欄位。
+ 參數：任何快速`DateTime`參數。
+ 上述引數值的任意組合。

 *endDate*   
充當計算結束日期的有效非 NULL 日期。  
+ 資料集欄位：您要在其中新增此函數的資料集中的任何 `date` 欄位。
+ 日期函數：從另一個 `date` 函數輸出的任何日期，例如 `parseDate`。
+ 計算欄位：傳回`date`值的任何快速計算欄位。
+ 參數：任何快速`DateTime`參數。
+ 上述引數值的任意組合。

## 傳回類型
<a name="netWorkDays-function-return-type"></a>

Integer 

## 輸出值
<a name="netWorkDays-function-output-type"></a>

預期輸出值包括：
+ 正整數 (當 start\$1date < end\$1date 時)
+ 負整數 (當 start\$1date > end\$1date 時)
+ 當一個或兩個引數從 `dataset field` 取得 null 值時為 NULL。

## 範例
<a name="netWorkDays-function-example"></a>

以下範例傳回兩個日期之間的工作天數。

假設有一個名為 `application_date` 的欄位，其值如下：

```
netWorkDays({startDate}, {endDate})
```

以下是指定欄位的值。

```
startDate	endDate	netWorkDays
        9/4/2022	9/11/2022	5
        9/9/2022	9/2/2022	-6
        9/10/2022	9/11/2022	0
        9/12/2022	9/12/2022	1
```

以下範例計算每位員工的工作天數，以及每位員工的每天平均工資：

```
days_worked = netWorkDays({employment_start_date}, {employment_end_date})
        salary_per_day = {salary}/{days_worked}
```

以下範例使用條件格式篩選在工作日離職的員工，並判斷他們入職當天是工作日還是週末：

```
is_start_date_work_day = netWorkDays(employment_start_date)
        is_end_date_work_day = netWorkDays(employment_end_date)
```

![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/quick/latest/userguide/images/netWorkDays-function-example.png)


# Now
<a name="now-function"></a>

對於直接查詢資料庫的資料庫的資料集，`now` 會使用資料庫伺服器指定的設定和格式，傳回目前的日期和時間。針對 SPICE 和 Salesforce 資料集，`now` 會以 `yyyy-MM-ddTkk:mm:ss:SSSZ` 的格式傳回 UTC 日期和時間 (例如，2015-10-15T19:11:51:003Z)。

## 語法
<a name="now-function-syntax"></a>

```
now()
```

## 傳回類型
<a name="now-function-return-type"></a>

Date

# notIn
<a name="notIn-function"></a>

`notIn` 會評估表達式是否存在於某個常值清單中。如果清單不包含相應表達式，則 `notIn` 傳回 true，否則傳回 false。`notIn` 對於字串類型輸入區分大小寫。

`notIn` 接受兩種常值清單，一種是手動輸入清單，另一種是[多值參數](https://docs.aws.amazon.com/quicksight/latest/user/parameters-in-quicksight.html)。

## 語法
<a name="notIn-function-syntax"></a>

使用手動輸入的清單：

```
notIn(expression, [literal-1, ...])  
```

使用多值參數：

```
notIn(expression, $multivalue_parameter)
```

## 引數
<a name="notIn-function-arguments"></a>

 *表達式*   
要與常值清單中的元素進行比較的表達式。它可以是欄位名稱 (如 `address`)、常值 (如 "**Unknown**")、單值參數或對另一個純量函數的呼叫 (前提是該函數不是彙總函數或表計算)。

 *literal list*   
(必要) 這可以是手動輸入的清單或多值參數。此引數最多接受 5,000 個元素。但是，在直接查詢第三方資料來源 (例如 Oracle 或 Teradata) 時，限制可能會更小。  
+ ***手動輸入清單***：包含要與表達式進行比較的一個或多個常值的清單。此清單應括在方括號內。所有要比較的常值必須具有與表達式相同的資料類型。
+ ***多值參數***：作為常值清單傳入的預定義多值參數。此多值參數必須具有與表達式相同的資料類型。


## 傳回類型
<a name="notIn-function-return-type"></a>

布林值：TRUE/FALSE

## 手動輸入清單的範例
<a name="notIn-function-example-manual-list"></a>

以下範例針對某個字串清單中的值評估 `origin_state_name` 欄位。比較字串類型輸入時，`notIn` 僅支援區分大小寫的比較。

```
notIn(origin_state_name,["Georgia", "Ohio", "Texas"])
```

以下是指定欄位的值。

```
"Washington"
        "ohio"
        "Texas"
```

對於這些欄位值，會傳回以下值。

```
true
        true
        false
```

第三個傳回值為 false，因為只有 "Texas" 是排除的值之一。

以下範例針對某個字串清單中的值評估 `fl_date` 欄位。為了與類型相符，使用 `toString` 將日期類型轉換為字串類型。

```
notIn(toString(fl_date),["2015-05-14","2015-05-15","2015-05-16"])
```

![\[函數範例結果的影像 (以資料表形式顯示)。\]](http://docs.aws.amazon.com/zh_tw/quick/latest/userguide/images/notin-function-example-manual-list.png)


與清單中的常值進行比較的表達式引數支援常值和 NULL 值。以下兩個範例都將產生一個新的 FALSE 值資料欄。

```
notIn("Washington",["Washington","Ohio"])
```

```
notIn(NULL,[NULL,"Ohio"])
```

## 多值參數的範例
<a name="notIn-function-example-mutivalue-parameter"></a>

假設某個作者建立了一個[多值參數](https://docs.aws.amazon.com/quicksight/latest/user/parameters-in-quicksight.html)，其中包含所有州名稱的清單。然後該作者新增了一個控制項，以允許讀者從清單中選取值。

接著，有讀者從參數的下拉式清單控制項中選取三個值 "Georgia"、"Ohio" 和 "Texas"。在這種情況下，以下表達式等效於第一個範例，其中三個州名稱作為常值清單傳遞以與 `original_state_name` 欄位進行比較。

```
notIn (origin_state_name, ${stateName MultivalueParameter})
```

## `ifelse` 的範例
<a name="notIn-function-example-with-ifelse"></a>

`notIn` 可以作為布林值以巢狀結構置於其他函數中。一個例子是，作者可以使用 `notIn` 和 `ifelse` 評估清單中的任何表達式，並傳回他們想要的值。以下範例評估航班的 `dest_state_name` 是否位於特定美國州清單中，並根據比較返回不同的州類別。

```
ifelse(notIn(dest_state_name,["Washington", "Oregon","California"]), "notWestCoastUSState", "WestCoastUSState")
```

![\[函數範例結果的影像 (以資料表形式顯示)。\]](http://docs.aws.amazon.com/zh_tw/quick/latest/userguide/images/notin-function-with-ifelse.png)


# nullIf
<a name="nullIf-function"></a>

`nullIf` 會比較兩個表達式。如果它們相等，則函數會傳回 Null。如果它們值不相等，則函數會傳回第一個表達式。

## 語法
<a name="nullIf-function-syntax"></a>

```
nullIf(expression1, expression2)
```

## 引數
<a name="nullIf-function-arguments"></a>

`nullIf` 需要兩個表達式做為引數。

 *表達式*   
表達式可以是數字、日期時間或字串。它可以是欄位名稱、常值或另一個函數。

## 傳回類型
<a name="nullIf-function-return-type"></a>

String

## 範例
<a name="nullIf-function-example"></a>

以下範例會在交貨延遲的原因不明時傳回 Null。

```
nullIf(delayReason, 'unknown')
```

以下是指定欄位的值。

```
delayReason
============
unknown         
back ordered 
weather delay
```

對於這些欄位值，會傳回以下值。

```
(null)
back ordered 
weather delay
```

# parseDate
<a name="parseDate-function"></a>

`parseDate` 會剖析字串，以判斷它是否包含日期值，而且會傳回標準日期，採用格式 `yyyy-MM-ddTkk:mm:ss.SSSZ` (使用 Joda 專案文件的 [類別 DateTimeFormat](http://www.joda.org/joda-time/apidocs/org/joda/time/format/DateTimeFormat.html) 中指定的格式模式語法)，例如 2015-10-15T19:11:51.003Z。此函數會傳回所有包含有效格式日期的列，並略過所有不包含的列，包括含 Null 值的列。

快速支援 1900 年 1 月 1 日至 2037 年 12 月 31 日 23：59：59 UTC 範圍內的日期。如需詳細資訊，請參閱[支援的日期格式](https://docs.aws.amazon.com/quicksight/latest/user/supported-date-formats.html)。

## 語法
<a name="parseDate-function-syntax"></a>

```
parseDate(expression, ['format'])
```

## 引數
<a name="parseDate-function-arguments"></a>

 *表達式*   
表達式必須是字串。它可以是使用字串資料類型的欄位、**'1/1/2016'** 之類的常值，或對輸出字串的另一個函數的呼叫。

 *format*   
(選用) 包含 *date\$1string* 必須符合的格式模式字串。例如，如果您使用具有 **01/03/2016** 之類資料的欄位，您可以指定格式 'MM/dd/yyyy'。如果您不指定格式，則會預設為 `yyyy-MM-dd`。會略過資料不符合 *format* 的資料列。  
根據使用的資料集類型，支援不同的日期格式。使用以下表格來查看支援的日期格式的詳細資訊。    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/quick/latest/userguide/parseDate-function.html)

## 傳回類型
<a name="parseDate-function-return-type"></a>

Date

## 範例
<a name="parseDate-function-example"></a>

以下範例會評估 `prodDate` 來判斷它是否包含日期值。

```
parseDate(prodDate, 'MM/dd/yyyy')
```

以下是指定欄位的值。

```
prodDate
--------
01-01-1999
12/31/2006
1/18/1982 
7/4/2010
```

對於這些欄位值，會傳回以下資料列。

```
12-31-2006T00:00:00.000Z
01-18-1982T00:00:00.000Z
07-04-2010T00:00:00.000Z
```

# parseDecimal
<a name="parseDecimal-function"></a>

`parseDecimal` 會剖析字串以判斷其是否包含小數值。此函數會傳回包含小數、整數或 Null 值的所有資料列，並略過未包含的任何資料列。如果資料列包含整數值，則會以最多 4 位小數的形式傳回。例如，'2' 的值會以 '2.0' 形式傳回。

## 語法
<a name="parseDecimal-function-syntax"></a>

```
parseDecimal(expression)
```

## 引數
<a name="parseDecimal-function-arguments"></a>

 *表達式*   
表達式必須是字串。它可以是使用字串資料類型的欄位、**'9.62'** 之類的常值，或對輸出字串的另一個函數的呼叫。

## 傳回類型
<a name="parseDecimal-function-return-type"></a>

舊版資料準備體驗中的小數 （固定）。

新資料準備體驗中的小數 （浮點數）。

## 範例
<a name="parseDecimal-function-example"></a>

以下範例會評估 `fee` 來判斷它是否包含小數值。

```
parseDecimal(fee)
```

以下是指定欄位的值。

```
fee
--------
2
2a
12.13
3b
3.9
(null)
198.353398
```

對於這些欄位值，會傳回以下資料列。

```
2.0
12.13
3.9
(null)
198.3533
```

# parseInt
<a name="parseInt-function"></a>

`parseInt` 會剖析字串以判斷其是否包含整數值。此函數會傳回包含小數、整數或 Null 值的所有資料列，並略過未包含的任何資料列。如果資料列包含小數值，則會以最接近的整數形式傳回，無條件捨去。例如，'2.99' 的值會以 '2' 形式傳回。

## 語法
<a name="parseInt-function-syntax"></a>

```
parseInt(expression)
```

## 引數
<a name="parseInt-function-arguments"></a>

 *表達式*   
表達式必須是字串。它可以是使用字串資料類型的欄位、**'3'** 之類的常值，或對輸出字串的另一個函數的呼叫。

## 傳回類型
<a name="parseInt-function-return-type"></a>

Integer

## 範例
<a name="parseInt-function-example"></a>

以下範例會評估 `feeType` 來判斷它是否包含整數值。

```
parseInt(feeType)
```

以下是指定欄位的值。

```
feeType
--------
2
2.1
2a
3
3b
(null)
5
```

對於這些欄位值，會傳回以下資料列。

```
2
2
3
(null)
5
```

# parseJson
<a name="parseJson-function"></a>

使用 `parseJson` 從 JSON 物件擷取值。

如果您的資料集存放在快速 中SPICE，您可以在準備資料集`parseJson`時使用 ，但不能在分析期間的計算欄位中使用。

對於直接查詢，您可以同時對資料準備和分析使用 `parseJson`。如下表所示，取決於方言，`parseJson` 函數會套用至字串或 JSON 原生資料類型。


| 方言 | Type | 
| --- | --- | 
| PostgreSQL | JSON | 
| Amazon Redshift | String | 
| Microsoft SQL Server | String | 
| MySQL | JSON | 
| Teradata | JSON | 
| Oracle | String | 
| Presto | String | 
| Snowflake | 半結構化的資料類型物件和陣列 | 
| Hive | String | 

## 語法
<a name="parseJson-function-syntax"></a>

```
parseJson(fieldName, path)
```

## 引數
<a name="parseJson-function-arguments"></a>

 *fieldName*   
包含您希望剖析的 JSON 物件的欄位。

 *路徑*   
您想要從 JSON 物件剖析的資料元素的路徑。路徑引數中僅支援字母、數字與空格。有效路徑的語法包括：  
+ *\$1*：根物件
+ *.*：子運算子
+ *[ ]*：陣列的下標運算子

## 傳回類型
<a name="parseJson-function-return-type"></a>

String

## 範例
<a name="parseJson-function-example-query"></a>

以下範例會評估傳入的 JSON 以擷取項目數量的值。透過使用此資料準備，您可以從 JSON 建立資料表。

```
parseJson({jsonField}, “$.items.qty”)
```

以下顯示 JSON。

```
{
    "customer": "John Doe",
    "items": {
        "product": "Beer",
        "qty": 6
    },
    "list1": [
        "val1",
        "val2"
    ],
    "list2": [
        {
            "list21key1": "list1value1"
        }
    ]
}
```

針對此範例，會傳回下列值。

```
6
```

## 範例
<a name="parseJson-function-example"></a>

以下範例會評估 `JSONObject1` 來擷取標籤為 `"State"` 的第一個金鑰值組 (KVP)，並將值指派到您要建立的評估欄位。

```
parseJson(JSONObject1, “$.state”)
```

以下是指定欄位的值。

```
JSONObject1
-----------
{"State":"New York","Product":"Produce","Date Sold":"1/16/2018","Sales Amount":"$3423.39"}
{"State":"North Carolina","Product":"Bakery Products","Date Sold":"2/1/2018","Sales Amount":"$3226.42"}
{"State":"Utah","Product":"Water","Date Sold":"4/24/2018","Sales Amount":"$7001.52"}
```

對於這些欄位值，會傳回以下資料列。

```
New York
North Carolina
Utah
```

# Replace
<a name="replace-function"></a>

`replace` 會以您指定的另一個字串取代字串的一部分。

## 語法
<a name="replace-function-syntax"></a>

```
replace(expression, substring, replacement)
```

## 引數
<a name="replace-function-arguments"></a>

 *表達式*   
表達式必須是字串。它可以是使用字串資料類型的欄位、**'12 Main Street'** 之類的常值，或對輸出字串的另一個函數的呼叫。

 *substring*   
您要取代的 *expression* 中的一組字元。該子字串在 *expression* 中可能出現一或多次。

 *replacement*   
您想要對 *substring* 替換的字串。

## 傳回類型
<a name="replace-function-return-type"></a>

String

## 範例
<a name="replace-function-example"></a>

以下範例會以 'or' 取代子字串 'and'。

```
replace('1 and 2 and 3', 'and', 'or')
```

會傳回下列字串。

```
1 or 2 or 3
```

# Right
<a name="right-function"></a>

`right` 會傳回來自某個字串最右邊的字元，包括空格。您可以指定要傳回的字元數。

## 語法
<a name="right-function-syntax"></a>

```
right(expression, limit)
```

## 引數
<a name="right-function-arguments"></a>

 *表達式*   
表達式必須是字串。它可以是使用字串資料類型的欄位、**'12 Main Street'** 之類的常值，或對輸出字串的另一個函數的呼叫。

 *limit*   
要從 *expression* 傳回的字元數，從字串中的最後一個字元開始。

## 傳回類型
<a name="right-function-return-type"></a>

String

## 範例
<a name="right-function-example"></a>

以下範例會傳回來自字串的最後五個字元。

```
right('Seattle Store#14', 12)
```

會傳回下列值。

```
tle Store#14
```

# Round
<a name="round-function"></a>

如果未指定比例，`round` 會將小數值四捨五入至最接近的整數，或如果有指定比例，則到最接近的小數位數。

## 語法
<a name="round-function-syntax"></a>

```
round(decimal, scale)
```

## 引數
<a name="round-function-arguments"></a>

 *decimal*   
使用小數資料類型的欄位、**17.62** 之類的常值，或對輸出小數的另一個函數的呼叫。

 *scale*   
要用於傳回值的小數位數。

## 傳回類型
<a name="round-function-return-type"></a>


| 運算元 | 舊版資料準備體驗中的傳回類型 | 新資料準備體驗中的傳回類型 | 
| --- | --- | --- | 
|  INT  |  DECIMAL（已修正）  |  DECIMAL（已修正）  | 
|  DECIMAL（已修正）  |  DECIMAL（已修正）  |  DECIMAL（已修正）  | 
|  DECIMAL(FLOAT)  |  DECIMAL（已修正）  |  DECIMAL(FLOAT)  | 

## 範例
<a name="round-function-example"></a>

以下範例會將小數欄位四捨五入到最接近的第二個小數位數。

```
round(salesAmount, 2)
```

以下是指定欄位的值。

```
20.1307
892.0388
57.5447
```

對於這些欄位值，會傳回以下值。

```
20.13
892.04
58.54
```

# Rtrim
<a name="rtrim-function"></a>

`rtrim` 會從字串移除後面的空白。

## 語法
<a name="rtrim-function-syntax"></a>

```
rtrim(expression)
```

## 引數
<a name="rtrim-function-arguments"></a>

 *表達式*   
表達式必須是字串。它可以是使用字串資料類型的欄位、**'12 Main Street'** 之類的常值，或對輸出字串的另一個函數的呼叫。

## 傳回類型
<a name="rtrim-function-return-type"></a>

String

## 範例
<a name="rtrim-function-example"></a>

下列範例會從字串中移除後面的空格。

```
rtrim('Seattle Store #14   ')
```

對於這些欄位值，會傳回以下值。

```
Seattle Store #14
```

# Split
<a name="split-function"></a>

`split` 會根據您選擇的分隔符號將字串分割成子字串的陣列，並傳回位置指定的項目。

您僅可在資料準備時將 `split` 新增至計算欄位，而非新增至分析。Microsoft SQL Server 的直接查詢不支援此函數。

## 語法
<a name="split-function-syntax"></a>

```
split(expression, delimiter , position)
```

## 引數
<a name="split-function-arguments"></a>

 *表達式*   
表達式必須是字串。它可以是使用字串資料類型的欄位、**'12 Main Street;1402 35th Ave;1818 Elm Ct;11 Janes Lane'** 之類的常值，或對輸出字串的另一個函數的呼叫。

 *delimiter*   
將字串劃分成子字串的分隔符號字元。例如，`split('one|two|three', '|', 2)` 會變成下列。  

```
one
two
three
```
如果選擇 `position = 2`，`split` 會傳回 `'two'`。

 *position*   
(必要) 要從陣列傳回的項目位置。陣列中第一個項目的位置為 1。

## 傳回類型
<a name="split-function-return-type"></a>

字串陣列

## 範例
<a name="split-function-example"></a>

以下範例會將字串分割為陣列，使用分號字元 (;) 做為分隔符號，並傳回陣列的第三個元素。

```
split('123 Test St;1402 35th Ave;1818 Elm Ct;11 Janes Lane', ';', 3)
```

會傳回下列項目。

```
1818 Elm Ct
```

此函數會略過包含 Null 值或空白字串的項目。

# Sqrt
<a name="sqrt-function"></a>

`sqrt` 會傳回指定運算式的平方根。

## 語法
<a name="sqrt-function-syntax"></a>

```
sqrt(expression)
```

## 引數
<a name="sqrt-function-arguments"></a>

 *表達式*   
表達式必須是數字。它可以是欄位名稱、常值或另一個函數。

# startsWith
<a name="startsWith-function"></a>

`startsWith` 會評估表達式是否以您指定的子字串開頭。如果表達式以相應子字符串開頭，則 `startsWith` 會返回 true，否則會返回 false。

## 語法
<a name="startsWith-function-syntax"></a>

```
startsWith(expression, substring, string-comparison-mode)
```

## 引數
<a name="startsWith-function-arguments"></a>

 *表達式*   
表達式必須是字串。它可以是使用字串資料類型的欄位、**'12 Main Street'** 之類的常值，或對輸出字串的另一個函數的呼叫。

 *substring*   
要針對表達式**檢查的字元集。該子字串在表達式**中可能出現一或多次。

 字串比較模式**   
(選用) 指定要使用的字串比較模式：  
+ `CASE_SENSITIVE`：字串比較區分大小寫。
+ `CASE_INSENSITIVE`：字串比較不區分大小寫。
空白時此值會預設為 `CASE_SENSITIVE`。

## 傳回類型
<a name="startsWith-function-return-type"></a>

Boolean

## 範例
<a name="startsWith-function-example"></a>

### 預設區分大小寫的範例
<a name="startsWith-function-example-default-case-sensitive"></a>

以下區分大小寫的範例評估 `state_nm` 是否以 **New** 開頭。

```
startsWith(state_nm, "New")
```

以下是指定欄位的值。

```
New York
new york
```

對於這些欄位值，會傳回以下值。

```
true
false
```

### 不區分大小寫的範例
<a name="startsWith-function-example-case-insensitive"></a>

以下不區分大小寫的範例評估 `state_nm` 是否以 **new** 開頭。

```
startsWith(state_nm, "new", CASE_INSENSITIVE)
```

以下是指定欄位的值。

```
New York
new york
```

對於這些欄位值，會傳回以下值。

```
true
true
```

### 條件陳述式範例
<a name="startsWith-function-example-conditional-statements"></a>

`startsWith` 函數可用作以下 If 函數中的條件陳述式：[avgIf](https://docs.aws.amazon.com/quicksight/latest/user/avgIf-function.html)、[minIf](https://docs.aws.amazon.com/quicksight/latest/user/minIf-function.html)、[distinct\$1countIf](https://docs.aws.amazon.com/quicksight/latest/user/distinct_countIf-function.html)、[countIf](https://docs.aws.amazon.com/quicksight/latest/user/countIf-function.html)、[maxIf](https://docs.aws.amazon.com/quicksight/latest/user/maxIf-function.html)、[medianIf](https://docs.aws.amazon.com/quicksight/latest/user/medianIf-function.html)、[stdevIf](https://docs.aws.amazon.com/quicksight/latest/user/stdevIf-function.html)、[stdevpIf](https://docs.aws.amazon.com/quicksight/latest/user/stdevpIf-function.html)、[sumIf](https://docs.aws.amazon.com/quicksight/latest/user/sumIf-function.html)、[varIf](https://docs.aws.amazon.com/quicksight/latest/user/varIf-function.html) 和 [varpIf](https://docs.aws.amazon.com/quicksight/latest/user/varpIf-function.html)。

以下範例僅當 state\$1nm 以 **New** 開頭時才對 `Sales` 求和。

```
sumIf(Sales,startsWith(state_nm, "New"))
```

### 不包含範例
<a name="startsWith-function-example-does-not-start-with"></a>

條件 `NOT` 運算子可用來評估表達式是否以指定的子字串開頭。

```
NOT(startsWith(state_nm, "New"))
```

### 使用數值的範例
<a name="startsWith-function-example-numeric-values"></a>

透過套用 `toString` 函數，可以在表達式或子字串引數中使用數值。

```
startsWith(state_nm, toString(5) )
```

# Strlen
<a name="strlen-function"></a>

`strlen` 傳回字串中的字元數，包括空格。

## 語法
<a name="strlen-function-syntax"></a>

```
strlen(expression)
```

## 引數
<a name="strlen-function-arguments"></a>

 *表達式*   
表達式可以是使用 **address1** 之類字串資料類型的欄位、**'Unknown'** 之類的常值，或 `substring(field_name,0,5)` 之類的另一個函數。

## 傳回類型
<a name="strlen-function-return-type"></a>

Integer

## 範例
<a name="strlen-function-example"></a>

下列範例會傳回指定字串的長度。

```
strlen('1421 Main Street')
```

會傳回下列值。

```
16
```

# Substring
<a name="substring-function"></a>

`substring` 會傳回字串中的字元，由 *start* 引數指定的位置開始，直到 *length* 引數指定的字元數為止。

## 語法
<a name="substring-function-syntax"></a>

```
substring(expression, start, length)
```

## 引數
<a name="substring-function-arguments"></a>

 *表達式*   
表達式可以是使用 **address1** 之類字串資料類型的欄位、**'Unknown'** 之類的常值，或 `substring(field_name,1,5)` 之類的另一個函數。

 *start*   
要開始的字元位置。*start* 為包含，因此開始位置的字元為傳回值中的第一個字元。*start* 的最小值為 1。

 *長度*   
要併入在 *start* 後的額外字元數量。*length* 包含 *start*，因此，在開始字元之後傳回的最後一個字元是 (*length* - 1)。

## 傳回類型
<a name="substring-function-return-type"></a>

String

## 範例
<a name="substring-function-example"></a>

以下範例會傳回字串中的第 13 個到第 19 個字元。字串開頭的索引 1，因此從第一個字元開始計數。

```
substring('Fantasy and Science Fiction',13,7)
```

會傳回下列值。

```
Science
```

# switch
<a name="switch-function"></a>

`switch` 將 *condition-expression* 與在一組常值標籤和 *return-expression* 對中的常值標籤進行比較。然後，它會傳回與等於 *condition-expression* 的第一個常值標籤相對應的 *return-expression*。如果沒有標籤等於 *condition-expression*，則 `switch` 傳回 *default-expression*。每個 *return-expression* 和 *default-expression* 必須具有相同的資料類型。

## 語法
<a name="switch-function-syntax"></a>

```
switch(condition-expression, label-1, return-expression-1 [, label-n, return-expression-n ...], 
        default-expression)
```

## 引數
<a name="switch-function-arguments"></a>

`switch` 需要一或多個 *if* 和 *then* 表達式配對，加上 *else* 引數的正好一個表達式。

 *condition-expression*   
要與標籤常值進行比較的表達式。它可以是 `address` 之類的欄位名稱、`Unknown` 之類的常值，或 `toString(salesAmount)` 之類的純量函數。

 *label*   
要與 *condition-expression* 引數進行比較的常值，所有常值必須具有與 *condition-expression* 引數相同的資料類型。`switch` 最多可接受 5,000 個標籤。

 *return-expression*   
標籤值等於 *condition-expression* 的值傳回的表達式。它可以是 `address` 之類的欄位名稱、`Unknown` 之類的常值，或 `toString(salesAmount)` 之類的純量函數。所有 *return-expression* 引數必須與 *default-expression* 具有相同的資料類型。

 *default-expression*   
沒有任何標籤引數的值等於 *condition-expression* 的值時傳回的表達式。它可以是 `address` 之類的欄位名稱、`Unknown` 之類的常值，或 `toString(salesAmount)` 之類的純量函數。所有 *default-expression* 必須與 *default-expression* 的所有引數具有相同的資料類型。

## 傳回類型
<a name="switch-function-return-type"></a>

`switch` 會傳回與 *return-expression* 中的值具有相同資料類型的值。從 *return-expression* 和 *default-expression* 表達式傳回的所有資料必須具有相同的資料類型或轉換為相同的資料類型。

## 一般範例
<a name="switch-function-example"></a>

下列範例會傳回輸入區域名稱的 AWS 區域 程式碼。

```
switch(region_name, 
               "US East (N. Virginia)", "us-east-1", 
               "Europe (Ireland)", "eu-west-1", 
               "US West (N. California)", "us-west-1", 
               "other regions")
```

以下是指定欄位的值。

```
"US East (N. Virginia)"
        "US West (N. California)"
        "Asia Pacific (Tokyo)"
```

對於這些欄位值，會傳回以下值。

```
"us-east-1"
        "us-west-1"
        "other regions"
```

## 使用 switch 取代 `ifelse`
<a name="switch-instead-of-ifelse"></a>

以下 `ifelse` 使用案例與前面的範例等效，相較於使用 `ifelse` 評估一個欄位的值是否等於不同的常值，使用 `switch` 是更好的選擇。

```
ifelse(region_name = "US East (N. Virginia)", "us-east-1", 
               region_name = "Europe (Ireland)", "eu-west-1", 
               region_name = "US West (N. California)", "us-west-1", 
               "other regions")
```

## 表達式作為傳回值
<a name="switch-expression-as-return-value"></a>

以下範例在 *return-expressions* 中使用表達式：

```
switch({origin_city_name}, 
               "Albany, NY", {arr_delay} + 20, 
               "Alexandria, LA", {arr_delay} - 10,
               "New York, NY", {arr_delay} * 2, 
               {arr_delay})
```

前面的範例變更了來自特定城市的每個航班的預期延誤時間。

![\[函數範例結果的影像 (以資料表形式顯示)。\]](http://docs.aws.amazon.com/zh_tw/quick/latest/userguide/images/switch-function-example.png)


# toLower
<a name="toLower-function"></a>

`toLower` 會將字串格式設為全部小寫。`toLower` 會略過含 Null 值的列。

## 語法
<a name="toLower-function-syntax"></a>

```
toLower(expression)
```

## 引數
<a name="toLower-function-arguments"></a>

 *表達式*   
表達式必須是字串。它可以是使用字串資料類型的欄位、**'12 Main Street'** 之類的常值，或對輸出字串的另一個函數的呼叫。

## 傳回類型
<a name="toLower-function-return-type"></a>

String

## 範例
<a name="toLower-function-example"></a>

下列範例會將字串值轉換為小寫。

```
toLower('Seattle Store #14')
```

會傳回下列值。

```
seattle store #14
```

# toString
<a name="toString-function"></a>

`toString` 會將輸入表達式格式化為字串。`toString` 會略過含 Null 值的資料列。

## 語法
<a name="toString-function-syntax"></a>

```
toString(expression)
```

## 引數
<a name="toString-function-arguments"></a>

 *表達式*   
 表達式可以是任何資料類型的欄位、**14.62** 之類的常值，或是對會傳回任何資料類型的另一個函數的呼叫。

## 傳回類型
<a name="toString-function-return-type"></a>

String

## 範例
<a name="toString-function-example"></a>

以下範例會將 `payDate` 的值 (其使用 `date` 資料類型) 以字串形式傳回。

```
toString(payDate)
```

以下是指定欄位的值。

```
payDate
--------
1992-11-14T00:00:00.000Z
2012-10-12T00:00:00.000Z
1973-04-08T00:00:00.000Z
```

對於這些欄位值，會傳回以下資料列。

```
1992-11-14T00:00:00.000Z
2012-10-12T00:00:00.000Z
1973-04-08T00:00:00.000Z
```

# toUpper
<a name="toUpper-function"></a>

`toUpper` 會將字串格式設為全部大寫。`toUpper` 會略過含 Null 值的資料列。

## 語法
<a name="toUpper-function-syntax"></a>

```
toUpper(expression)
```

## 引數
<a name="toUpper-function-arguments"></a>

 *表達式*   
表達式必須是字串。它可以是使用字串資料類型的欄位、**'12 Main Street'** 之類的常值，或對輸出字串的另一個函數的呼叫。

## 傳回類型
<a name="toUpper-function-return-type"></a>

String

## 範例
<a name="toUpper-function-example"></a>

下列範例會將字串值轉換為大寫。

```
toUpper('Seattle Store #14')
```

會傳回下列值。

```
SEATTLE STORE #14
```

# trim
<a name="trim-function"></a>

`trim` 會從字串同時移除前面和後面的空白。

## 語法
<a name="trim-function-syntax"></a>

```
trim(expression)
```

## 引數
<a name="trim-function-arguments"></a>

 *表達式*   
表達式必須是字串。它可以是使用字串資料類型的欄位、**'12 Main Street'** 之類的常值，或對輸出字串的另一個函數的呼叫。

## 傳回類型
<a name="trim-function-return-type"></a>

String

## 範例
<a name="trim-function-example"></a>

下列範例會從字串中移除後面的空格。

```
trim('   Seattle Store #14   ')
```

對於這些欄位值，會傳回以下值。

```
Seattle Store #14
```

# truncDate
<a name="truncDate-function"></a>

`truncDate` 會傳回代表日期指定部分的日期值。例如，請求值 2012-09-02T00:00:00.000Z 的年份部分會傳回 2012-01-01T00:00:00.000Z。指定未包含時間資訊之日期的時間相關期間，會傳回保持不變的初始日期值。

## 語法
<a name="truncDate-function-syntax"></a>

```
truncDate('period', date)
```

## 引數
<a name="truncDate-function-arguments"></a>

 *period*   
您想要傳回之日期的期間。有效的期間如下：  
+ YYYY：這會傳回日期的年份部分。
+ Q：這會傳回日期所屬的季別第一天的日期。
+ MM：這會傳回日期的月份部分。
+ DD：這會傳回日期的日部分。
+ WK：這會傳回日期的週部分。本週從 Amazon Quick 的星期日開始。
+ HH：這會傳回日期的小時部分。
+ MI：這會傳回日期的分鐘部分。
+ SS：這會傳回日期的秒部分。
+ MS：這會傳回日期的毫秒部分。

 *date*   
日期欄位或對輸出日期的另一個函數的呼叫。

## 傳回類型
<a name="truncDate-function-return-type"></a>

Date

## 範例
<a name="truncDate-function-example"></a>

下列範例會傳回代表訂單日期月份的日期。

```
truncDate('MM', orderDate)
```

以下是指定欄位的值。

```
orderDate      
=========
2012-12-14T00:00:00.000Z  
2013-12-29T00:00:00.000Z
2012-11-15T00:00:00.000Z
```

對於這些欄位值，會傳回以下值。

```
2012-12-01T00:00:00.000Z
2013-12-01T00:00:00.000Z
2012-11-01T00:00:00.000Z
```