Taste of Tech Topics

Acroquest Technology株式会社のエンジニアが書く技術ブログ

Amazon DataZone でデータカタログを実現する

はじめに

こんにちは一史です。最近自動給水器を買い、ベランダで育てているバジルの水やりを自動化しました。テクノロジーは素晴らしいですね。

さて、AWSにはAmazon DataZoneという組織が蓄積した膨大なデータに対して、データの発見、アクセス制御、管理を簡素化するデータ管理サービスがあります。
データドリブンが重要視される昨今、今回はDataZone上にデータカタログの作成を行ってみます。

概要

本記事ではAWS DataZoneを使って、データレイクからビジネスコンテキストを付与したデータカタログを作成します。

データレイクとは

データレイクとは、組織が持つあらゆるデータを一箇所にまとめて保管し、必要に応じて取り出して活用できる仕組みのことです。
データレイクには、テキスト、画像、動画、音声など、あらゆる形式の膨大なデータがそのままの状態で保持されます。
一方、大量のデータが集まるため、データのアクセス制御と、迅速に必要なデータにアクセスできる検索性が重要になってきます。

データカタログとは

データカタログとは、データレイク内にあるデータを整理・管理し、検索性を上げるためのツールのことです。
具体的には、各データにメタ情報(列名などのデータ構造、保存場所、更新頻度など)を付与し、表示することで検索性を上げるものです。
AWSではデータのETL処理(クリーニング、正規化や必要な変換処理に用いる)と、データカタログ作成に、AWS Glueというサービスが提供されています。
例としてGlueで作成したデータカタログのスキーマ(データ構造を定義したもの)を以下に示します。
aws.amazon.com

Glueで作成したデータカタログのスキーマ(列名や列ごとのコメントは手動で編集したもの)

なぜAmazon DataZoneが必要か(AWS Guleとの違い)

上記のようにGlueでもデータカタログを作成することはできますが、DataZoneのデータカタログは立ち位置が異なります。
Glueのデータカタログは、システム的な内容(列名やデータの保存場所など)がメインでエンジニアの利用に向いています。
一方でDataZoneのデータカタログは、そのデータがビジネス上どういった意味をもつか、どのように活用できるかなどの内容がメインであり、非エンジニアの利用に向いているものになります。
これを可能にするDataZoneの概要について次節で紹介します。

Amazon DataZoneとは

サービス概要

DataZoneはデータレイク活用のための組織ごとのポータルを作成するサービスです。
aws.amazon.com

このサービスは特に以下の機能を提供しており、データレイクを組織で活用することにフォーカスしてサポートします。

  1. データレイク内のユーザレベルのデータアクセス制御
  2. ビジネスコンテキストを付与した検索性の高いデータカタログの作成

今回は後者に注目し、ビジネスコンテキストを付与したデータカタログを作成します。

このDataZoneのデータカタログはGlueに比べて以下の嬉しいポイントがあります。

  1. データアセット自体の説明を自動生成できる。
    Glueではデータアセットのシステム的な情報はわかりましたが、それがどのようなビジネス上の意味を持つのかはわかりませんでした。
    DataZoneではデータアセット自体の説明文を自動生成することができ、この点を解消してデータの検索性を高めることができます。
  2. 列ごとの説明を自動生成できる。
    Glueではゼロから手で作る必要があった列ごとの説明を、DataZoneでは自動生成することができます。
    データアセットが膨大になると説明の追加にリソースがさけないことがあるため、自動生成機能はとても有用です。
  3. データアセットにメタ情報を追加して検索性を高められる。
    Glueにはないメタデータフォームというものでメタ情報をデータアセットに追加し、データアセット検索時のフィルタリングを行えるようにしています。

DataZoneのデータカタログの完成像

今回作るものの完成像は以下です。
CSVデータをもとにデータアセット(DataZone上のデータセット)を作成します。

データアセット自体の説明を自動生成
各列の説明を自動生成
メタ情報によるアセット検索時のフィルタリング

Amazon DataZoneでデータカタログを作成してみる

