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.