共用方式為


AddColumns、DropColumns、RenameColumns 和 ShowColumns 函式

適用於: 畫布應用 桌面流 模型驅動應用 Power Platform CLI

藉由新增、捨棄、重新命名和選取其 欄位 形塑 資料表

**ForAll 函數也可以用於透過傳回從現有欄建立的新記錄表來塑造資料表。

概觀

這些函式藉由調整欄位形塑資料表︰

  • 將包含多個欄位的資料表縮減為單一欄位,以便與單欄函數搭配使用,例如 LowerSqrt
  • 在資料表中新增計算得到的欄位 (例如,Total Price 欄位顯示的是 Quantity 乘以 Unit Price 的結果)。
  • 將欄位重新命名為更有意義的名稱,以對使用者顯示或用於公式中。

資料表是 Power Apps 中的值,如同字串或數字。 您可以將資料表指定為公式中的引數,而函式會傳回資料表作為結果。

Note

本主題說明的函式不修改原始資料表。 相反地,它們會將資料表當作引數,傳回已套用轉換的新資料表。 如需更多資訊,請參閱使用資料表

您無法使用這些函式修改 資料來源 的欄位。 您必須在其來源處修改資料。 您可以使用 Collect 函式在 集合物件 中新增欄位。 如需更多資訊,請參閱使用資料來源

Description

AddColumns 函式新增欄位到資料表,同時公式定義該欄位的值。 現有欄位則保持不變。

公式會按照資料表的各筆記錄進行評估。

目前處理中的記錄其各個欄位可供您在公式內使用。 使用 ThisRecord 運算子,,或只需依名稱參照欄位,就像任何其他的值一樣。 As 運算子也可以用來命名所處理的記錄,這有助於讓您的公式更易於了解並讓嵌套記錄可以存取。 如需更多資訊,請參閱下列範例以及 處理記錄範圍

DropColumns 函式從資料表排除欄位。 其他所有欄位保持不變。 DropColumns 不包括列,而 ShowColumns 包括列。

藉由提供至少一個引數對,指明資料表包含的欄位名稱 (即您要取代的舊名稱),及資料表不包含的欄位名稱 (即您要使用的新名稱),使用 RenameColumns 函式重新命名一個或多個資料表的欄位。 舊名稱必須已存在於資料表中,並且新名稱必須不存在。 各欄位名稱只能在引數清單中出現一次 (舊欄位名稱或新欄位名稱)。 若要將欄位重新命名為現有的欄位名稱,請先使用 DropColumns 捨棄現有欄位,或是藉由將其中一個 RenameColumns 函式置入另一個函式內形成巢狀結構,將現有欄位重新命名到範圍之外。

ShowColumns 函式包括資料表的欄位,捨棄其他所有欄位。 您可以使用 ShowColumns 從多欄位資料表建立單欄位資料表。 ShowColumns 包括列, DropColumns 不包括列。

這些函式結果都是已套用轉換的新資料表。 原始資料表不會修改。 您無法使用公式修改現有的資料表。 SharePoint、Microsoft Dataverse、SQL Server 和其他資料來源提供用於修改清單、資料表和資料表資料行 (通常稱為結構描述) 的工具。 本文的函式只轉換輸入資料表,不需修改原始資料表至輸出資料表供進一步使用。

這些函式的引數支援委派。 例如,Filter 函式充當引數用途,將相關記錄拉入搜尋所有清單,即使 [dbo].[AllListings]' 資料來源包含一百萬排:

AddColumns( RealEstateAgents,
   Listings,
   Filter(  '[dbo].[AllListings]', ListingAgentName = AgentName )
)

但是這些函式的輸出受限於 非委派記錄限制。 在本範例中,即使 RealEstateAgents 資料來源有 501 或以上的記錄,仍然只傳回 500 筆記錄。

