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

OpenMetadataとdbtによるデータカタログの構築

Trs
December 18, 2023
5.5k

 OpenMetadataとdbtによるデータカタログの構築

Trs

December 18, 2023
Tweet

Transcript

  1. 2 © 2023 LayerX Inc. 自己紹介 平田 拓也(@TrsNium) 株式会社LayerX 機械学習・データ基盤部

    データエンジニア 2023年11月よりLayerXにjoin これまで • エッジデバイス上でMLOpsをするためのSaaSの開発 • 自社ECサイトの機械学習を使ったプロダクトのSRE などをやってました →LayerXに転職して初めてdbtを触りました お手柔らかに、よろしくお願いします! mm
  2. 3 © 2023 LayerX Inc. バクラクシリーズラインナップ 稟議・支払申請・経費精算 仕訳・支払処理効率化 法人カードの発行・管理 帳票保存・ストレージ

    帳票発行 * 経費精算のSlack連携は申請内容の通知のみ ・AIが領収書を5秒でデータ化 ・スマホアプリとSlack連携あり ・領収書の重複申請などミス防止機能 ・AIが請求書を5秒でデータ化 ・仕訳・振込データを自動作成 ・稟議から会計までスムーズに連携 ・年会費無料で何枚でも発行可 ・インボイス制度・電帳法対応 ・すべての決済で1%以上の還元 ・AIが書類を5秒でデータ化 ・あらゆる書類の電子保管に対応 ・電子取引・スキャナ保存に完全対応 ・帳票の一括作成も個別作成も自由自在 ・帳票の作成・稟議・送付・保存を一本化 ・レイアウトや項目のカスタマイズも可能
  3. 4 © 2023 LayerX Inc. 経理業務を一元管理し、債権・債務に関連する業務を一気通貫でなめらかに連携。経理業務の工数を大幅削減。 「バクラク」 の特徴 会計システム インターネット

    バンキング (EBシステム) 法人カード 支払管理 経費精算 管理 請求書 支払管理 ワークフローツールの統一 経理ツールの統一 会計システム・ EBシステム連携 一 気 通 貫 で 連 携 出張申請 取引先申請 押印申請 契約申請 購買申請 法人カード 利用申請 請求書支払申請 経費精算申請 請求書 発行管理 保管場所の統一 領収書 保管 受領請求書 保管 発行帳票 保管 国税関係書類 保管
  4. 6 © 2023 LayerX Inc. 1. データ基盤の現状と利用状況 2. OpenMetadataとは 3.

    OpenMetadataとdbtの環境 4. OpenMetadataとdbtの連携方法 5. データの取り込みとマッピング 6. エラーとトラブルシューティング 7. 課題と今後の展望 アジェンダ
  5. 9 © 2023 LayerX Inc. データ基盤の現状と利用状況 データ基盤の利用者と利用者から見た課題 • データ基盤の利用者 ◦

    非エンジニアの割合が多い • 利用者の課題 ◦ 分析のナレッジを共有できない ◦ データ探索に時間がかかっている ◦ 分析開始時のデータプロファイリング負荷がある ◦ スキーマの変更を検知するのが難しい
  6. 10 © 2023 LayerX Inc. データ基盤の現状と利用状況 データ基盤の利用者と利用者から見た課題 • データ基盤の利用者 ◦

    非エンジニアの割合が多い • 利用者の課題 ◦ 分析のナレッジを共有できない ◦ データ探索に時間がかかっている ◦ 分析開始時のデータプロファイリング負荷がある ◦ スキーマの変更を検知するのが難しい 利用者のユースケースにあったデータカタログを導入する必要がある
  7. 11 © 2023 LayerX Inc. データ基盤の現状と利用状況 dbt docsと弊社のデータカタログとしての期待値の違い (データモデリングとその文書化のツールとして、dbt docsはお手軽で有用です!)

    • データカタログは、利用者の割合の多い非エンジニアにフレンドリーなものであって欲しい ◦ データ探索、ナレッジの共有などの容易さの観点では、dbt docsは機能的に不足している
  8. 12 © 2023 LayerX Inc. データ基盤の現状と利用状況 dbt docsと弊社のデータカタログとしての期待値の違い • データカタログは、利用者の割合の多い非エンジニアにフレンドリーなものであって欲しい

    ◦ データ探索、ナレッジの共有などの容易さの観点では、dbt docsは機能的に不足している データカタログとして、OpenMetadataの導入を決めた
  9. 13 © 2023 LayerX Inc. これまでのデータ基盤の課題 アナリストやビジネスユーザーのdbt利用状況が伸びない要因 • dbt ドキュメントへのアクセスの難しさ

    • dbtの認知度と理解の不足 • 技術的な専門知識や経験の不足 • 社内トレーニング等の教育不足
  10. 15 © 2023 LayerX Inc. OpenMetadataとは OpenMetadataとは • データの標準メタデータを推進するオープンソースプロジェクト •

    全てのメタデータを統合し、OpenMetadataで一元的に管理できるようになるもの
  11. 16 © 2023 LayerX Inc. OpenMetadataとは できること • データの検索 ◦

    ElasticSearchとMySQLを使った、多種多様なメターデータ検索や文書検索機能 • プロファイリング&データの品質管理 ◦ テーブルの更新頻度やカラムのヌルの割合を可視化する機能 ◦ テストケースを定義し、品質の可視化を行う機能 • データガバナンス ◦ 用語集(Glossary)や分類(Classification)を共有することで、他チームとのコラボレーションを 簡単に行えるような機能 • セキュリティ ◦ ユーザー認証に各種SSOを利用できる機能
  12. 17 © 2023 LayerX Inc. OpenMetadataとは できること: データ検索 • テーブルではOwner,

    Tag, Service, Service Type(BigQuery, MySQL), Database, Schema, Columnでデータを絞れる • 検索欄で全文検索できる
  13. 22 © 2023 LayerX Inc. OpenMetadataとは アーキテクチャ • HTTP サーバー

    - UI/APIを提供 • Apache Airflow(Optional) - 外部のメタデータを取り込む パイプライン • MySQL - メタデータ(カラムやテーブル)の関係性を格納 • ElasticSearch - メタデータの検索に利用 出典: https://docs.open-metadata.org/v1.2.x/developers/architecture
  14. 24 © 2023 LayerX Inc. OpenMetadataとdbt Projectの環境 dbt Projectの環境 Naked

    Source Safe Source I/F Data Component Data Mart / Activation データエンジニア アナリティクスエンジニア アナリスト 匿名化・仮名化・同意フィルタリング・etc. データモデリング・用途特化
  15. 28 © 2023 LayerX Inc. OpenMetadataとdbtの連携方法 dbt側で準備するもの • dbt compile/build等で出力されるmanifest.jsonやrun_ressult.json

    • dbt cloudとの接続情報 上記のうちどちらかを準備する必要がある 上記の情報を解析し、OpenMetadataで処理をする
  16. 29 © 2023 LayerX Inc. OpenMetadataとdbtの連携方法 OpenMetadataから連携の設定を行う OpenMetadataでは大まかに3種類の連携設定・実行方法が用意されている • OpenMetadataのUIでdbtの設定をし、Apache

    Airflowでdbtの情報を取り込む • Apache AirflowのDagを作成し、Apache Airflowでdbtの情報を取り込む • dbtの設定をyamlで記述し、metadataコマンドでdbtの情報を取り込む
  17. 30 © 2023 LayerX Inc. OpenMetadataとdbtの連携方法 OpenMetadataから連携の設定を行う OpenMetadataでは大まかに3種類の連携設定・実行方法が用意されている • OpenMetadataのUIでdbtの設定をし、Apache

    Airflowでdbtの情報を取り込む • Apache AirflowのDagを作成し、Apache Airflowでdbtの情報を取り込む • dbtの設定をyamlで記述し、metadataコマンドでdbtの情報を取り込む ← このやり方を紹介します
  18. 32 © 2023 LayerX Inc. OpenMetadataとdbtの連携方法 metadataコマンドの主要機能 subcommand 説明 ingest

    データソースからのメタデータを収集する lineage データソースの系譜情報を収集する profile テーブルからメタデータをプロファイリングする(nullの割合, uniqueの割合など) test テーブルに含まれるデータの品質をテストする
  19. 33 © 2023 LayerX Inc. OpenMetadataとdbtの連携方法 metadataコマンドの主要機能 subcommand 説明 ingest

    データソースからのメタデータを収集する lineage データソースの系譜情報を収集する profile テーブルからメタデータをプロファイリングする(nullの割合, uniqueの割合など) test テーブルに含まれるデータの品質をテストする metadaコマンドではingestサブコマンドがdbtに対応している $ metadata ingest -c <PATH_TO_INGEST_YAML>
  20. 34 © 2023 LayerX Inc. データの取り込みとマッピング yamlにdbt取り込みようの設定を記述する source: type: dbt

    serviceName: ${TARGET_DATABASE} sourceConfig: config: type: DBT dbtConfigSource: # For S3 dbtSecurityConfig: awsRegion: ap-northeast-1 dbtPrefixConfig: dbtBucketName: dbt-artifact dbtObjectPrefix: "dbt/" sink: type: metadata-rest config: {} workflowConfig: openMetadataServerConfig: hostPort: ${OPENMETADATA_INGESTION_URL} authProvider: openmetadata securityConfig: jwtToken: ${OPENMETADATA_INGESTION_JWT_TOKEN} ←ソースとなるdbtの設定を記述する ←dbtの情報を反映したい(OpenMetadata上の)データベースを選択する ←OpenMetadataのAPIエンドポイント ←認証用のjwt token
  21. 41 © 2023 LayerX Inc. エラーとトラブルシューティング metadata ingestに成功するがOpenMetadata上で反映されない dbtの連携に成功すると、UI上でdbtタブが表示される dbtタブが表示されない場合に考えられる原因

    • dbt manifest.jsonに含まれるdatabase, schema, name, aliasがOpenMetadata上の情報と 一致していない • dbt manifest.jsonにcompiled_codeもしくはcompiled_sqlが含まれていない
  22. 43 © 2023 LayerX Inc. 課題と今後の展望 OpenMetadataからdbtへ情報を反映する • 現状dbtからOpenMetadataへの1方通行でしか情報を反映できていない •

    OpenMetadatanの情報はDBの中に保存されており、コード管理できていない Lineage, Tag, Ownerの反映 Documentの反映 metadataの取り込み OpenMetadataからdbtへ情報を反映し、ドキュメントをコード管理する
  23. 44 © 2023 LayerX Inc. 課題と今後の展望 BigQueryからのメタデータ取り込みを、よりセキュアにする OpenMetadataで利用できる、GCPとの認証方法 • ServiceAccount

    Json Key Credentials • Application Default Credentials External Account Credentialsによる認証をサポート • OIDCを利用したGCP、AWS間の認証ができるようになる External Account Credentialsが流出しても、秘匿情報が含まれないため問題になりづらい
  24. 45 © 2023 LayerX Inc. 課題と今後の展望 Aurora RDSからのメタデータ取り込みを、よりセキュアに サポートされているMySQLの認証方法 •

    パスワード認証 ← この方法で認証 • IAM認証 パスワード管理コストを下げるために、IAM認証に切り替えたい OpenMetadataではIAM認証をするためにアクセスキー、シークレットアクセスキーを用意する必要がある。 本来であればインスタンスに紐づくIAM Roleだけで認証できるはず....。 原因を調査し、最低限の情報でIAM認証できるようにしたい!
  25. 46 © 2023 LayerX Inc. 課題と今後の展望 OpenMetadataの設定をIaC化 • OpenMetadata上でユーザーやGCP Projectの管理をUIで行わなければならない

    ◦ バージョン更新等の検証/反映が難しい ◦ 設定をコード管理することができない 環境の再現性を得るために、Terraform Providerを作りIaC化
  26. 48 © 2023 LayerX Inc. まとめ OpenMetadataを導入し得られた恩恵 • カラムやスキーマやタグなどの情報で検索できるようになり、目的の情報へ素早く辿り着けるようになった •

    テーブルやカラムのプロファイリングがされたことにより、データ分析開始時の負荷が減った • ナレッジのシェアをしやすい環境ができた