共用方式為


Power Query 中針對資料整頓的轉換函式

適用於:Azure Data Factory Azure Synapse Analytics

提示

試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費開始新的試用

Azure Data Factory 中的資料整頓可讓您將 Power Query M 指令碼轉譯成資料流程指令碼,以雲端規模執行無程式碼的敏捷式資料準備和整頓。 ADF 與 Power Query Online 整合,並使用資料流程 Spark 基礎結構,透過 Spark 執行,讓 Power Query M 函式可供資料整頓使用。

目前,儘管資料整頓在撰寫期間可供使使用,並非所有 Power Query M 函式都支援。 建置的交互式資料時,如果不支援某個函式,系統會提示您並出現下列錯誤訊息:

UserQuery : Expression.Error: The transformation logic is not supported as it requires dynamic access to rows of data, which cannot be scaled out.

以下是支援的 Power Query M 函式的清單。

資料行管理

資料列篩選

使用 M 函式 Table.SelectRows 來篩選下列條件:

新增和轉換資料行

下列 M 函式會新增或轉換資料行:Table.AddColumnTable.TransformColumnsTable.ReplaceValueTable.DuplicateColumn。 以下是支援的轉換函式。

合併/聯結資料表

  • Power Query 將產生巢狀聯結 (Table.NestedJoin;使用者也可以手動撰寫 Table.AddJoinColumn)。 然後,使用者必須將巢狀聯結資料行展開至非巢狀聯結 (Table.ExpandTableColumn,在任何其他內容中不支援)。
  • 您可以直接撰寫 M 函式 Table.Join 以避免需要額外的展開步驟,但使用者必須確保聯結資料表之間沒有重複的資料行名稱
  • 支援的聯結種類:Inner、LeftOuter、RightOuter、FullOuter
  • Value.EqualsValue.NullableEquals 都支援做為索引鍵相等比較子

分組依據

使用 Table.Group 來彙總值。

排序

使用 Table.Sort 來排序值。

減少資料列

保留並移除最前面的項目、保留範圍 (對應的 M 函式,僅支援計數,不支援條件:Table.FirstNTable.SkipTable.RemoveFirstNTable.RangeTable.MinNTable.MaxN)

已知不支援的函式

函式 狀態
Table.PromoteHeaders 不支援。 在資料集中設定「第一個資料列為標頭」,即可達成相同的結果。
Table.CombineColumns 這是不直接支援但可藉由新增串連兩個指定資料行的新資料行來達成的常見案例。 例如,Table.AddColumn(RemoveEmailColumn, "Name", each [FirstName] & " " & [LastName])
Table.TransformColumnTypes 在大部分情況下都支援。 不支援下列案例:將字串轉換成貨幣類型、將字串轉換成時間類型、將字串轉換成百分比類型,以及使用地區設定進行轉換。
Table.NestedJoin 只是執行聯結,將會產生驗證錯誤。 必須展開資料行,它才能運作。
Table.RemoveLastN 不支援移除底部資料列。
Table.RowCount 不支援,但可以藉由新增包含值 1 的自訂資料行來達成,然後使用 List.Sum 彙總該資料行。 支援 Table.Group。
資料列層級錯誤處理 目前不支援資料列層級錯誤處理。 例如,若要從資料行篩選掉非數值,其中一種方法是將文字資料行轉換成數值。 無法轉換的每個儲存格都會處於錯誤狀態,且必須經過篩選。 此案例在向外延展 M 中不可行。
Table.Transpose 不支援

M 指令碼因應措施

SplitColumn

以下列出依長度和位置分割的替代方式

  • Table.AddColumn(Source, "First characters", each Text.Start([Email], 7), type text)
  • Table.AddColumn(#"Inserted first characters", "Text range", each Text.Middle([Email], 4, 9), type text)

您可以從功能區的 [擷取] 選項存取此選項

Power Query Add Column

Table.CombineColumns

  • Table.AddColumn(RemoveEmailColumn, "Name", each [FirstName] & " " & [LastName])

樞紐

  • 從 PQ 編輯器選取 [樞紐轉換],並選取樞紐資料行

Power Query Pivot Common

  • 接下來,選取值資料行和彙總函式

Power Query Pivot Selector

  • 按一下 [確定] 時,您會看到編輯器中的資料更新為樞紐值
  • 您也會看到一則警告訊息,指出轉換可能不受支援
  • 若要修正此警告,請使用 PQ 編輯器手動展開樞紐清單
  • 從功能區選取 [進階編輯器] 選項
  • 手動展開樞紐值清單
  • 將 List.Distinct() 取代為如下所示的值清單:
#"Pivoted column" = Table.Pivot(Table.TransformColumnTypes(#"Changed column type 1", {{"genres", type text}}), {"Drama", "Horror", "Comedy", "Musical", "Documentary"}, "genres", "Rating", List.Average)
in
  #"Pivoted column"

格式化日期/時間資料行

若要在使用 Power Query ADF 時設定日期/時間格式,請遵循這些集合來設定格式。

Power Query Change Type

  1. 在 Power Query UI 中選取資料行,然後選擇 [變更類型] > [日期/時間]
  2. 您會看到警告訊息
  3. 開啟進階編輯器,並將 TransformColumnTypes 變更為 TransformColumns。 根據輸入資料指定格式和文化特性。

Power Query Editor

#"Changed column type 1" = Table.TransformColumns(#"Duplicated column", {{"start - Copy", each DateTime.FromText(_, [Format = "yyyy-MM-dd HH:mm:ss", Culture = "en-us"]), type datetime}})

了解如何在 ADF 中建立資料整頓 Power Query