AddColumns、DropColumns、RenameColumns 和 ShowColumns 函式

適用於: 畫布應用程式 桌面流程 模型導向應用程式 Power Platform CLI

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

概觀

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

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

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

Note

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

您無法使用這些函式修改 資料來源 的欄位。 您必須在其來源處修改資料。 您可以使用 Collect 函式在 集合物件 中新增欄位。 請參閱 搭配資料來源 以取得詳細資料。

描述

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 函式以便在應用程式開始時,快取資料來源到應用程式中。 或者,您也可以重新構建應用程式,這樣就可以只在使用者要求它們時才納入相關記錄。

語法

AddColumns( Table, ColumnName1, Formula1 [, ColumnName2, Formula2, ... ] )

  • Table – 必要。 要作業的資料表。
  • ColumnName(s) - 必要項目。 要新增的欄位名稱。 您必須針對此引數指明字串 (例如,加上雙引號的 "Name")。 您必須使用列的邏輯名稱指定列名稱。 IntelliSense 只會建議邏輯名稱。 邏輯名稱區分大小寫。
  • Formula(s) - 必要項目。 評估每筆記錄的公式。 結果會新增為對應新欄位的值。 您可以在此公式中參考資料表的其他欄位。

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

  • Table – 必要。 要作業的資料表。
  • ColumnName(s) - 必要項目。 要捨棄的欄位名稱。 您必須針對此引數指明字串 (例如,加上雙引號的 "Name")。 您必須使用列的邏輯名稱指定列名稱。 IntelliSense 只會建議邏輯名稱。 邏輯名稱區分大小寫。

RenameColumns( Table, OldColumnName1, NewColumnName1 [, OldColumnName2, NewColumnName2, ... ] )

  • Table – 必要。 要作業的資料表。
  • OldColumnName - 必要項目。 從原始資料表重新命名的欄位名稱。 此元素會先出現在引數對 (如果公式包括一對以上,則在每個引數對的第一個)。 此名稱必須是字串 (例如 "Name",含雙引號)。 您必須使用列的邏輯名稱指定列名稱。 IntelliSense 只會建議邏輯名稱。 邏輯名稱區分大小寫。
  • NewColumnName - 必要項目。 取代項目名稱。 此元素會最後一個出現在引數對 (或是如果公式包括超過一對,則在每個引數對的最後一個)。 您必須針對此引數指明字串 (例如,"Customer Name",具有雙引號)。 您必須使用列的邏輯名稱指定列名稱。 IntelliSense 只會建議邏輯名稱。 邏輯名稱區分大小寫。

ShowColumns( Table, ColumnName1 [, ColumnName2, ... ] )

  • Table – 必要。 要作業的資料表。
  • ColumnName(s) - 必要項目。 要包括的欄位名稱。 您必須針對此引數指明字串 (例如,加上雙引號的 "Name")。 您必須使用列的邏輯名稱指定列名稱。 IntelliSense 只會建議邏輯名稱。 邏輯名稱區分大小寫。

範例

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

IceCream 範例。

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

公式 描述 結果
AddColumns( IceCreamSales, "Revenue", UnitPrice * QuantitySold ) 新增 Revenue 欄位到結果。 各筆記錄的 UnitPrice * QuantitySold 會進行評估,而結果會放在新欄位中。 包含 Srawberry、Chocolate 和 Vanilla 的結果。
DropColumns( IceCreamSales, "UnitPrice" ) 結果排除 UnitPrice 欄位。 使用此函式排除欄位並使用 ShowColumns 將它們包括進來。 Strawberry、Chocolate、Vanilla 的結果只有 QuantitySold 資料行。
ShowColumns( IceCreamSales, "Flavor" ) 只在結果中包括 Flavor 欄位。 使用此函式包括欄位並使用 DropColumns 將它們排除。 只有 Flavor 資料行。
RenameColumns( 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 集合物件中擷取新資料表,並在流經函式不修改來源情況下,將某些項目新增至原始資料表:

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

對應元件中的資料行

參閱對應資料行