次の方法で共有


データ ラングリングのための Power Query の変換関数

適用対象: Azure Data Factory Azure Synapse Analytics

ヒント

企業向けのオールインワン分析ソリューション、Microsoft Fabric の Data Factory をお試しください。 Microsoft Fabric は、データ移動からデータ サイエンス、リアルタイム分析、ビジネス インテリジェンス、レポートまで、あらゆるものをカバーしています。 無料で新しい試用版を開始する方法について説明します。

Azure Data Factory のデータ ラングリングを使用すると、Power Query M スクリプトを Data Flow スクリプトに変換することにより、コード不要のアジャイルなデータ準備とラングリングをクラウド規模で実行できます。 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 を使用します。

  • 等値および非等値
  • 数値、テキスト、および日付の比較 (ただし DateTime は除く)
  • Number.IsEven/Odd などの数値情報
  • Text.ContainsText.StartsWith、または Text.EndsWith を使用したテキストの包含
  • すべての 'IsIn' 日付関数を含む日付範囲
  • and、or、または not 条件を使用したこれらの組み合わせ

列の追加と変換

次の 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)

既知のサポートされていない関数

機能 Status
Table.PromoteHeaders サポートされていません。 データセット内で "1 行目をヘッダーとして" 設定することにより、同じ結果を得ることができます。
Table.CombineColumns これは、直接サポートされてはいなくても、特定の 2 つの列を連結する新しい列を追加することによって実現できる一般的なシナリオです。 例: Table.AddColumn(RemoveEmailColumn, "Name", each [FirstName] & " " & [LastName])
Table.TransformColumnTypes ほとんどの場合、これはサポートされています。 次のシナリオはサポートされていません: 文字列から通貨型への変換、文字列から時刻型への変換、文字列からパーセント型への変換、およびロケールに関する変換。
Table.NestedJoin 結合を行うだけでは、検証エラーが発生します。 機能させるには、列を展開する必要があります。
Table.RemoveLastN 下端の行の削除はサポートされていません。
Table.RowCount サポートされていませんが、値 1 が含まれるカスタム列を追加した後、その列を List.Sum で集計することによって実現できます。 Table.Group はサポートされています。
行レベルのエラー処理 行レベルのエラー処理は現在サポートされていません。 たとえば、列から数値以外の値を除外する方法の 1 つは、テキスト列を数値に変換することです。 変換が失敗したすべてのセルはエラー状態になり、フィルター処理する必要があります。 このシナリオは、スケールアウトされた 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 の [列の追加]

Table.CombineColumns

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

ピボット

  • PQ エディターから [ピボット変換] を選択し、ピボット列を選択します。

Power Query Pivot Common

  • 次に、値列と集計関数を選択します。

Power Query Pivot Selector

  • [OK] をクリックすると、ピボット値でエディターのデータが更新されます
  • 変換がサポートされていない可能性があるという警告メッセージも表示されます
  • この警告を修正するには、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 の [型の変更]

  1. Power Query の UI で列を選択し、[型の変更] > [日付/時刻] を選択します
  2. 警告メッセージが表示されます
  3. 詳細エディターを開き、TransformColumnTypesTransformColumns に変更します。 入力データに基づいて書式とカルチャを指定します。

Power Query エディター

#"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 を作成する方法について説明します。