次の方法で共有


マッピング データ フローでのアサート変換

適用対象: Azure Data Factory Azure Synapse Analytics

ヒント

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

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

アサート変換を使用すると、データ品質とデータ検証のためのカスタム ルールをマッピング データ フロー内に作成できます。 予想される値ドメインを値が満たしているかどうかを判断するルールを作成できます。 また、行の一意性をチェックするルールを作成することもできます。 アサート変換は、データ内の各行が一連の条件を満たすかどうかを判断するのに役立ちます。 アサート変換では、データ検証規則が満たされていない場合のカスタム エラー メッセージを設定することもできます。

Assert type

構成

アサート変換構成パネルで、アサートの種類を選択し、アサーションの一意の名前と省略可能な説明を指定し、式と省略可能なフィルターを定義します。 データ プレビュー ウィンドウには、アサーションに失敗した行が表示されます。 さらに、アサーションに失敗した行に対して、isError()hasError() を使用して、ダウンストリームの各行タグをテストできます。

Assert settings

Assert の種類

  1. Expect true(true を予期): 式の結果はブール型の true の結果に評価される必要があります。 これを使用して、データ内のドメイン値の範囲を検証します。
  2. Expect unique(一意を予期): 列または式をデータ内の一意性ルールとして設定します。 重複する行にタグを付けするには、これを使用します。
  3. Expect exists(存在を予期): このオプションは、2 つ目の受信ストリームを選択した場合にのみ使用できます。 Exists(存在) は、両方のストリームを確認し、指定した列または式に基づいて、両方のストリームに行が存在するかどうかを判断します。 Exists(存在) の 2 番目のストリームを追加するには、Additional streams を選択します。

Assert configuration

データ フローの失敗

アサーション ルールが失敗したらすぐにデータ フロー アクティビティを失敗させる場合、fail data flow を選択します。

アサート ID

アサート ID は、アサーションの名前 (文字列) を入力するプロパティです。 後で hasError() を使用して、データ フローのダウンストリームで識別子を使用するか、アサーション失敗コードを出力することができます。 アサート ID は、各データフロー内で一意である必要があります。

アサートの説明

アサーションの説明の文字列をここに入力します。 ここでは式と行コンテキスト列の値も使用できます。

フィルター

フィルターは省略可能なプロパティであり、式の値に基づいてアサーションをフィルター処理し、行のサブセットのみを取得できます。

Expression

各アサーションを評価するための式を入力します。 アサート変換ごとに複数のアサーションを使用できます。 アサーションの各種類には、アサーションが合格したかどうかをテストするために ADF が評価する必要がある式が必要です。

NUL を無視する

既定では、アサート変換では、行アサーション評価に NULL が含まれます。 このプロパティを使用して、NULL を無視することを選択できます。

アサート行のエラーの転送

アサーションが失敗した場合は、必要に応じて、シンク変換の [エラー] タブを使用して、それらのエラー行を Azure のファイルに転送できます。 また、シンク変換には、エラー行を無視してアサーションに失敗した行をまったく出力しないオプションもあります。

使用例

source(output(
		AddressID as integer,
		AddressLine1 as string,
		AddressLine2 as string,
		City as string,
		StateProvince as string,
		CountryRegion as string,
		PostalCode as string,
		rowguid as string,
		ModifiedDate as timestamp
	),
	allowSchemaDrift: true,
	validateSchema: false,
	isolationLevel: 'READ_UNCOMMITTED',
	format: 'table') ~> source1
source(output(
		CustomerID as integer,
		AddressID as integer,
		AddressType as string,
		rowguid as string,
		ModifiedDate as timestamp
	),
	allowSchemaDrift: true,
	validateSchema: false,
	isolationLevel: 'READ_UNCOMMITTED',
	format: 'table') ~> source2
source1, source2 assert(expectExists(AddressLine1 == AddressLine1, false, 'nonUS', true(), 'only valid for U.S. addresses')) ~> Assert1

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

source1, source2 assert(expectTrue(CountryRegion == 'United States', false, 'nonUS', null, 'only valid for U.S. addresses'),
	expectExists(source1@AddressID == source2@AddressID, false, 'assertExist', StateProvince == 'Washington', toString(source1@AddressID) + ' already exists in Washington'),
	expectUnique(source1@AddressID, false, 'uniqueness', null, toString(source1@AddressID) + ' is not unqiue')) ~> Assert1

  • 列を選択および検証するには、選択変換を使用します。
  • 派生列変換を使用して、行の値を変換します。