如果您以這種方式使用 AddColumns,則 Filter 必須針對 RealEstateAgents 中的每個第一筆記錄,分別呼叫資料來源,這會造成大量的網路 chatter。 如果 [dbo](.[AllListings] 夠小且不常變更。 您可以在 OnStart 中呼叫 Collect 函式,並在應用程式啟動時快取資料來源。 或者,您也可以重新構建應用程式,這樣就可以只在使用者要求它們時才納入相關記錄。

注意

在 Power Apps 版本 3.24042 之前,欄名稱是透過使用雙引號的文字字串指定的,如果連接到資料來源,它們也需要是邏輯名稱。 例如,使用雙引號的邏輯名稱 "cr43e_name",而不是不含引號的顯示名稱 Name。 對於包含帶有空格的欄名稱的 SharePoint 和 Excel 資料來源,每個空格均以「_x0020_」指定,例如「欄名稱」「Column_x0020_Name」。 在此版本之後,所有應用程式都會自動更新為本文中所述的新語法。

語法

AddColumns(表,ColumnName1公式 1[, ColumnName2公式 2 ,... ])

  • Table - 必需。 要作業的資料表。
  • ColumnNames - 必需。 要新增欄的名稱。
  • 公式 - 必需。 評估每筆記錄的公式。 結果會新增為對應新欄位的值。 您可以在此公式中參考資料表的其他欄位。

DropColumns(表,ColumnName1[, ColumnName2,... ])

  • Table - 必需。 要作業的資料表。
  • ColumnNames - 必需。 要捨棄欄的名稱。

重命名列(表,舊列名 1新列名 1[, 舊列名 2新列名 2 ,... ])

  • Table - 必需。 要作業的資料表。
  • OldColumnNames - 必需。 要從原始資料表重新命名欄的名稱。 此元素會先出現在引數對 (如果公式包括一對以上,則在每個引數對的第一個)。
  • NewColumnNames - 必需。 取代名稱。 此元素會最後一個出現在引數對 (或是如果公式包括超過一對,則在每個引數對的最後一個)。

ShowColumnsColumnName1 [, ColumnName2,... ])

  • Table - 必需。 要作業的資料表。
  • ColumnNames - 必需。 要加入欄的名稱。

範例

本節範例使用 IceCreamSales 資料來源,其包含此資料表的資料:

IceCream 範例。

這些範例全都不修改 IceCreamSales 資料來源。 每個函式會將資料來源的值轉換為資料表,並傳回該值作為結果。

公式 Description Result
AddColumns(IceCreamSales,Revenue,UnitPrice * QuantitySold) 新增 Revenue 欄位到結果。 各筆記錄的 UnitPrice * QuantitySold 會進行評估,而結果會放在新欄位中。 包含 Srawberry、Chocolate 和 Vanilla 的結果。
DropColumns(IceCreamSales,UnitPrice) 結果排除 UnitPrice 欄位。 使用此函式排除欄位並使用 ShowColumns 將它們包括進來。 Strawberry、Chocolate、Vanilla 的結果只有 QuantitySold 資料行。
ShowColumns(IceCreamSales,口味) 只在結果中包括 Flavor 欄位。 使用此函式包括欄位並使用 DropColumns 將它們排除。 只有 Flavor 資料行。
重新命名列(IceCreamSales、UnitPrice、Price) 重新命名結果中的 UnitPrice 欄位。 包含 Flavor、Price 和 Revenue 的結果。
RenameColumns(IceCreamSales,UnitPrice,Price,QuantitySold,Number) 重新命名結果中的 UnitPriceQuantitySold 欄位。 包含 3 個 IceCreams 和 Flavor、Price、Revenue 資料行的結果。
DropColumns(
RenameColumns(
AddColumns( IceCreamSales, Revenue,
UnitPrice * QuantitySold ),
UnitPrice, Price ),
Quantity )
依序執行下列資料表轉換,從公式內部開始︰
  1. 根據每筆記錄的 UnitPrice * Quantity 計算結果新增 Revenue 欄位。
  2. UnitPrice 重新命名為 Price
  3. 排除 Quantity 欄位。
順序很重要,例如我們無法在 UnitPrice 重新命名後,再用它來進行計算。
IceCream 單價的範例。

逐步

讓我們先試一下本文先前的一些範例。

  1. 藉由新增 Button 控制項並將其 OnSelect 屬性設為以下公式來建立集合物件︰

    ClearCollect( IceCreamSales,
       Table(
           { Flavor: "Strawberry", UnitPrice: 1.99, QuantitySold: 20 },
           { Flavor: "Chocolate", UnitPrice: 2.99, QuantitySold: 45 },
           { Flavor: "Vanilla", UnitPrice: 1.50, QuantitySold: 35 }
       )
    )
    
  2. 藉由按住 Alt 鍵時選取按鈕,以執行公式。

  3. 新增第二個 Button 控制項,並將其 OnSelect 屬性設定為下列公式,然後執行它:

    ClearCollect( FirstExample,
       AddColumns( IceCreamSales, Revenue, UnitPrice * QuantitySold )
    )
    
  4. File 功能表上選取 Collections,然後選取 IceCreamSales 顯示該集合物件。

    如此圖所示,第二則公式不修改此集合物件。 AddColumns 函式使用 IceCreamSales 做為唯讀參數;而函式未修改該引數參照的資料表。

    集合物件檢視器顯示三筆冰淇淋的銷售集合物件記錄,不包括營收欄位。

  5. 選取 FirstExample

    如此圖所示,第二個公式傳回包含新增欄位的新資料表。 ClearCollect 函式在 FirstExample 集合物件中擷取新資料表,並在流經函式不修改來源情況下,將某些項目新增至原始資料表:

    集合物件檢視器顯示三筆包括新營收欄位的第一個範例集合物件記錄。

對應元件中的資料行

參閱對應資料行