使用清單資料列動作可透過結構化查詢從 Microsoft Dataverse 中一次擷取多個資料列。
取得資料列清單
按照以下步驟,將清單資料列動作新增至流程中,以從 Dataverse 中的帳戶資料表傳回多達 5000 個帳戶。
Power Automate 允許你使用
- 選取加號 (+) >新增動作。
- 在「新增行動」畫面中,請在搜尋欄位輸入清單列。
- 在 Microsoft Dataverse 下,選取 列出資料列 (預覽)。
- 在左邊的參數索引標籤中,選取資料表名稱下拉式功能表中的帳戶。
- 選取 (<<) 以關閉畫面。
開啟分頁以要求傳回超過 5,000 個資料列
若要自動從查詢中取得 5,000 個以上的資料列,請開啟設定中的分頁功能。
當你設定分頁且列數超過你設定的閾值時,回應不會包含 @odata.nextLink 請求下一組列的參數。 關閉分頁功能,讓回應包含可用來要求下一組資料列的 @odata.nextLink 參數。 請前往Skip token,了解如何使用。
這將套用內容輸送量限制和訊息大小限制以確保提供一般服務保證。
選取清單資料列卡片。
在左側窗格中,選取設定索引標籤>網路。
如果尚未開啟,請將分頁滑桿移至開啟位置。
在閾值中,輸入要求的最大列數。 最大可設定的閾值為 100,000。
在內部處理時,這個數值會以預設頁面大小為單位進行四捨五入。 例如,如果該頁面大小為 5,000,而您輸入 7,000,則傳回的資料列數為 10,000。
進階選項
List Rows 動作的進階選項可以讓你排序、篩選、排列及擴展查詢結果。
回傳完整元資料
此設定控制是否從表格載入所有欄位,或只載入必要的欄位以提升效能。 如果你未設定,當你的流程使用需要完整中繼資料的動態內容或運算式時,該動作會自動傳回完整中繼資料。
選取資料行
輸入一個逗號分隔的欄位清單以回傳,例如 name,createdon,preferredcontactmethodcode,emailaddress1,telephone1 帳戶資料表。
篩選資料列
使用此欄位定義類似 OData 的過濾表達式,以縮小 Dataverse 回傳的資料列集合,例如 createdon ge 2021-01-01T00:00:00-00:00 對於 createdon 大於或等於 2021 年的列。
學習如何 篩選列 以構建 篩選查詢 表達式。
將某些字元,如 &、 #、 +,替換為其 URL 編碼的對應字元。 欲了解更多資訊,請參閱 URL 編碼特殊字元。
重要
篩選運算式不能包含 $filter= 字串,因其僅適用於直接使用 API 的時候。
排序方式
使用此欄位定義一個 OData 式表達式,定義項目回傳的順序,例如 name desc。 分別使用 asc 或 desc 尾碼指示遞增或遞減順序。 預設順序為遞增。
展開查詢
使用此欄位指定 OData 樣式的運算式,以定義 Dataverse 從相關資料表傳回哪些資料,例如 primarycontactid($select=contactid,fullname) 使用帳戶的 primarycontactid,從 ID 為 contactid 的相關連絡人中,在回應中擷取 fullname 資料行。
您可以在展開查詢中使用兩種類型的導覽屬性:
單一值導覽屬性對應查詢資料行,支援多對一關聯並可讓您設定另一個資料表的參照。
集合值導覽屬性對應至一對多或多對多關聯。
如果你只包含導航屬性的名稱,你會獲得相關資料列的所有屬性。 在 使用 OData 加入表格中了解更多。
若要在流程步驟中使用,請在 展開查詢 欄位輸入此 OData 表達式: primarycontactid(contactid,fullname)。 以下說明如何取得每個account的primarycontactid之contactid和fullname資料行。
資料列數量
使用列 數 設定來指定你希望 Dataverse 回傳的列數。
擷取 XML 查詢
目前,使用 List 列動作搭配 FetchXML 查詢時,無法使用聚合查詢。 不過,你可以使用 distinct 運算子。
使用 類似 Dataverse 的 FetchXML 查詢,這在建立自訂查詢時提供更多彈性。 當你處理包含多個相關資料表的資料表,或處理分頁時,這些查詢會很有用。 以下螢幕擷取畫面顯示如何使用 FetchXML。
重要
分頁設定不支援 FetchXML 查詢。 若要要求超過 5,000 列,您需要在 FetchXML 查詢中直接管理分頁。
帳戶資料表的 FetchXML 查詢範例:
<fetch count="10">
<entity name="account">
<attribute name="name" />
<attribute name="preferredcontactmethodcode" />
<attribute name="emailaddress1" />
<attribute name="telephone1" />
<link-entity name="contact" to="primarycontactid" from="contactid">
<attribute name="fullname" />
</link-entity>
<filter>
<condition attribute="createdon" operator="ge" value="2021-01-01T00:00:00-00:00" />
</filter>
<order attribute="name" descending="true" />
</entity>
</fetch>
distinct 運算子目前尚未在 List rows 動作的 FetchXML 查詢中獲得直接支援,但你可以使用 union function 來移除重複的資料列。 例如,你可以用 Select 動作將 List 列連線的回應轉換到你需要的特定陣列格式,然後用 表示式union(body('Select'),body('Select'))建立變數,取得一個有不同列的陣列。
略過權杖
Power Automate 會套用內容吞吐量限制和訊息大小限制,以確保一般服務的保障。 為了在這些限制內工作,使用 分頁 來回傳批次中較少的列數,而非預設的 回傳資料表列數限制。
如果你不使用分頁,預設的頁面限制是 5,000 列。
要使用分頁,可以實作一個迴圈來解析 \@odata.nextLink JSON 回應中的值,提取 跳過標記,然後再發送一個請求,直到列出你需要的列數。
HTTP/1.1 200 OK
Content-Type: application/json; odata.metadata=minimal
OData-Version: 4.0
Content-Length: 402
Preference-Applied: odata.maxpagesize=3
{
"@odata.context":"[Organization URI]/api/data/v9.1/$metadata#accounts(name)",
"value":[
{
"@odata.etag":"W/\"437194\"",
"name":"Fourth Coffee (sample)",
"accountid":"7d51925c-cde2-e411-80db-00155d2a68cb"
},
{
"@odata.etag":"W/\"437195\"",
"name":"Litware, Inc. (sample)",
"accountid":"7f51925c-cde2-e411-80db-00155d2a68cb"
},
{
"@odata.etag":"W/\"468026\"",
"name":"Adventure Works (sample)",
"accountid":"8151925c-cde2-e411-80db-00155d2a68cb"
}
],
"@odata.nextLink":"[Organization URI]/api/data/v9.1/accounts?$select=name&$skiptoken=%3Ccookie%20pagenumber=%222%22%20pagingcookie=%22%253ccookie%2520page%253d%25221%2522%253e%253caccountid%2520last%253d%2522%257b8151925C-CDE2-E411-80DB-00155D2A68CB%257d%2522%2520first%253d%2522%257b7D51925C-CDE2-E411-80DB-00155D2A68CB%257d%2522%2520%252f%253e%253c%252fcookie%253e%22%20/%3E"
}
分區識別碼
在擷取彈性資料表的資料時指定 partitionId。 欲了解更多,請參閱彈性 表格的分割與水平縮放。