マッピング データ フローの派生列変換

適用対象: Azure Data Factory Azure Synapse Analytics

データ フローは、Azure Data Factory および Azure Synapse Pipelines の両方で使用できます。 この記事は、マッピング データ フローに適用されます。 変換を初めて使用する場合は、概要の記事「マッピング データ フローを使用してデータを変換する」を参照してください。

データ フロー内に新しい列を生成したり、既存のフィールドを変更したりするには、派生列変換を使用します。

列を作成および更新する

派生列を作成するときは、新しい列を生成するか、既存の列を更新することができます。 [列] ボックスに、作成する列を入力します。 スキーマ内の既存の列を上書きするには、列ドロップダウンを使用できます。 派生列の式を作成するには、 [式の入力] ボックスをクリックします。 式の入力を開始するか、式ビルダーを開いてロジックを作成することができます。

Derived column settings

派生列をさらに追加するには、列リストの上にある [追加] をクリックするか、既存の派生列の横にあるプラス記号のアイコンをクリックします。 [列の追加] または [列パターンの追加] のいずれかを選択します。

New derived column selection

列パターン

スキーマが明示的に定義されていない場合、または列のセットを一括して更新する場合は、列パターンを作成する必要があります。 列パターンを使用すると、列のメタデータに基づくルールを使用して列を照合し、一致した各列に対して派生列を作成できます。 詳細については、派生列の変換で列パターンの作成方法に関する説明を参照してください。

Column patterns

式ビルダーを使用してスキーマを作成する

マッピング データ フローの式ビルダーを使用すると、 [Derived Columns](派生列) セクションで派生列を作成、編集、管理できます。 変換で作成または変更されたすべての列の一覧が表示されます。 列の名前をクリックして、編集している列またはパターンを対話形式で選択します。 列を追加するには、 [新規作成] を選択し、1 つの列またはパターンのどちらを追加するかを選択します。

Create new column

複合列を使用する場合は、サブ列を作成できます。 これを行うには、任意の列の横にあるプラス アイコンをクリックし、 [Add subcolumn](サブ列の追加) を選択します。 データ フローでの複合型の処理の詳細については、マッピング データ フローでの JSON の処理に関する記事を参照してください。

Add subcolumn

データ フローでの複合型の処理の詳細については、マッピング データ フローでの JSON の処理に関する記事を参照してください。

Add complex column

データ フローのスクリプト

構文

<incomingStream>
    derive(
           <columnName1> = <expression1>,
           <columnName2> = <expression2>,
           each(
                match(matchExpression),
                <metadataColumn1> = <metadataExpression1>,
                <metadataColumn2> = <metadataExpression2>
               )
          ) ~> <deriveTransformationName>

次の例は、受信ストリーム MoviesYear を受け取り 2 つの派生列を作成する、CleanData という名前の派生列です。 最初の派生列は、列 Rating を整数型の Rating の値で置き換えます。 2 番目の派生列は、名前が 'movies' で始まる各列に一致するパターンです。 一致した列ごとに、一致する列の値と等しい列 movie を、'movie_' というプレフィックスを付けて作成します。

UI では、この変換は次の図のようになります。

Derive example

この変換のデータ フロー スクリプトは、次のスニペットに含まれています。

MoviesYear derive(
                Rating = toInteger(Rating),
		        each(
                    match(startsWith(name,'movies')),
                    'movie' = 'movie_' + toString($$)
                )
            ) ~> CleanData

次のステップ