Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
OpenMetadataとdbtによるデータカタログの構築
Search
Trs
December 18, 2023
11k
10
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
OpenMetadataとdbtによるデータカタログの構築
Trs
December 18, 2023
More Decks by Trs
See All by Trs
dbt Pythonモデルで実現するSnowflake活用術
trsnium
0
2.1k
HDAを駆使したプロシージャルワークフローのスケーリングについて
trsnium
2
1.5k
mlops16 勉強会
trsnium
0
1.4k
Embulk & Digdag Meetup 2020
trsnium
2
8.9k
Operation and improvement of image search platform
trsnium
1
8.8k
WEARにおけるGAE(Google App Engine)を用いた機械学習アプリケーションの運用について
trsnium
3
3.4k
Featured
See All Featured
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.2k
Raft: Consensus for Rubyists
vanstee
141
7.5k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
160
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Six Lessons from altMBA
skipperchong
29
4.3k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
270
A better future with KSS
kneath
240
18k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
180
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.3k
Producing Creativity
orderedlist
PRO
348
40k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Transcript
© 2023 LayerX Inc. OpenMetadataとdbtによるデータカタログの構築 Tokyo dbt Meetup #7 株式会社LayerX
バクラク事業部 機械学習・データ部 平田 拓也
2 © 2023 LayerX Inc. 自己紹介 平田 拓也(@TrsNium) 株式会社LayerX 機械学習・データ基盤部
データエンジニア 2023年11月よりLayerXにjoin これまで • エッジデバイス上でMLOpsをするためのSaaSの開発 • 自社ECサイトの機械学習を使ったプロダクトのSRE などをやってました →LayerXに転職して初めてdbtを触りました お手柔らかに、よろしくお願いします! mm
3 © 2023 LayerX Inc. バクラクシリーズラインナップ 稟議・支払申請・経費精算 仕訳・支払処理効率化 法人カードの発行・管理 帳票保存・ストレージ
帳票発行 * 経費精算のSlack連携は申請内容の通知のみ ・AIが領収書を5秒でデータ化 ・スマホアプリとSlack連携あり ・領収書の重複申請などミス防止機能 ・AIが請求書を5秒でデータ化 ・仕訳・振込データを自動作成 ・稟議から会計までスムーズに連携 ・年会費無料で何枚でも発行可 ・インボイス制度・電帳法対応 ・すべての決済で1%以上の還元 ・AIが書類を5秒でデータ化 ・あらゆる書類の電子保管に対応 ・電子取引・スキャナ保存に完全対応 ・帳票の一括作成も個別作成も自由自在 ・帳票の作成・稟議・送付・保存を一本化 ・レイアウトや項目のカスタマイズも可能
4 © 2023 LayerX Inc. 経理業務を一元管理し、債権・債務に関連する業務を一気通貫でなめらかに連携。経理業務の工数を大幅削減。 「バクラク」 の特徴 会計システム インターネット
バンキング (EBシステム) 法人カード 支払管理 経費精算 管理 請求書 支払管理 ワークフローツールの統一 経理ツールの統一 会計システム・ EBシステム連携 一 気 通 貫 で 連 携 出張申請 取引先申請 押印申請 契約申請 購買申請 法人カード 利用申請 請求書支払申請 経費精算申請 請求書 発行管理 保管場所の統一 領収書 保管 受領請求書 保管 発行帳票 保管 国税関係書類 保管
© 2023 LayerX Inc. 本日のアジェンダ
6 © 2023 LayerX Inc. 1. データ基盤の現状と利用状況 2. OpenMetadataとは 3.
OpenMetadataとdbtの環境 4. OpenMetadataとdbtの連携方法 5. データの取り込みとマッピング 6. エラーとトラブルシューティング 7. 課題と今後の展望 アジェンダ
© 2023 LayerX Inc. 1. データ基盤の現状と利用状況
8 © 2023 LayerX Inc. データ基盤の現状と利用状況 データ基盤の現状 データ分析に必要なデータは、ほとんどBigQuery上に存在している
9 © 2023 LayerX Inc. データ基盤の現状と利用状況 データ基盤の利用者と利用者から見た課題 • データ基盤の利用者 ◦
非エンジニアの割合が多い • 利用者の課題 ◦ 分析のナレッジを共有できない ◦ データ探索に時間がかかっている ◦ 分析開始時のデータプロファイリング負荷がある ◦ スキーマの変更を検知するのが難しい
10 © 2023 LayerX Inc. データ基盤の現状と利用状況 データ基盤の利用者と利用者から見た課題 • データ基盤の利用者 ◦
非エンジニアの割合が多い • 利用者の課題 ◦ 分析のナレッジを共有できない ◦ データ探索に時間がかかっている ◦ 分析開始時のデータプロファイリング負荷がある ◦ スキーマの変更を検知するのが難しい 利用者のユースケースにあったデータカタログを導入する必要がある
11 © 2023 LayerX Inc. データ基盤の現状と利用状況 dbt docsと弊社のデータカタログとしての期待値の違い (データモデリングとその文書化のツールとして、dbt docsはお手軽で有用です!)
• データカタログは、利用者の割合の多い非エンジニアにフレンドリーなものであって欲しい ◦ データ探索、ナレッジの共有などの容易さの観点では、dbt docsは機能的に不足している
12 © 2023 LayerX Inc. データ基盤の現状と利用状況 dbt docsと弊社のデータカタログとしての期待値の違い • データカタログは、利用者の割合の多い非エンジニアにフレンドリーなものであって欲しい
◦ データ探索、ナレッジの共有などの容易さの観点では、dbt docsは機能的に不足している データカタログとして、OpenMetadataの導入を決めた
13 © 2023 LayerX Inc. これまでのデータ基盤の課題 アナリストやビジネスユーザーのdbt利用状況が伸びない要因 • dbt ドキュメントへのアクセスの難しさ
• dbtの認知度と理解の不足 • 技術的な専門知識や経験の不足 • 社内トレーニング等の教育不足
© 2023 LayerX Inc. 2. OpenMetadataとは
15 © 2023 LayerX Inc. OpenMetadataとは OpenMetadataとは • データの標準メタデータを推進するオープンソースプロジェクト •
全てのメタデータを統合し、OpenMetadataで一元的に管理できるようになるもの
16 © 2023 LayerX Inc. OpenMetadataとは できること • データの検索 ◦
ElasticSearchとMySQLを使った、多種多様なメターデータ検索や文書検索機能 • プロファイリング&データの品質管理 ◦ テーブルの更新頻度やカラムのヌルの割合を可視化する機能 ◦ テストケースを定義し、品質の可視化を行う機能 • データガバナンス ◦ 用語集(Glossary)や分類(Classification)を共有することで、他チームとのコラボレーションを 簡単に行えるような機能 • セキュリティ ◦ ユーザー認証に各種SSOを利用できる機能
17 © 2023 LayerX Inc. OpenMetadataとは できること: データ検索 • テーブルではOwner,
Tag, Service, Service Type(BigQuery, MySQL), Database, Schema, Columnでデータを絞れる • 検索欄で全文検索できる
18 © 2023 LayerX Inc. OpenMetadataとは できること: プロファイリング&データの品質管理 OpenMetadataではテーブルプロファイリング、カラムプロファイリング、データ品質を可視化できる 出典:
https://docs.open-metadata.org/v1.2.x/connectors/ingestion/workflows/profiler
19 © 2023 LayerX Inc. OpenMetadataとは できること: データガバナンス 用語集やタグを定義し、データベースやスキーマなどに紐づけることで情報を共有しやすくできる
20 © 2023 LayerX Inc. OpenMetadataとは できること: セキュリティ ユーザー認証に色々なIDプロバイダーがデフォルトで使える 出典:
https://docs.open-metadata.org/v1.2.x/connectors/ingestion/workflows/profiler
21 © 2023 LayerX Inc. OpenMetadataとは できないこと • ない データカタログとして欲しい機能は網羅されている
22 © 2023 LayerX Inc. OpenMetadataとは アーキテクチャ • HTTP サーバー
- UI/APIを提供 • Apache Airflow(Optional) - 外部のメタデータを取り込む パイプライン • MySQL - メタデータ(カラムやテーブル)の関係性を格納 • ElasticSearch - メタデータの検索に利用 出典: https://docs.open-metadata.org/v1.2.x/developers/architecture
© 2023 LayerX Inc. 3. OpenMetadataとdbt Projectの環境
24 © 2023 LayerX Inc. OpenMetadataとdbt Projectの環境 dbt Projectの環境 Naked
Source Safe Source I/F Data Component Data Mart / Activation データエンジニア アナリティクスエンジニア アナリスト 匿名化・仮名化・同意フィルタリング・etc. データモデリング・用途特化
25 © 2023 LayerX Inc. OpenMetadataとdbt Projectの環境 OpenMetadataの環境
26 © 2023 LayerX Inc. OpenMetadataとdbt Projectの環境 OpenMetadataの環境
© 2023 LayerX Inc. 4. OpenMetadataとdbtの連携方法
28 © 2023 LayerX Inc. OpenMetadataとdbtの連携方法 dbt側で準備するもの • dbt compile/build等で出力されるmanifest.jsonやrun_ressult.json
• dbt cloudとの接続情報 上記のうちどちらかを準備する必要がある 上記の情報を解析し、OpenMetadataで処理をする
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の情報を取り込む
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の情報を取り込む ← このやり方を紹介します
© 2023 LayerX Inc. 5. データの取り込みとマッピング
32 © 2023 LayerX Inc. OpenMetadataとdbtの連携方法 metadataコマンドの主要機能 subcommand 説明 ingest
データソースからのメタデータを収集する lineage データソースの系譜情報を収集する profile テーブルからメタデータをプロファイリングする(nullの割合, uniqueの割合など) test テーブルに含まれるデータの品質をテストする
33 © 2023 LayerX Inc. OpenMetadataとdbtの連携方法 metadataコマンドの主要機能 subcommand 説明 ingest
データソースからのメタデータを収集する lineage データソースの系譜情報を収集する profile テーブルからメタデータをプロファイリングする(nullの割合, uniqueの割合など) test テーブルに含まれるデータの品質をテストする metadaコマンドではingestサブコマンドがdbtに対応している $ metadata ingest -c <PATH_TO_INGEST_YAML>
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
35 © 2023 LayerX Inc. データの取り込みとマッピング dbtとOpenMetadata上での情報の対応関係 dbt modelの情報はOpenMetadata上で、次のように取り扱われる dbt
OpenMetadata Tag (Classification)Tag Dependency Lineage Owner Owner Test Data Quality
36 © 2023 LayerX Inc. データの取り込みとマッピング 取り込まれたデータ(Tag)
37 © 2023 LayerX Inc. データの取り込みとマッピング 取り込まれたデータ(Lineage)
38 © 2023 LayerX Inc. データの取り込みとマッピング 取り込まれたデータ(owner)
39 © 2023 LayerX Inc. データの取り込みとマッピング 取り込まれたデータ(test)
© 2023 LayerX Inc. 6. エラーとトラブルシューティング
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が含まれていない
© 2023 LayerX Inc. 7. 課題と今後の展望
43 © 2023 LayerX Inc. 課題と今後の展望 OpenMetadataからdbtへ情報を反映する • 現状dbtからOpenMetadataへの1方通行でしか情報を反映できていない •
OpenMetadatanの情報はDBの中に保存されており、コード管理できていない Lineage, Tag, Ownerの反映 Documentの反映 metadataの取り込み OpenMetadataからdbtへ情報を反映し、ドキュメントをコード管理する
44 © 2023 LayerX Inc. 課題と今後の展望 BigQueryからのメタデータ取り込みを、よりセキュアにする OpenMetadataで利用できる、GCPとの認証方法 • ServiceAccount
Json Key Credentials • Application Default Credentials External Account Credentialsによる認証をサポート • OIDCを利用したGCP、AWS間の認証ができるようになる External Account Credentialsが流出しても、秘匿情報が含まれないため問題になりづらい
45 © 2023 LayerX Inc. 課題と今後の展望 Aurora RDSからのメタデータ取り込みを、よりセキュアに サポートされているMySQLの認証方法 •
パスワード認証 ← この方法で認証 • IAM認証 パスワード管理コストを下げるために、IAM認証に切り替えたい OpenMetadataではIAM認証をするためにアクセスキー、シークレットアクセスキーを用意する必要がある。 本来であればインスタンスに紐づくIAM Roleだけで認証できるはず....。 原因を調査し、最低限の情報でIAM認証できるようにしたい!
46 © 2023 LayerX Inc. 課題と今後の展望 OpenMetadataの設定をIaC化 • OpenMetadata上でユーザーやGCP Projectの管理をUIで行わなければならない
◦ バージョン更新等の検証/反映が難しい ◦ 設定をコード管理することができない 環境の再現性を得るために、Terraform Providerを作りIaC化
© 2023 LayerX Inc. まとめ
48 © 2023 LayerX Inc. まとめ OpenMetadataを導入し得られた恩恵 • カラムやスキーマやタグなどの情報で検索できるようになり、目的の情報へ素早く辿り着けるようになった •
テーブルやカラムのプロファイリングがされたことにより、データ分析開始時の負荷が減った • ナレッジのシェアをしやすい環境ができた
49 © 2023 LayerX Inc. We are hiring! LayerXではアナリスティックエンジニア、アナリストを積極的に採用中です! 少しでもご興味を持たれた方は、是非カジュアル面談にいらしてください!
© 2023 LayerX Inc.