OpenMetadataとdbtによるデータカタログの構築
by
Trs
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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.