Upgrade to Pro — share decks privately, control downloads, hide ads and more …

増え続けるデータと向き合う: 仕組みとしての名寄せと基盤

Avatar for Masa (Mark) Fukui Masa (Mark) Fukui
May 27, 2025
280

増え続けるデータと向き合う: 仕組みとしての名寄せと基盤

Avatar for Masa (Mark) Fukui

Masa (Mark) Fukui

May 27, 2025
Tweet

Transcript

  1. © 2024 Finatext Holdings Ltd. データエンジニア @ 株式会社ナウキャスト • Data

    Holder Unit所属 • 主にデータパイプラインの開発・運用 • 最近は社内マスタシステム開発にも従事 趣味 • 音楽 (Math Rock, Midwest Emo, Pop Punkなど) • ドラム • FPSゲーム (Escape From Tarkovなど) • EDC (Everyday Carry) • Neovim https://github.com/masamerc 1 自己紹介 福井 理弘 / Masahiro Fukui / Masa パリのCatacombs (カタコンベ)にて (地下につくられた共同墓地 )
  2. © 2024 Finatext Holdings Ltd. 3 ナウキャスト会社紹介と現状 Data Service Business

    ビッグデータを用いたプロダクトを提供する事業。 Data & AI Solution Business データとAIで顧客のDXを支援する事業。 Data Service Platform Unit 事業横断でデータ基盤の高度化、R&Dなどを行うチーム。 Investment Research Unit 機関投資家向けに ビッグデータ分析 SaaSを提供。 Real Estate Unit 商圏分析や売上予測 モデルによる店舗物 件の診断サービスを 不動産会社に提供。 Data Holder Unit 提供元からデータを受領し、データパイプラインの構築を行うチーム。 Engineering Team データエンジニアリングと生成AI活用に精通した エンジニアリングチーム。 Consultant Team データとAIを用いたDXに特化したコンサルティ ングチーム。 Economic Research Unit ビッグデータから計 算したマクロ指数を 金融機関・官公庁等 に提供。 データプロダクトの提供と顧客支援の二つのビジネスを推進
  3. © 2024 Finatext Holdings Ltd. オルタナティブデータの商社としての機能を持つ 4 ナウキャスト会社紹介と現状 データウェアハウス ライセンスデータ

    データホルダー 解析 POSデータ 日本経済新聞 1,500店舗の スーパーマーケッ ト True Data 4,000店舗の スーパー、 ドラックストア 2,600店舗の 家電小売 クレジットカードデータ JCB JCBカードの 所有者・加盟店 クレディセゾン セゾンカードの 所有者 求人データ 人流データ TV広告データ KDDI 携帯搭載の 地理データ フロッグ 130超の日本の web求人広告 サイト エムデータ 日本の全無料 チャンネンルの TV広告データ 官公庁・シンクタンク・投資家 エンドユーザー 投資家 不動産事業者
  4. © 2024 Finatext Holdings Ltd. 5 ナウキャスト会社紹介と現状 ナウキャストは事業の拡張期に入っている • 取り扱うデータが増えてきたし、これからも増えていく

    • 一つの事業では取り扱えないような新規データの獲得・クレンジング・マスタリング、データ分析切り口の 開発をより加速していく 創業・事業検証 主軸事業の磨き込み 既存事業の顧客・機能の拡張 / 新規事業創出 2015.2 Nowcast創業 2016.1 日経CPINowの 販売開始 2016.8 Finatextと経営統 合 2013.5 東大日次物価指数の 発表 2018.1 CCCとの共同事 業を発表 2018.11 JCB消費NOW 有償版の開始 2019.3 日経新聞と共催で 「オルタナティブデータ カンファレンス」を初開 催 2019.10 レポートサービス の開始 2020.4 家電POSデータを 開始 2020.6 内閣府V-RESASで 日経CPINow・ JCB消費NOWの 提供を開始 2017.5 JCB消費NOW のリリース 2017.12 株式会社 TrueDataと共 同事業をスタート 2016.11 機関投資家向け 事業を開始 2021.9 投資分析サービス 「AlternaData」 の提供開始 2021.10 ピッチイベント 「UPGRADE with TOKYO 第15回」で 優勝 2022.8 クレディセゾンと 商業施設のテナン ト選定支援サービ スを提供開始 2023.1 東京都と協働し、「都内 中小企業の景況指標 ダッシュボード」を開発 2024.4 データ基盤構築 や、生成AI導入支 援を行う「データ &AIソリューショ ン事業」が誕生
  5. © 2024 Finatext Holdings Ltd. 最近の重要なこと 仕組みとしての名寄せと基盤: イントロ 最近はデータソースが増え続けている: •

    異なるデータソースを組み合わせた分析・開発ニーズ が急増 • Self-service platform によりデータの取り込みス ピードが加速 増え続けるデータソースに対応するために重要になってき たこと: 1. 複数データの組み合わせを実現する名寄せシステムの 整備と標準化 ◦ 企業・法人名の名寄せ ◦ 住所の正規化 2. 複数のデータソースをdbtで柔軟に管理
  6. © 2024 Finatext Holdings Ltd. 最近の重要なこと 仕組みとしての名寄せと基盤: イントロ 最近はデータソースが増え続けている: •

    異なるデータソースを組み合わせた分析・開発ニーズ が急増 • Self-service platform によりデータの取り込みス ピードが加速 増え続けるデータソースに対応するために重要になってき たこと: 1. 複数データの組み合わせを実現する名寄せシステムの 整備と標準化 ◦ 企業・法人名の名寄せ ◦ 住所の正規化 2. 複数のデータソースをdbtで柔軟に管理
  7. © 2024 Finatext Holdings Ltd. 最近の重要なこと 仕組みとしての名寄せと基盤: イントロ 最近はデータソースが増え続けている: •

    異なるデータソースを組み合わせた分析・開発ニーズ が急増 • Self-service platform によりデータの取り込みス ピードが加速 増え続けるデータソースに対応するために重要になってき たこと: 1. 複数データの組み合わせを実現する名寄せシステムの 整備と標準化 ◦ 企業・法人名の名寄せ ◦ 住所の正規化 2. 複数のデータソースをdbtで柔軟に管理
  8. © 2024 Finatext Holdings Ltd. 最近の重要なこと 仕組みとしての名寄せと基盤: イントロ 最近はデータソースが増え続けている: •

    異なるデータソースを組み合わせた分析・開発ニーズ が急増 • Self-service platform によりデータの取り込みス ピードが加速 増え続けるデータソースに対応するために重要になってき たこと: 1. 複数データの組み合わせを実現する名寄せシステムの 整備と標準化 ◦ 企業・法人名の名寄せ ◦ 住所の正規化 2. 複数のデータソースをdbtで柔軟に管理
  9. © 2024 Finatext Holdings Ltd. 名寄せシステムの整備と標準化とは 仕組みとしての名寄せと基盤: イントロ 名寄せとは: 表記ゆれを整えて実質的に同じデータ同士を正しく

    突き合わせられるようにする処理のこと (techblog宣伝: データに付加価値を与える技術) 標準化とは: 名寄せ手法を統一した上で色々なところで使えるよう にすること Nowcastでは様々なユースケースで重要な 2つのデータ項目にアプローチ • 企業・法人名 (の名寄せ) • 住所 (の正規化) POSデータのメーカー表記揺れの例
  10. © 2024 Finatext Holdings Ltd. 企業のデータや情報が整備されていることのメリットは大きい: • Nowcastで取り扱うデータには”企業”が頻出する ◦ 決済データの店舗の運営企業

    ◦ 求人データであれば求人を出している企業 • 分析の切り口なども企業であることは多い → 元々法人番号には目をつけており 既存データに対して付与をし始めたりをしていた 企業・法人名の名寄せ: 法人番号への着目 仕組みとしての名寄せと基盤: 企業・法人名の名寄せ 法人番号 (Corporate Number) • 2015年10月に導入 • 日本で事業を営む法人(会社・団体)に 1つず つ割り当てられる13桁の番号 • 法人番号は、利用範囲の制約がなく、誰でも 自由に利用可能 • Managed by 国税庁 株式会社ナウキャスト 8010001165825
  11. © 2024 Finatext Holdings Ltd. 企業・法人名の名寄せ: 名寄せロジックのサイロ化が課題 仕組みとしての名寄せと基盤: 企業・法人名の名寄せ 法人番号に着目するのは良いアプローチだったが。。。

    • 名寄せロジックが各プロジェクトに分散していた • 各プロジェクトで名寄せ先の定義や正規データ(SSOT)が バラバラで統制が取れていなかった よって以下の取り組みをスタート: • 法人番号をコアとした法人マスタ管理 • 名寄せコードやシステムの中央管理
  12. © 2024 Finatext Holdings Ltd. 企業・法人名の名寄せ: 法人マスタの整備スタート 仕組みとしての名寄せと基盤: 企業・法人名の名寄せ 正解データ・SSOT法人マスタが無い問題に対処すべく

    コアとなる法人マスタの整備をスタート: • 法人番号・基本情報のソースは国税庁 • PIT(Point-in-time)による時点管理 • 日次更新 法人マスタを正解データに名寄せ機能を開発
  13. © 2024 Finatext Holdings Ltd. 企業・法人名の名寄せ: どこでも使える実装 仕組みとしての名寄せと基盤: 企業・法人名の名寄せ 名寄せの処理を開発するだけではなく

    社内でどこでも利用できることが重要 様々なサポートしたいユースケースが存在: • AdhocにSnowflakeで名寄せ処理 • DBT Pipelineの処理の中で利用 • 非エンジニアユーザーによる業務APPでの利用 • Batch Jobで利用 → Pythonで名寄せロジック・機能を開発し   Snowflake / APIサーバー / Batch用コンテナ上に 同じコードベースからデプロイするようにした
  14. © 2024 Finatext Holdings Ltd. 名寄せ処理の実装について: Snowflake Stored Procedure /

    UDFとしてのDeploy (1/3) 仕組みとしての名寄せと基盤: 企業・法人名の名寄せ Snowflake上のデータ処理において名寄せを使えるように UDF・Stored Procedureと分けて処理をDeploy (CLI / Snowpark) UDF: 文字列クレンジングなど前処理がメイン: • シンプルな (input: str) -> str なもの • テストしやすい単位で用意 Stored Procedure: 実際の突合処理: • UDFを内部で利用 • 法人マスタ (テーブル) 参照が生まれるので Stored Procedureにて実装 • 実際にユーザーが使うのはこちら
  15. © 2024 Finatext Holdings Ltd. 使い方の例としては: • SnowflakeのWorksheetでBulkで手動法人番号付与 • DBT

    Pipelineの処理の中でBulkで法人番号付与 補足 DBTにおいてStored Procedureを走らせる時は Python Modelを介してMaterializeしている: • Stored Procedureの処理の中でTABLEを返していても DBTが受け取る処理は処理結果の 1行のみ (SQLモデルの場合) • Python Modelで一度実際の返ってきているデータを受け取って中身を取 り出して返すWorkaroundを入れている 名寄せ処理の実装について: Snowflake Stored Procedure / UDFとしてのDeploy (2/3) 仕組みとしての名寄せと基盤: 企業・法人名の名寄せ Snowsight WorksheetでCall Python Modelを介してDBT PipelineにてCall
  16. © 2024 Finatext Holdings Ltd. 名寄せ処理の実装について: Snowflake Stored Procedure /

    UDFとしてのDeploy (3/3) 仕組みとしての名寄せと基盤: 企業・法人名の名寄せ 権限はTerraformで管理している 共通Roleに対して以下のオブジェクトレベルの 権限をパッケージ化: • 法人マスタテーブルの参照権限 • UDFのUSAGE権限 • ストアドプロシージャのUSAGE権限 (+ SCHEMA) この共通ロールを各Functional Roleが継承して使う Terraformにおいてある程度のSelf-service化も実現: • 利用したい場合は、TerraformのRole Moduleに1行追加するだ けでOK
  17. © 2024 Finatext Holdings Ltd. 名寄せ処理の実装について: Snowflake外・ECSでの利用 仕組みとしての名寄せと基盤: 企業・法人名の名寄せ Snowflake外のユースケースも存在:

    • 非エンジニアユーザーが手動で名寄せ・ 法人検索ができる業務アプリでの利用 • 社内のインターナルシステムでの名寄せ・曖昧法人検索 の利用 • Snowflake外でのECSタスクでのバッチ処理 同じコードベースからECR・ECSへシンプルにDeploy: • Batch Job用イメージ ◦ AirflowやAdhocなECS Batch Jobでの利用をサポート • APIサーバー用イメージ ◦ 業務アプリや社内システムでの利用をサポート 開発中
  18. © 2024 Finatext Holdings Ltd. 都道府県省略の有無 • 東京都千代田区霞が関一丁目3番2号 • 千代田区霞が関一丁目3番2号

    番地などの表記 • 東京都千代田区霞が関一丁目3番2号 • 東京都千代田区霞が関1-3-2 表記・漢字の違い • 神奈川県横浜市旭区中希望が丘1-1 • 神奈川県横浜市旭区中希望ヶ丘1-1 市区町村レベルでの揺れ • 茅ヶ崎市(神奈川県) • 茅ケ崎市(神奈川県) • 安芸(郡)(広島県) • 安芸(市)(高知県) 住所の表記揺れはしょうがない 仕組みとしての名寄せと基盤: 住所正規化 住所正規化も避けて通れない課題 企業名の名寄せと同様に住所もデータソース ごとに表記の揺れが発生する これはある程度「しょうがない」ことではあるが 連携や統合の妨げになるケースも少なくない → 住所を正規化できるツール・仕組みも求められる 表記揺れの例
  19. © 2024 Finatext Holdings Ltd. ABRジオコーダーを試してみる 仕組みとしての名寄せと基盤: 住所正規化 https://lp.geocoder.address-br.digital.go.jp/ 入力の住所文字列をデジタル庁の住所マスタ

    (ABR: Address Base Registry)と突合して正規化された住所を出 力・代表座標情報を付与するOSS 機能: • ABRの住所表記、階層に合わせて正規化した 住所文字列・町字 ID ・緯度経度等を出力 • 町字IDの付与 • ABR座標情報の付与 特徴: • TypeScript製のCLIとAPI Server • 開発もデジタル庁 • MITライセンス で利用可能(商用利用含む) ABR Geocoder
  20. © 2024 Finatext Holdings Ltd. 実装の紹介 仕組みとしての名寄せと基盤: 住所正規化 企業名の名寄せ同様に基本的にはECSとしてBatch用 ・API用どちらもDeploy

    • BatchはS3をInputとOutputの受け渡しに使用 • API Serverは社内の業務Applicationなど から利用可能 Snowflake上での正規化住所データの使用は バッチでS3に結果を格納し外部テーブルで対応 External Access Integrationを利用したAPI経由の Snowflake上の住所正規化はまだ試せていない 開発中
  21. © 2024 Finatext Holdings Ltd. 使用例の紹介 仕組みとしての名寄せと基盤: 住所正規化 法人住所への座標付与 (ジオコーディング):

    • 法人の住所から代表地点の座標をデータに付与 • 施設や駅のなどの座標と組み合わせて距離を計算 ◦ 最近はH3 Indexを使った距離計算の 最適化などもトライ (techblog 宣伝: H3 Indexを使う検索の高速化) 住所データのクレンジング: • 表記揺れの修正 • 都道府県の無い住所データの住所補完
  22. © 2024 Finatext Holdings Ltd. マスタ系Projectは単一dbt projectで管理 仕組みとしての名寄せと基盤: 複数のデータソースをdbtでPipeline管理 Nowcastではdbtモデルはモノレポで管理

    基本的にはデータソースごとにdbt projectが作られる 複数データソースを扱うマスタ系のデータの場合: • データソース間でカラムのDescriptionなど を共有したい • 依存関係をデータソース間で作りたい → マスタ系は基本同じProjectで管理することに その上で工夫が必要だった点 • 更新頻度の違うデータを同じProjectで管理 • カラムのDocs / Descriptionは共通ものを定義する マスタDBT Projectのイメージ
  23. © 2024 Finatext Holdings Ltd. 更新頻度・タイミングの違うモデルはdbt tagsで選択 dbt tags: •

    modelやtestなどのobjectにタグ付けできる機能 • AND条件: カンマで区切る ◦ _tag:A,tag:B_→ A and B • OR条件: スペースで区切る ◦ _tag:A tag:B_→ A or B 基本的にはANDで指定する形で運用 定期更新するものをpipeline、手動更新しかしないものを manualなどタグ付けして運用 tags | dbt Developer Hub 更新頻度の違うデータを同じdbt projectで管理 仕組みとしての名寄せと基盤: 複数のデータソースをdbtでPipeline管理
  24. © 2024 Finatext Holdings Ltd. カラムのDocs / Descriptionは共通ものを定義する 仕組みとしての名寄せと基盤: 複数のデータソースをdbtでPipeline管理

    dbtのDocs Blockを使うことでカラムのdescriptionを 一箇所に集めてモデル定義で使えるようにする dbt osmosisもPlatform的に利用可能ではあるが検討中... • 同名別意義に弱い? • 共通のDocsを集めていく戦略とコンフリクトする? About documentation | dbt Developer Hub dbt/docs/columns.md dbt/models/schema.yml
  25. © 2024 Finatext Holdings Ltd. データのカタログ化が急務 増え続けるデータソース • 増え続けるデータソースに対してドキュメント整備が追いつかない ◦

    これまではナレッジベースにデータOwnerが自主的に記載 • データ間の依存も複雑になってきている • リポジトリを見に行かないとどのデータを誰が運用しているのかわからない データ利用者の拡大 • エンジニア以外のBizメンバーやAnalystのデータ利用も進んできた • 今後はナウキャスト以外にもグループ内でのデータ展開を見据える • 非エンジニアも理解できるカタログが必要ユーザーフレンドリーなDocsが必要 → Lineageの可視化やDocumentationに特化したデータカタログツールが必要 直近のチャレンジと動き
  26. © 2024 Finatext Holdings Ltd. 29 直近のチャレンジと動き [WIP] OpenMetadataの導入 (1/2)

    現在Data Service Platform Unit主導でOSSの データカタログPlatformであるOpenMetadataを導入中 • データに関する情報を一元管理してカタログとして 見える化 • スキーマやカラムのDescriptionといったデータ はdbt(のartifact)から直接取得 • Data profilingやLineageの可視化も可能
  27. © 2024 Finatext Holdings Ltd. 30 直近のチャレンジと動き [WIP] OpenMetadataの導入 (2/2)

    各データアセットについてデータOwnerの設定が可能 • 実際のユーザーの中からOwnerを設定 • ユーザーはOwnerに対してDescriptionなどの更新を リクエストすることなどが可能 ユーザーはデータアセットを”お気に入り”登録できる • GitHubのStar, YouTubeのSubscribeみたいなもの • “My Data”ページにおいてお気に入りしたデータの 直近のUpdateなどActivityを一覧で把握が可能 → Ownerとしては変更をより効率的にアナウンスでき、 ユーザーとしてはデータと関連情報の発見が 容易になることを期待
  28. © 2024 Finatext Holdings Ltd. 31 まとめ • データが増え続ける中で様々なデータを組み合わせるための名寄せや正規化などといったことが必要になっ てきた

    ◦ 企業名に関しては法人番号をベースとしたマスタを構築し名寄せ処理を用意 ◦ 住所に関しては正規化ツールの導入 • 複数のデータを効率良くdbtで処理するための工夫も必要になった ◦ tagを使ったモデルの選択 ◦ doc blocksを使ったDocumentationの一元管理 • データのドキュメンテーションや発見が困難なことが課題として浮上した ◦ OpenMetadataの導入を推進中 紹介した関連techblog • データに付加価値を与える技術 by Shota Numajiri • H3 Indexを使う検索の高速化 by Toshihiro Tokuyama
  29. © 2024 Finatext Holdings Ltd. 32 We’re hiring! ナウキャストではデータ系職種・エンジニアを絶賛採用募集中です! •

    データエンジニア • データサイエンティスト • アナリティクスエンジニア • データプラットフォームエンジニア • サーバーサイドエンジニア • and more カジュアル面談応募フォームよりお申込みください: https://forms.gle/r69LwG3cLAjiGvY66 ナウキャストについて詳しく知りたい方は: Nowcast Career