0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Data Platform for Microsoft AzureAdvent Calendar 2021

Day 22

Azure Data Facoty / Synapse Analytics Mapping Dataflowでデータ品質検証によるエラーを起こす

Last updated at Posted at 2021-12-21

はじめに

Mapping Dataflowでデータ型の検証し、想定外のデータがある場合にエラーとする方法を紹介します。
確認した環境はデータ流出保護を有効にしたSynapse Analytics Workspaceです。
今後正規の方法が機能追加されるかもしれません。
→早速追加されてました。12/22 追記済み

2021/12時点の情報です。

注意

紹介する方法は条件によって動作しない可能性があるので、十分にテストしてからご利用ください。

参考

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

マッピング データ フロー変換の概要
Azure Synapse Analytics ワークスペースでのデータ流出の防止

確認手順

Dataflownの基本はわかることが前提の手順となります。

1. データの準備

適当なデータを用意します。
今回はAdventureWorksLTからcsv出力したデータを使いました。
AddressIDが数字で連携されるとして、これが文字列などが入ってしまう場合にエラーにしようと思います。

2021-12-21-19-44-49.png

AdventureWorks サンプルデータベース

2. データフローの作成

2.1. sorce

いたって普通にプロジェクションにより列を読み取ります。
プロジェクションの時点で型を決める場合、型に当てはまらない場合はNULLになります。
今回は文字列として読み取ります。

2021-12-21-19-49-29.png

2.2 assert

以下のように検証をかけることができます。

image.png

2.3. sink1

sinkを設定します。

image.png

3. 動作確認

実行結果は以下の通り。

image.png

4. データの内容変更して動作確認

先頭行を文字列にしました。

74e62a80beef.png)2021-12-21-19-59-02.png

実行結果は以下の通り。

image.png

rest版

assert を確認する前の方法を残します

2.2. 条件分岐

AddressIDがintかどうかで分岐させます。

2021-12-21-19-50-15.png

2.4. sink2

ここがポイントになります。
異常データはRESTシンクしてしまいます。

2021-12-21-19-54-45.png

RESTシンクの中身です。
存在しないダミーurlを指定します

2021-12-21-19-55-34.png

また、設定タブで挿入のみのシンクにします。

2021-12-21-19-57-40.png

最後に書き込み順序を指定しておきます(影響ないかもです)

2021-12-21-20-05-19.png

3. 動作確認

実行結果は以下の通り。
sink1にのみデータ書き込みが発生しますが、sink2はなにもしません。

2021-12-21-19-58-18.png

4. データの内容変更して動作確認

先頭行を文字列にしました。

74e62a80beef.png)2021-12-21-19-59-02.png

実行結果は以下の通り。

2021-12-21-20-03-28.png

補足

sink2が0となるので、他の方法もいけないかと検証しましたが、空行でデータ書き込み動作が発生するらしく、うまくいきませんでした。

Delta Lakeの場合:スキーマのマージを拒否したうえで異常データのみダミー列を投入→sink 0件の場合でもエラーとなる

SQL DBの場合:

  • 存在しないテーブルをsink2にした→マッピングエラー
  • 事前スクリプトででたらめなSQLを記述→パースエラー
0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?