構成概要

以下図が今回作成するDataZone上のビジネスデータカタログの構成概要になります。

作成するデータカタログの構成図

Sample Corporateドメインという組織の中のデータポータル上に、サプライチェーン管理プロジェクトがある状況を作成します。
このプロジェクトとは実際の組織でいえば部署のようなもので、データを公開、共有するグループのことです。
このサプライチェーン管理プロジェクトの中で、Glueで作成したデータカタログを取り込み、ビジネスメタ情報を追加してデータカタログを作成します。
詳細な設定方法は割愛するため、より詳しく知りたい場合はこちらのハンズオンを参照してください。

データ準備

データはサプライチェーンに関する架空のデータを作成し、使用します。

サプライチェーン ダミーデータ

ドメインとデータポータルの作成

それではまず、Amazon DataZoneコンソール上の「ドメインを作成」から組織に当たるSample Corporateドメインを作成します。
作成すると以下のようになり、データポータルへのリンクもできています。

ドメインを作成

プロジェクトの作成

次に先ほど作成したデータポータルに遷移し、「プロジェクトを作成」からサプライチェーン管理プロジェクトを作成します。
作成が完了すると以下のようになります。

サプライチェーン管理プロジェクト作成

環境の作成

上記でプロジェクトを作成したことで、データを公開、共有するグループを作成できました。
ではここから公開するデータを準備していきます。
そのために、「環境」というものを作成してきます。
これはDataZone上の概念であり、データの取り込み口のようなものです。
具体的には、データの取得先(データソース)、生データのETL処理、データアクセス制御などの構成要素からなる集まりの単位です。

環境作成のためにまずプロジェクトに対して、ブループリントを有効化します。
これはDataZone以外のサービスと連携するための設定がセットになっているものです。
今回はデフォルトのデータレイクを選択し、データ取り込みで使うAWS DataLakeとデータを閲覧するために使うAthenaと連携します。

デフォルトのデータレイクのブループリントを有効化


次にサプライチェーン管理プロジェクトに移動し、「環境」タグから「環境プロファイルを作成」を行っていきます。
この環境プロファイルとは環境の設定テンプレートのようなものです。

環境プロファイル作成


それでは下準備が整ったので、環境を作成していきます。
名前と上記で作成した環境プロファイルを指定すると以下のsupply_chain_environment環境が作成できます。

環境作成

データカタログの作成

データポータルの事前準備ができたので、いよいよデータカタログを作ってきます。
まず、DataZone上で公開するデータカタログのもととなるものをGlueで作成します。
クローラーを作成し、データを配置したS3上のフォルダをクロールすることで、データカタログとして、以下のようにテーブルとそのスキーマ情報が作成されます。

Glue テーブルとデータカタログを作成


それでは、DataZoneに取り込みます。
環境で作成したデータソースを実行することで、以下のようにDataZone上にデータアセットが作成されGlueのテーブルが取り込まれます。

データアセットを作成

データアセットの説明、列ごとの説明を自動生成する

データアセット表示画面の上部にある「メタデータの自動生成」を「すべて承認」、画面中の「説明を生成」を押下すると、まず以下のようにデータアセットの概要とユースケースが自動生成されていることがわかります。

データアセットの説明を自動生成


ただ、自動生成は英語で行われてしまうため、わかりにくいですね。
そのようなときは手動で編集することも可能です、今回は翻訳サイトに文章をそのまま入れて以下のようにしました。

データアセットの説明を自動生成 日本語化

内容を見るとまず概要から、このアセットにどのようなデータが含まれているかが大まかにわかります。
そしてユースケースでは、どの役割の人にとってどう役立てられるかが見て取れます。
実際には、人がデータの中身をみつつ、この生成された文章を添削する必要はありそうですが、このように生成してくれればゼロベースで行うよりも効率的にできそうです。
そして、このような説明があることで、データレイクの海からやりたいことに適したデータを選定する速度を、格段に上げることができます。

また、以下のようにスキーマが生成されます。

スキーマに列ごとの説明を自動生成

