OpenMetadataとdbtによるデータカタログの構築
by
Trs
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
© 2023 LayerX Inc. OpenMetadataとdbtによるデータカタログの構築 Tokyo dbt Meetup #7 株式会社LayerX バクラク事業部 機械学習・データ部 平田 拓也
Slide 2
Slide 2 text
2 © 2023 LayerX Inc. 自己紹介 平田 拓也(@TrsNium) 株式会社LayerX 機械学習・データ基盤部 データエンジニア 2023年11月よりLayerXにjoin これまで ● エッジデバイス上でMLOpsをするためのSaaSの開発 ● 自社ECサイトの機械学習を使ったプロダクトのSRE などをやってました →LayerXに転職して初めてdbtを触りました お手柔らかに、よろしくお願いします! mm
Slide 3
Slide 3 text
3 © 2023 LayerX Inc. バクラクシリーズラインナップ 稟議・支払申請・経費精算 仕訳・支払処理効率化 法人カードの発行・管理 帳票保存・ストレージ 帳票発行 * 経費精算のSlack連携は申請内容の通知のみ ・AIが領収書を5秒でデータ化 ・スマホアプリとSlack連携あり ・領収書の重複申請などミス防止機能 ・AIが請求書を5秒でデータ化 ・仕訳・振込データを自動作成 ・稟議から会計までスムーズに連携 ・年会費無料で何枚でも発行可 ・インボイス制度・電帳法対応 ・すべての決済で1%以上の還元 ・AIが書類を5秒でデータ化 ・あらゆる書類の電子保管に対応 ・電子取引・スキャナ保存に完全対応 ・帳票の一括作成も個別作成も自由自在 ・帳票の作成・稟議・送付・保存を一本化 ・レイアウトや項目のカスタマイズも可能
Slide 4
Slide 4 text
4 © 2023 LayerX Inc. 経理業務を一元管理し、債権・債務に関連する業務を一気通貫でなめらかに連携。経理業務の工数を大幅削減。 「バクラク」 の特徴 会計システム インターネット バンキング (EBシステム) 法人カード 支払管理 経費精算 管理 請求書 支払管理 ワークフローツールの統一 経理ツールの統一 会計システム・ EBシステム連携 一 気 通 貫 で 連 携 出張申請 取引先申請 押印申請 契約申請 購買申請 法人カード 利用申請 請求書支払申請 経費精算申請 請求書 発行管理 保管場所の統一 領収書 保管 受領請求書 保管 発行帳票 保管 国税関係書類 保管
Slide 5
Slide 5 text
© 2023 LayerX Inc. 本日のアジェンダ
Slide 6
Slide 6 text
6 © 2023 LayerX Inc. 1. データ基盤の現状と利用状況 2. OpenMetadataとは 3. OpenMetadataとdbtの環境 4. OpenMetadataとdbtの連携方法 5. データの取り込みとマッピング 6. エラーとトラブルシューティング 7. 課題と今後の展望 アジェンダ
Slide 7
Slide 7 text
© 2023 LayerX Inc. 1. データ基盤の現状と利用状況
Slide 8
Slide 8 text
8 © 2023 LayerX Inc. データ基盤の現状と利用状況 データ基盤の現状 データ分析に必要なデータは、ほとんどBigQuery上に存在している
Slide 9
Slide 9 text
9 © 2023 LayerX Inc. データ基盤の現状と利用状況 データ基盤の利用者と利用者から見た課題 ● データ基盤の利用者 ○ 非エンジニアの割合が多い ● 利用者の課題 ○ 分析のナレッジを共有できない ○ データ探索に時間がかかっている ○ 分析開始時のデータプロファイリング負荷がある ○ スキーマの変更を検知するのが難しい
Slide 10
Slide 10 text
10 © 2023 LayerX Inc. データ基盤の現状と利用状況 データ基盤の利用者と利用者から見た課題 ● データ基盤の利用者 ○ 非エンジニアの割合が多い ● 利用者の課題 ○ 分析のナレッジを共有できない ○ データ探索に時間がかかっている ○ 分析開始時のデータプロファイリング負荷がある ○ スキーマの変更を検知するのが難しい 利用者のユースケースにあったデータカタログを導入する必要がある
Slide 11
Slide 11 text
11 © 2023 LayerX Inc. データ基盤の現状と利用状況 dbt docsと弊社のデータカタログとしての期待値の違い (データモデリングとその文書化のツールとして、dbt docsはお手軽で有用です!) ● データカタログは、利用者の割合の多い非エンジニアにフレンドリーなものであって欲しい ○ データ探索、ナレッジの共有などの容易さの観点では、dbt docsは機能的に不足している
Slide 12
Slide 12 text
12 © 2023 LayerX Inc. データ基盤の現状と利用状況 dbt docsと弊社のデータカタログとしての期待値の違い ● データカタログは、利用者の割合の多い非エンジニアにフレンドリーなものであって欲しい ○ データ探索、ナレッジの共有などの容易さの観点では、dbt docsは機能的に不足している データカタログとして、OpenMetadataの導入を決めた
Slide 13
Slide 13 text
13 © 2023 LayerX Inc. これまでのデータ基盤の課題 アナリストやビジネスユーザーのdbt利用状況が伸びない要因 ● dbt ドキュメントへのアクセスの難しさ ● dbtの認知度と理解の不足 ● 技術的な専門知識や経験の不足 ● 社内トレーニング等の教育不足
Slide 14
Slide 14 text
© 2023 LayerX Inc. 2. OpenMetadataとは
Slide 15
Slide 15 text
15 © 2023 LayerX Inc. OpenMetadataとは OpenMetadataとは ● データの標準メタデータを推進するオープンソースプロジェクト ● 全てのメタデータを統合し、OpenMetadataで一元的に管理できるようになるもの
Slide 16
Slide 16 text
16 © 2023 LayerX Inc. OpenMetadataとは できること ● データの検索 ○ ElasticSearchとMySQLを使った、多種多様なメターデータ検索や文書検索機能 ● プロファイリング&データの品質管理 ○ テーブルの更新頻度やカラムのヌルの割合を可視化する機能 ○ テストケースを定義し、品質の可視化を行う機能 ● データガバナンス ○ 用語集(Glossary)や分類(Classification)を共有することで、他チームとのコラボレーションを 簡単に行えるような機能 ● セキュリティ ○ ユーザー認証に各種SSOを利用できる機能
Slide 17
Slide 17 text
17 © 2023 LayerX Inc. OpenMetadataとは できること: データ検索 ● テーブルではOwner, Tag, Service, Service Type(BigQuery, MySQL), Database, Schema, Columnでデータを絞れる ● 検索欄で全文検索できる
Slide 18
Slide 18 text
18 © 2023 LayerX Inc. OpenMetadataとは できること: プロファイリング&データの品質管理 OpenMetadataではテーブルプロファイリング、カラムプロファイリング、データ品質を可視化できる 出典: https://docs.open-metadata.org/v1.2.x/connectors/ingestion/workflows/profiler
Slide 19
Slide 19 text
19 © 2023 LayerX Inc. OpenMetadataとは できること: データガバナンス 用語集やタグを定義し、データベースやスキーマなどに紐づけることで情報を共有しやすくできる
Slide 20
Slide 20 text
20 © 2023 LayerX Inc. OpenMetadataとは できること: セキュリティ ユーザー認証に色々なIDプロバイダーがデフォルトで使える 出典: https://docs.open-metadata.org/v1.2.x/connectors/ingestion/workflows/profiler
Slide 21
Slide 21 text
21 © 2023 LayerX Inc. OpenMetadataとは できないこと ● ない データカタログとして欲しい機能は網羅されている
Slide 22
Slide 22 text
22 © 2023 LayerX Inc. OpenMetadataとは アーキテクチャ ● HTTP サーバー - UI/APIを提供 ● Apache Airflow(Optional) - 外部のメタデータを取り込む パイプライン ● MySQL - メタデータ(カラムやテーブル)の関係性を格納 ● ElasticSearch - メタデータの検索に利用 出典: https://docs.open-metadata.org/v1.2.x/developers/architecture
Slide 23
Slide 23 text
© 2023 LayerX Inc. 3. OpenMetadataとdbt Projectの環境
Slide 24
Slide 24 text
24 © 2023 LayerX Inc. OpenMetadataとdbt Projectの環境 dbt Projectの環境 Naked Source Safe Source I/F Data Component Data Mart / Activation データエンジニア アナリティクスエンジニア アナリスト 匿名化・仮名化・同意フィルタリング・etc. データモデリング・用途特化
Slide 25
Slide 25 text
25 © 2023 LayerX Inc. OpenMetadataとdbt Projectの環境 OpenMetadataの環境
Slide 26
Slide 26 text
26 © 2023 LayerX Inc. OpenMetadataとdbt Projectの環境 OpenMetadataの環境
Slide 27
Slide 27 text
© 2023 LayerX Inc. 4. OpenMetadataとdbtの連携方法
Slide 28
Slide 28 text
28 © 2023 LayerX Inc. OpenMetadataとdbtの連携方法 dbt側で準備するもの ● dbt compile/build等で出力されるmanifest.jsonやrun_ressult.json ● dbt cloudとの接続情報 上記のうちどちらかを準備する必要がある 上記の情報を解析し、OpenMetadataで処理をする
Slide 29
Slide 29 text
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の情報を取り込む
Slide 30
Slide 30 text
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の情報を取り込む ← このやり方を紹介します
Slide 31
Slide 31 text
© 2023 LayerX Inc. 5. データの取り込みとマッピング
Slide 32
Slide 32 text
32 © 2023 LayerX Inc. OpenMetadataとdbtの連携方法 metadataコマンドの主要機能 subcommand 説明 ingest データソースからのメタデータを収集する lineage データソースの系譜情報を収集する profile テーブルからメタデータをプロファイリングする(nullの割合, uniqueの割合など) test テーブルに含まれるデータの品質をテストする
Slide 33
Slide 33 text
33 © 2023 LayerX Inc. OpenMetadataとdbtの連携方法 metadataコマンドの主要機能 subcommand 説明 ingest データソースからのメタデータを収集する lineage データソースの系譜情報を収集する profile テーブルからメタデータをプロファイリングする(nullの割合, uniqueの割合など) test テーブルに含まれるデータの品質をテストする metadaコマンドではingestサブコマンドがdbtに対応している $ metadata ingest -c
Slide 34
Slide 34 text
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
Slide 35
Slide 35 text
35 © 2023 LayerX Inc. データの取り込みとマッピング dbtとOpenMetadata上での情報の対応関係 dbt modelの情報はOpenMetadata上で、次のように取り扱われる dbt OpenMetadata Tag (Classification)Tag Dependency Lineage Owner Owner Test Data Quality
Slide 36
Slide 36 text
36 © 2023 LayerX Inc. データの取り込みとマッピング 取り込まれたデータ(Tag)
Slide 37
Slide 37 text
37 © 2023 LayerX Inc. データの取り込みとマッピング 取り込まれたデータ(Lineage)
Slide 38
Slide 38 text
38 © 2023 LayerX Inc. データの取り込みとマッピング 取り込まれたデータ(owner)
Slide 39
Slide 39 text
39 © 2023 LayerX Inc. データの取り込みとマッピング 取り込まれたデータ(test)
Slide 40
Slide 40 text
© 2023 LayerX Inc. 6. エラーとトラブルシューティング
Slide 41
Slide 41 text
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が含まれていない
Slide 42
Slide 42 text
© 2023 LayerX Inc. 7. 課題と今後の展望
Slide 43
Slide 43 text
43 © 2023 LayerX Inc. 課題と今後の展望 OpenMetadataからdbtへ情報を反映する ● 現状dbtからOpenMetadataへの1方通行でしか情報を反映できていない ● OpenMetadatanの情報はDBの中に保存されており、コード管理できていない Lineage, Tag, Ownerの反映 Documentの反映 metadataの取り込み OpenMetadataからdbtへ情報を反映し、ドキュメントをコード管理する
Slide 44
Slide 44 text
44 © 2023 LayerX Inc. 課題と今後の展望 BigQueryからのメタデータ取り込みを、よりセキュアにする OpenMetadataで利用できる、GCPとの認証方法 ● ServiceAccount Json Key Credentials ● Application Default Credentials External Account Credentialsによる認証をサポート ● OIDCを利用したGCP、AWS間の認証ができるようになる External Account Credentialsが流出しても、秘匿情報が含まれないため問題になりづらい
Slide 45
Slide 45 text
45 © 2023 LayerX Inc. 課題と今後の展望 Aurora RDSからのメタデータ取り込みを、よりセキュアに サポートされているMySQLの認証方法 ● パスワード認証 ← この方法で認証 ● IAM認証 パスワード管理コストを下げるために、IAM認証に切り替えたい OpenMetadataではIAM認証をするためにアクセスキー、シークレットアクセスキーを用意する必要がある。 本来であればインスタンスに紐づくIAM Roleだけで認証できるはず....。 原因を調査し、最低限の情報でIAM認証できるようにしたい!
Slide 46
Slide 46 text
46 © 2023 LayerX Inc. 課題と今後の展望 OpenMetadataの設定をIaC化 ● OpenMetadata上でユーザーやGCP Projectの管理をUIで行わなければならない ○ バージョン更新等の検証/反映が難しい ○ 設定をコード管理することができない 環境の再現性を得るために、Terraform Providerを作りIaC化
Slide 47
Slide 47 text
© 2023 LayerX Inc. まとめ
Slide 48
Slide 48 text
48 © 2023 LayerX Inc. まとめ OpenMetadataを導入し得られた恩恵 ● カラムやスキーマやタグなどの情報で検索できるようになり、目的の情報へ素早く辿り着けるようになった ● テーブルやカラムのプロファイリングがされたことにより、データ分析開始時の負荷が減った ● ナレッジのシェアをしやすい環境ができた
Slide 49
Slide 49 text
49 © 2023 LayerX Inc. We are hiring! LayerXではアナリスティックエンジニア、アナリストを積極的に採用中です! 少しでもご興味を持たれた方は、是非カジュアル面談にいらしてください!
Slide 50
Slide 50 text
© 2023 LayerX Inc.