

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

# 將資料集參數插入自訂 SQL
<a name="dataset-parameters-insert-parameter"></a>

透過在 SQL 陳述式中使用 `<<$parameter_name>>` 引用資料集，可以在直接查詢模式下將資料集參數插入到資料集的自訂 SQL 中。在執行期，儀表板使用者可以輸入與資料集參數關聯的篩選控制項值。然後，當值傳播到 SQL 查詢之後，即可在儀表板視覺效果中看到結果。您可以使用參數，根據 `where` 子句中的客戶輸入建立基本篩選器。也可以新增 `case when` 或 `if else` 子句，根據參數的輸入動態變更 SQL 查詢的邏輯。

例如，假設您想要在自訂 SQL 中新增 `WHERE` 子句，以根據最終使用者的區域名稱篩選資料。在這種情況下，可以建立名為 `RegionName` 的單值參數：

```
SELECT *
FROM transactions
WHERE region = <<$RegionName>>
```

也可以讓使用者為參數提供多個值：

```
SELECT *
FROM transactions
WHERE region in (<<$RegionNames>>)
```

在下列更複雜的範例中，資料集作者會根據可在儀表板篩選控制項中選取的使用者名字和姓氏，引用兩個資料集參數兩次：

```
SELECT Region, Country, OrderDate, Sales
FROM transactions
WHERE region=
(Case
WHEN <<$UserFIRSTNAME>> In 
    (select firstname from user where region='region1') 
    and <<$UserLASTNAME>> In 
    (select lastname from user where region='region1') 
    THEN 'region1'
WHEN <<$UserFIRSTNAME>> In 
    (select firstname from user where region='region2') 
    and <<$UserLASTNAME>> In 
    (select lastname from user where region='region2') 
    THEN 'region2'
ELSE 'region3'
END)
```

您也可以使用 `SELECT` 子句中的參數，在使用者輸入的資料集中建立新資料欄：

```
SELECT Region, Country, date, 
    (case 
    WHEN <<$RegionName>>='EU'
    THEN sum(sales) * 0.93   --convert US dollar to euro
    WHEN <<$RegionName>>='CAN'
    THEN sum(sales) * 0.78   --convert US dollar to Canadian Dollar
    ELSE sum(sales) -- US dollar
    END
    ) as "Sales"
FROM transactions
WHERE region = <<$RegionName>>
```

若要在新增資料集參數之前建立自訂 SQL 查詢或編輯現有查詢，請參閱 [使用 SQL 自訂資料](adding-a-SQL-query.md)。

當您套用具有資料集參數的自訂 SQL 時，`<<$parameter_name>>` 將用作預留位置值。當使用者從控制項選擇其中一個參數值時，Quick 會將預留位置取代為使用者在儀表板上選取的值。

在下列範例中，使用者輸入了新的自訂 SQL 查詢，依狀態篩選資料：

```
select * from all_flights
where origin_state_abr = <<$State>>
```

參數的預設值會套用至 SQL 查詢，且結果會顯示在**預覽窗格**中。