マッピング データ フローの派生列変換
適用対象: Azure Data Factory Azure Synapse Analytics
ヒント
企業向けのオールインワン分析ソリューション、Microsoft Fabric の Data Factory をお試しください。 Microsoft Fabric は、データ移動からデータ サイエンス、リアルタイム分析、ビジネス インテリジェンス、レポートまで、あらゆるものをカバーしています。 無料で新しい試用版を開始する方法について説明します。
データ フローは、Azure Data Factory および Azure Synapse Pipelines の両方で使用できます。 この記事は、マッピング データ フローに適用されます。 変換を初めて使用する場合は、概要の記事「マッピング データ フローを使用してデータを変換する」を参照してください。
データ フロー内に新しい列を生成したり、既存のフィールドを変更したりするには、派生列変換を使用します。
列を作成および更新する
派生列を作成するときは、新しい列を生成するか、既存の列を更新することができます。 [列] ボックスに、作成する列を入力します。 スキーマ内の既存の列を上書きするには、列ドロップダウンを使用できます。 派生列の式を作成するには、 [式の入力] ボックスをクリックします。 式の入力を開始するか、式ビルダーを開いてロジックを作成することができます。
派生列をさらに追加するには、列リストの上にある [追加] をクリックするか、既存の派生列の横にあるプラス記号のアイコンをクリックします。 [列の追加] または [列パターンの追加] のいずれかを選択します。
列パターン
スキーマが明示的に定義されていない場合、または列のセットを一括して更新する場合は、列パターンを作成する必要があります。 列パターンを使用すると、列のメタデータに基づくルールを使用して列を照合し、一致した各列に対して派生列を作成できます。 詳細については、派生列の変換で列パターンの作成方法に関する説明を参照してください。
式ビルダーを使用してスキーマを作成する
マッピング データ フローの式ビルダーを使用すると、 [Derived Columns](派生列) セクションで派生列を作成、編集、管理できます。 変換で作成または変更されたすべての列の一覧が表示されます。 列の名前をクリックして、編集している列またはパターンを対話形式で選択します。 列を追加するには、 [新規作成] を選択し、1 つの列またはパターンのどちらを追加するかを選択します。
複合列を使用する場合は、サブ列を作成できます。 これを行うには、任意の列の横にあるプラス アイコンをクリックし、 [Add subcolumn](サブ列の追加) を選択します。 データ フローでの複合型の処理の詳細については、マッピング データ フローでの JSON の処理に関する記事を参照してください。
データ フローでの複合型の処理の詳細については、マッピング データ フローでの JSON の処理に関する記事を参照してください。
データ フローのスクリプト
構文
<incomingStream>
derive(
<columnName1> = <expression1>,
<columnName2> = <expression2>,
each(
match(matchExpression),
<metadataColumn1> = <metadataExpression1>,
<metadataColumn2> = <metadataExpression2>
)
) ~> <deriveTransformationName>
例
次の例は、受信ストリーム MoviesYear
を受け取り 2 つの派生列を作成する、CleanData
という名前の派生列です。 最初の派生列は、列 Rating
を整数型の Rating の値で置き換えます。 2 番目の派生列は、名前が 'movies' で始まる各列に一致するパターンです。 一致した列ごとに、一致する列の値と等しい列 movie
を、'movie_' というプレフィックスを付けて作成します。
UI では、この変換は次の図のようになります。
この変換のデータ フロー スクリプトは、次のスニペットに含まれています。
MoviesYear derive(
Rating = toInteger(Rating),
each(
match(startsWith(name,'movies')),
'movie' = 'movie_' + toString($$)
)
) ~> CleanData
関連するコンテンツ
- 「Mapping Data Flow の式言語」で詳細を確認します。