OData 查詢字串選項
Salesforce Connect 的 OData 轉接器使用 OData 2.0、4.0 和 4.01 系統功能和篩選運算式建構的子集來查詢外部系統。
必要版本
| 提供版本:Salesforce Classic 和 Lightning Experience (不適用於高資料量外部物件) |
提供版本:Developer Edition 下列版本亦可額外付費使用:Enterprise、Performance 及 Unlimited Edition |
Salesforce 會自動建立 OData 查詢;這樣,身為管理員或開發人員的您就無須加以建立。不過,瞭解 OData 查詢是如何產生的 - 甚至是嘗試手動 OData 查詢 - 可協助您疑難排解外部系統 OData 產生者的問題。如需每個系統查詢選項的詳細資料,請前往 www.odata.org。
Salesforce Connect 僅支援下列 OData 系統查詢選項。未使用 OData 2.0、4.0 和 4.01 規格中的所有其他選項。
-
$count(Odata 4.0 與 4.01) -
$filter -
$inlinecount(僅限 Odata 2.0) -
$orderby -
$search(Odata 4.0 與 4.01) -
$select -
$skip -
$top
移除除連字號 (-) 外的所有 ASCII 標點符號字元後,搜尋查詢字串會以區分大小寫的單一片語形式,傳送至外部系統。例如,如果搜尋字串為 Sales & Marketing,外部系統就會收到 Sales Marketing。
$count (Odata 4.0 與 4.01)
指定在套用 $filter 系統查詢選項之後,但套用 $top 和 $skip 系統查詢選項之前,回應必須包含 URI 識別的列數。
針對 Odata 4.01,$count=true 為硬式編碼,針對 Odata 4.0,當在外部資料來源上啟用「要求列計數」時為 $count=true。結果集中的項目總數與查詢中值小於 202 的 LIMIT 值相同。如果 LIMIT 值大於 202,則會傳回 202 個項目以指示有更多記錄存在於下一個批次中。針對 Odata 4.0,如果停用「要求列計數」,則 Salesforce 會在外部資料來源的所有 Odata 4.0 查詢中包含 $count=false,且每個結果集中都會傳回 2000 個項目。
| 範例 | |
|---|---|
| Salesforce 中的使用者動作 | 檢視或存取外部物件。 |
| SOQL 查詢 | 外部物件的任何 SOQL 查詢 |
| 結果產生的 OData 查詢 |
http://services.example.org/my.svc/Suppliers?$select=SupplierID&$count=true&$top=26
|
$filter
篩選由要求 URL 定址的資源集合。回應包含評估為 true 的結果。
| 範例 | |
|---|---|
| Salesforce 中的使用者動作 | 從已篩選為美國的供應商記錄開啟城市清單檢視。 |
| SOQL 查詢 |
SELECT City__c FROM Suppliers__x
WHERE Country__c = 'USA' ORDER BY City__c ASC LIMIT
26
|
| 結果產生的 OData 查詢 |
http://services.example.org/my.svc/Suppliers?$orderby=City&$select=City,SupplierID&$inlinecount=allpages&$filter=Country+eq+'USA'&$top=26
|
$inlinecount (僅限 Odata 2.0)
指定在套用 $filter 系統查詢選項之後,但套用 $top 和 $skip 系統查詢選項之前,回應必須包含 URI 識別的列數計數。
在外部資料來源上啟用「要求列計數」時,Salesforce 會使用該外部資料來源所有 Odata 2.0 查詢中的 $inlinecount 來決定每個結果集中的項目總數。如果停用「要求列計數」,則 $inlinecount 會從外部資料來源的所有 Odata 2.0 查詢中排除。
| 範例 | |
|---|---|
| Salesforce 中的使用者動作 | 檢視或存取外部物件。 |
| SOQL 查詢 | 外部物件的任何 SOQL 查詢。 |
| 結果產生的 OData 查詢 |
http://services.example.org/my.svc/Suppliers?$select=SupplierID&$inlinecount=allpages&$top=26
|
$orderby
以遞增或遞減順序排序結果集。SOQL 查詢的 ORDER BY 子句中的欄位不一定符合結果 Odata 查詢中 $orderby 選項所使用的內容。如果您在 SOQL 查詢中使用 OFFSET 子句,則會在產生的 OData 查詢中新增實體金鑰內容。
| 範例 | |
|---|---|
| Salesforce 中的使用者動作 | 開啟依公司名稱排序的供應商記錄清單檢視。 |
| SOQL 查詢 |
SELECT CompanyName__c,ContactName__c
FROM Suppliers__x ORDER BY CompanyName__c ASC LIMIT
26
|
| 結果產生的 OData 查詢 |
http://services.example.org/my.svc/Suppliers?$orderby=CompanyName&$select=CompanyName,ContactName,SupplierID&$inlinecount=allpages&$top=26
|
$search (Odata 4.0 與 4.01)
將符合搜尋查詢字串的要求實體作為自由文字搜尋運算式。針對 OData 4.0,透過在外部資料來源選取「使用自由文字搜尋運算式」來啟用此選項。依預設,「使用自由文字搜尋運算式」未啟用。搜尋查詢字串會作為 $filter 系統查詢選項中的 contains 值使用。
| 範例 | |
|---|---|
| Salesforce 中的使用者動作 | 檢視或存取外部物件。 |
| SOQL 查詢 | 外部物件的任何 SOQL 查詢 |
| 結果產生的 OData 查詢 |
http://services.example.org/my.svc/Shippers?$select=CompanyName,Phone,ShipperID&$count=true&$search=Acme&$top=25
|
$select
要求各個實體有限的屬性集。
| 範例 | |
|---|---|
| Salesforce 中的使用者動作 | 開啟版面配置會顯示公司名稱和連絡人名稱的供應商記錄清單檢視。 |
| SOQL 查詢 |
SELECT
CompanyName__c,ContactName__c FROM Suppliers__x ORDER BY
CompanyName__c ASC LIMIT 26
|
| 結果產生的 OData 查詢 |
http://services.example.org/my.svc/Suppliers?$orderby=CompanyName&$select=CompanyName,ContactName,SupplierID&$inlinecount=allpages&$top=26
|
$skip
指定結果集中要跳過的已查詢集合項目之數量。
| 範例 | |
|---|---|
| Salesforce 中的使用者動作 | 按一下以檢視依城市排序的供應商記錄清單檢視的第二頁。 |
| SOQL 查詢 |
SELECT City__c,CompanyName__c FROM
Suppliers__x ORDER BY City__c ASC OFFSET
25
|
| 結果產生的 OData 查詢 |
http://services.example.org/my.svc/Suppliers?$orderby=City&$select=City,CompanyName,SupplierID&$inlinecount=allpages&$top=25&$skip=25
|
$top
指定結果中要包含的已查詢集合項目之數量。SOQL 查詢其 LIMIT 子句中的值不一定符合要求的 $top 值,因為後者會針對用戶端驅動分頁和 queryMore() 呼叫視需要修改。
| 範例 | |
|---|---|
| Salesforce 中的使用者動作 | 開啟前 25 個供應商記錄的清單檢視 |
| SOQL 查詢 |
SELECT SupplierID__c FROM Suppliers__x
LIMIT 25
|
| 結果產生的 OData 查詢 |
http://services.example.org/my.svc/Suppliers?$select=SupplierID&$inlinecount=allpages&$top=25
|
- OData 2.0 查詢選項
依預設,搜尋查詢字串會作為$filter系統查詢選項中的substringof值使用。 - OData 4.0 與 4.01 查詢選項
依預設,搜尋查詢字串會作為$filter系統查詢選項中的contains值使用。
