
【Informatica Data Quality】インフォマティカで始めるジオコーディング
はじめに
こんにちは、データ事業本部の渡部です。
今回はInformaticaのData Qualityで使用できるジオコーディング機能を試してみようと思います。
Informatica Data Qualityとは
インフォマティカのデータ品質サービスです。
主なコンポーネントとしては以下の7つで、これらを使用してデータ品質の担保を図ります。
GUI上で各社のルールに従ってデータを磨くことができ、SQLやPythonに造詣がなくとも品質担保が可能です。
例えばカスタムで細かに変換設定が可能なルール仕様、参照データのような変換表を用意して変換するディクショナリなどが存在します。
なおデータ品質を担保する処理自体はInformaticaのETLサービスであるCloud Data Integrationでも実装しようと思えば可能です。
その中でデータ品質アセットを使う理由としては、データ加工に便利な機能が用意されていること・関数のように使いまわせる汎用性にあると思います。
また2025年7月のメジャーアップデートで、細かくデータ品質処理をカスタマイズできるルール仕様アセットがAPIとしてデプロイすることができるようになりました(プレビュー)。
onlinehelp.informatica.com/IICS/prod/dq/en/index.htm#page/rule-specification-asset/REST_APIs_for_rule_specifications.html
これを使用することで例えば各システムからAPI連携をして分析基盤に連携するパイプラインの場合に、上流からデータをクレンジングすることが可能で、InformaticaのAPIオーケストレーションサービスであるCloud Application Integrationとのシナジーが期待されます。
本当はこちらを最初にブログ化しようとしたのですが、API有効化ができず・・・。まだプレビュー段階なので、今後に期待です。
ジオコーディングとは
そして今回試そうと思ったのはジオコーディングです。
ジオコーディングは、住所などの地図情報から緯度経度といった座標値に変換することを言います。
データ分析においては、住所や地名という文字データを緯度経度という座標値に変換することで、範囲や距離・分布といった空間的な意味を持たして、より多角的な分析がしやすい形にするためにジオコーディングが利用されます。
Informaticaでジオコーディングを実現するのは、ベリファイヤ
です。
ベリファイヤは、アドレスレコードの精度および配達可能性を評価するアセットです。ベリファイヤを使用して、入力アドレスの精度の確認、アドレス内のエラーの修正、アドレスへの情報の追加を行えます。
また、ベリファイヤを使用して、各住所の品質を測定およびレポートし、住所のグローバルおよび国固有のエンリッチメントを取得し、国が定義する認証基準に従って住所を検証することもできます。
詳しくは以下の公式ドキュメントをご覧ください。
onlinehelp.informatica.com/IICS/prod/dq/ja/index.htm#page/verifier-asset/GUID-BEF122F0-9F92-41BF-A6B8-A1DD1BBF6A99.1.01.html
ジオコーディングを試す!
今回はデータ品質サービスを使用するので、メニューから「データ品質」を選択します。
新規
からベリファイヤ
を選択します。
ここは任意に設定をします。
「設定」から入力モデルとしては混合
を設定しました。
それぞれのモデルの下に説明があるのですが、こちらはこのベリファイヤという変換部品にデータを入れる際の入力の様相を決められます。
例えば個別であるならば、番地や市区町村・郵便番号をそれぞれ一つの項目に入れて連携するのですが、混合であれば郵便番号は個別の項目だけど、番地や市区町村は合わせて一つにして入れて連携をする形です。
続いて画面下部から具体的な入力項目と出力項目を定義します。ここで決めた定義にCDIのマッピングでデータソース側からデータを連携します。
出力項目にはジオコーディング
を選択しました。
右上の「•••」から詳細設定が可能です。
例えば以下のような入力区切り文字や、国の判定方法を設定することが可能です。
今回はデフォルトですが、入力定義の国
に渡す国コードから判定するようにしています。
CDIでマッピングを作成しました。
ソースのCSVファイルから先ほど作成したベリファイヤのジオコーディング処理を通り、ターゲットに連携をするマッピングとなります。
なお今回の検証のテストデータとして以下のCSVファイルを用意しました。
よくある県とそれ以外の部分で住所を分けて、郵便番号と国名を項目として用意しています。
"Prefecture" | "AddressLine" | "PostalCode" | "Country" |
---|---|---|---|
"Tokyo" | "5F Tokyo Kotsu Kaikan Bldg 2-10-1 Yurakucho Chiyoda-ku" | "100-0006" | "JP" |
"Tokyo" | "1-1-2 Oshiage Sumida-ku" | "131-0045" | "JP" |
"Kyoto" | "1 Kinkakujicho Kita-ku" | "603-8361" | "JP" |
"Okinawa" | "1-2 Shurikinjocho Naha" | "903-0815" | "JP" |
"Hokkaido" | "Kita 1 Jonishi 2 Chome Chuo-ku Sapporo" | "060-0001" | "JP" |
"Hiroshima" | "1-1 Miyajimacho Hatsukaichi" | "739-0588" | "JP" |
"Prefecture","AddressLine","PostalCode","Country"
"Tokyo","5F Tokyo Kotsu Kaikan Bldg, 2-10-1 Yurakucho, Chiyoda-ku","100-0006","JP"
"Tokyo","1-1-2 Oshiage, Sumida-ku","131-0045","JP"
"Kyoto","1 Kinkakujicho, Kita-ku","603-8361","JP"
"Okinawa","1-2 Shurikinjocho, Naha","903-0815","JP"
"Hokkaido","Kita 1 Jonishi, 2 Chome, Chuo-ku, Sapporo","060-0001","JP"
"Hiroshima","1-1 Miyajimacho, Hatsukaichi","739-0588","JP"
早速実行します。
エラーになりました。
内部エラー。DTMプロセスが予期せず終了しました。Informaticaグローバルカスタマサポートにお問い合わせください。
様々なドキュメントを調べてみましたが、どうやらライセンスが足りないようです。
そこでInformatica Japan様に問い合わせをさせていただき、無事期間限定のライセンスをいただきました。
ライセンスはファイルで連携されるので、Secure Agentがインストールされているサーバーにそのファイルを配置します。
ファイルの配置場所は管理者
画面 > ランタイム環境
> 使用しているSecureAgent > システム構成の詳細
からサービスでData Integration Server
を選択してCDQAVのパスに記載されています。
ファイル配置後、無事マッピングは成功しました。
ちなみに初回実行は10分ほどかかりました。ジオコーディング処理に使用するものをSecure Agentサーバーへダウンロードしているようです。
出力結果としては以下となります。
"到着点の正確性コード" | "到着点の座標" | "到着点の緯度" | "到着点の経度" | "ルーフトップの正確性コード" | "ルーフトップの座標" | "ルーフトップの緯度" | "ルーフトップの経度" | "番地中心点の正確性コード" | "番地中心点の座標" | "番地中心点の緯度" | "番地中心点の経度" | "市区町村中心点の正確性コード" | "市区町村中心点の座標" | "市区町村中心点の緯度" | "市区町村中心点の経度" | "郵便番号中心点の正確性コード" | "郵便番号中心点の座標" | "郵便番号中心点の緯度" | "郵便番号中心点の経度" | "AddressLine" | "Country" | "PostalCode" | "Prefecture" |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
"ErDataNotAvailable" | "" | "" | "" | "ErDataNotAvailable" | "" | "" | "" | "NothingFound" | "" | "" | "" | "LocalityCenter" | "35.673936, 139.761308" | "35.673936" | "139.761308" | "NothingFound" | "" | "" | "" | "5F Tokyo Kotsu Kaikan Bldg 2-10-1 Yurakucho Chiyoda-ku" | "JP" | "100-0006" | "Tokyo" |
"ErDataNotAvailable" | "" | "" | "" | "ErDataNotAvailable" | "" | "" | "" | "NothingFound" | "" | "" | "" | "LocalityCenter" | "35.711797, 139.816316" | "35.711797" | "139.816316" | "NothingFound" | "" | "" | "" | "1-1-2 Oshiage Sumida-ku" | "JP" | "131-0045" | "Tokyo" |
"ErDataNotAvailable" | "" | "" | "" | "ErDataNotAvailable" | "" | "" | "" | "NothingFound" | "" | "" | "" | "LocalityCenter" | "35.039268,135.729163" | "35.039268" | "135.729163" | "NothingFound" | "" | "" | "" | "1 Kinkakujicho Kita-ku" | "JP" | "603-8361" | "Kyoto" |
"ErDataNotAvailable" | "" | "" | "" | "ErDataNotAvailable" | "" | "" | "" | "NothingFound" | "" | "" | "" | "LocalityCenter" | "26.215519, 127.715960" | "26.215519" | "127.715960" | "NothingFound" | "" | "" | "" | "1-2 Shurikinjocho Naha" | "JP" | "903-0815" | "Okinawa" |
"ErDataNotAvailable" | "" | "" | "" | "ErDataNotAvailable" | "" | "" | "" | "NothingFound" | "" | "" | "" | "LocalityCenter" | "43.058892, 141.326158" | "43.058892" | "141.326158" | "NothingFound" | "" | "" | "" | "Kita 1 Jonishi 2 Chome Chuo-ku Sapporo" | "JP" | "060-0001" | "Hokkaido" |
"ErDataNotAvailable" | "" | "" | "" | "ErDataNotAvailable" | "" | "" | "" | "NothingFound" | "" | "" | "" | "LocalityCenter" | "34.300710, 132.327761" | "34.300710" | "132.327761" | "NothingFound" | "" | "" | "" | "1-1 Miyajimacho Hatsukaichi" | "JP" | "739-0588" | "Hiroshima" |
結論としては"市区町村中心点の座標"にLocalityCenter
と出力されており、市区町村中心点が座標としてジオコーディング出力されました。
おそらくベリファイヤに渡すテストデータのフォーマットがいけなくて市区町村中心点までの出力となったと思います。
ドキュメントに記載されている米国のデータ例でも実行してみましたがうまくいかなかったので、このあたりは問い合わせをしてフォーマットを聞いてみる必要がありそうです。
2レコード目はスカイツリーの住所を渡していましたが、墨田区押上の中心点がプロットされています。
金閣寺はこんな感じです。
(緯度経度地図)
さいごに
いかがでしたでしょうか。
Informaticaで簡単にジオコーディング処理を組むことができました。Geocoding APIを使用して処理を組んでいくよりかなり楽に実装ができますね。
気になるコストですが、ジオコーディングはIPUで動かすことが可能です。
消費体系はこのようになっていますので、ご確認いただければと思います。
(引用:informatica.com/content/dam/informatica-com/en/docs/informatica-cloud-and-product-description-schedule.pdf)