見てみると、「orderid」という人が見てわかりにくい列が「Order Id」という名前にかわっています。
そして、列ごとの説明も自動生成されていることがわかります。
こちらも組織独自の名称や日本語にしたい場合は、手動での編集が可能です。

フィルタリング可能なメタ情報の作成

データアセットの検索時にフィルタリング可能なメタ情報を作成します。
ビジネス用語集(ラベル群のようなもの)を作成し、メタデータフォームからアセットに付与していきます。
ビジネス用語集を定義することで、複数人で多数のデータアセットを作成する際もメタ情報の表記揺れをなくすことができます。

ビジネス用語集の作成
ビジネスメタフォームを作成
データアセットにメタデータフォームで「化粧品」と指定する


この付与したメタデータを使用しデータアセットの検索でフィルタリングを行うことで、検索性を上げることができます。

DataZone ビジネス用語でのフィルタリング

実際のデータを見る

最後に、実際の生データを見てみます。
今回作成したsupply_chain_enviroment環境のQuery Dataを押下することで、環境プロファイルで設定した分析ツールのAthenaを呼び出すことができ、生データの確認ができます。

supply_chain_enviroment環境からQuery Dataを押下する
Athenaを用いた生データの表示


今回は生データを見るためにAthenaを分析ツールとして設定しましたが、ブループリントでAthena以外のサービスとの連携も設定できるため、Amazon QuickSightと連携してデータを可視化しても面白そうです。
aws.amazon.com

DataZoneの料金

DataZoneの料金体系についてです。
詳細は以下の公式サイトにまとめられています。
aws.amazon.com

大まかに分けるとデータポータルのユーザー数によって固定でかかるものと、利用状況で変わるものがあります。

まず固定でかかる料金は、以下の表をもとにデータポータルのユーザー数に応じて発生します。

ユーザー数 金額
最初の 500 人のユーザー (1~500人目) 1ユーザーあたり月額 9.00 USD
次の 500 人のユーザー (501~1,000人目) 1ユーザーあたり月額 8.10 USD
以降のユーザー (1,001人目以降) 1ユーザーあたり月額 7.20 USD

例)510ユーザーの場合:500ユーザー×9.00 USD + 10ユーザー×8.10 USD = 4,581 USDの料金が月々発生する。

そして利用状況によって月ごとに以下の料金が発生します。

料金 料金発生対象 金額
メタデータストレージの料金 メタデータの容量がユーザー数×20MBを超えた分だけ発生 1 GBあたり0.417 USD
リクエス*1の料金 リクエスト数がユーザー数×4,000件を超えた分だけ発生 10万リクエストあたり10 USD
コンピューティングユニット*2の料金 使用したユニット数がユーザー数×0.2を超えた分だけ発生 コンピューティングユニットあたり1.776 USD
AIレコメンデーション*3(入力)の料金 説明の自動生成をする際の入力トークン数に応じて発生 1,000トークンあたり0.015 USD
AIレコメンデーション(出力)の料金 説明の自動生成をする際の出力トークン数に応じて発生 1,000トークンあたり0.075 USD


また、DataZoneには無料トライアルがあり、最初の 3 か月間は最大 50 人のユーザーが料金なしで利用可能です。
興味があれば是非利用してみてください。
(無料トライアル中も、メタデータストレージ、リクエスト、コンピューティングユニット、AIレコメンデーションは表通りに料金が発生します。)

まとめ

データ管理ツールであるAmazon DataZoneでデータポータルを作り、その中でデータカタログを作りました。
DataZoneを利用することで、効率的にビジネスで使いやすいデータカタログの作成ができることがわかりました。
他にも今回紹介しきれなかったデータアクセス制御機能など、データレイクのビジネス活用を強力にサポートするサービスなので、是非触ってみてください。

*1:コンソール操作、API操作で起きるDataZoneとの全てのやりとりが該当するものです。

*2:Glueなどからデータカタログなどのメタデータを取り込む際などに使用されるものです。

*3:データアセットの説明などの自動生成のことです。