5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

データ分析基盤って、データを貯めているだけでしょ? 何を考えることがあるの?

5
Posted at

というような疑問を浮かべてしまう、データチーム以外の方に向けた記事になります。

データ、すでにあるけど

昨今(に限らずですが)、データ(分析基盤)が大事と言われます。AI 利用のためにも、データ分析基盤を整えようと言われます。そんな中、次のような疑問が浮かぶ方はいないでしょうか?

データ分析基盤にデータを貯める? データは、アプリケーションのデータベースにすでにあるけど

「アプリケーションの データベース」という部分は、ログデータだとか、CRM だとか、Web の行動分析ツールなどと言い換えても構いません。データは既に存在しており、必要なデータは(少しスキルが必要だとしても)取得できることが多いです。プロダクトマネージャーが、仮説検証のためにソフトウェアエンジニアにデータ出しを依頼し、アプリケーションのデータベースに対して、SQL を書いてデータを取得して渡すという作業を行えば、分析は可能です。実際それで済む場合もあります。であれば、データ分析基盤がないと困る瞬間って、あまり思いつかなかったりしないでしょうか?
そしてそれならば、データエンジニアリングに携わっている人って、日々一体何をやっているんだろう?と疑問に浮かぶかもしれません。

データ分析基盤があることで...

データ分析基盤には、データが一元化されています。2つの意味に分けて説明してみると

一元化 = 見渡せる

組織内のデータは、基本的に散らばっています。プロダクトごとにデータベースが分かれているだけでなく、Web の行動分析ツール、CRM、ログ、CSV データ、議事録、などなど。これらのデータを見たくなったときに、どこになにがあるかわからないということもあるかと思います。データ分析基盤に、組織内のあらゆるデータが集約されていることで、ここを見れば良い、となります。

一元化 = 一緒に使える

また、単に集まっているだけでなく、同じ意味のデータを関連させることができます。例えば、Web の行動分析ツールだけであれば、そこからわかることは限定的かもしれません(例:あるユーザがある画面にアクセスした)。一方で、データ分析基盤に、そのユーザの所属する属性の情報、さらにその属性の特定の情報がそれぞれ格納されている場合、データ分析基盤から、複数の情報を横断的に一度で確認することができます(例:あるユーザがある画面にアクセスした、そのユーザは XX という部署に所属しており、その部署は xx という性質を持つ)。

データ分析基盤のために...

データ分析基盤、役に立つかも!と思えたでしょうか。... まぁそう思えるようになったとして、では、データ分析基盤のために、なにをすることがあるのでしょうか。それぞれのプロダクトやシステムから、データを引っ張ってきて、終わりなんじゃないの? なにすんの?

人が読めるように

まず、使い勝手を良くする必要があります。単純にデータを引っ張ってきただけで「用意しておいたんで使ってください」と伝えたとして、ビジネスサイドに近い方が使いこなすのは難しいと思われます。ここでは、基本的な考え方の違いを意識しないといけません。それは、アプリケーションのデータベースは性能を重視し、データ分析基盤(データウェアハウス)のデータはわかりやすさを重視する ということです。

アプリケーションのデータベースは、更新頻度が高く、書き込まれることに最適化するため、正規化されています。データの挿入に何秒もかかることを防げるなら、複数回 join することになるとしても、テーブルを分割します。一方で、データ分析基盤で使われるデータは、参照が前提であり、人がビジネスの観点から読めるように、整理されている必要があります。
人にとって読みやすいということは、例えば、明確で、関係性が単純で、誤解の余地が少ない ということです。テーブルの join は少ない方がいいです。これはすなわち、BI で使いやすい、AI が正しいクエリを生成しやすい、ということに繋がります。

で、なにしてんの

やっと、データ分析基盤のためにやっていることを説明する準備が整いました。
先ほど、データ分析基盤には、あらゆるプロダクトやシステム(データソースといいます)から、データを引っ張ってきている、と書きました。一方で、データを引っ張ってきただけでは、使ってもらうのは難しいので、人が読めるようにする必要があるとも書きました。ここの間を埋めないといけません。

データソース ---> (いい感じにする) ---> データマート

データマートと書きましたが、つまり、人が分析のためにそのまま使えるテーブルだと思ってください。データ分析基盤のためには、上記の(いい感じにする)をする必要があります。

レイヤー

実際には、データ分析基盤は「一枚岩」ではありません。いくつかの役割に分かれたレイヤーで構成されています(おもしろいと思いませんか)。レイヤーの分け方は色々とありますが、データ分析基盤のアーキテクチャを構成する上での、主要なレイヤーを紹介してみます。一般的な話です。

(1)コレクティングレイヤー

様々なデータソース(アプリケーションデータベース、CRM、ログファイル)で常に発生しているデータを漏れなく集め、プロセシングレイヤーやストレージレイヤーに渡す。

(2)プロセシングレイヤー

コレクティングレイヤーによって取り込まれたデータを、分析しやすい構造に変換・加工・クレンジングする。ETL(またはELT)のTransform(変換)を担当。

(3)ストレージレイヤー

データやメタデータを保存する。各種レイヤーのアクティビティは、このレイヤーに対して行われる。

(4)アクセスレイヤー

ストレージに保管された処理済みのデータに対して、ユーザーやアプリケーションが直接アクセスし、データ価値を得る接点。

image.png

改訂新版[エンジニアのための]データ分析基盤入門<基本編> の 2.2 節から図を利用させていただきました

頭のつかいどころ

レイヤーを考えることは、責務分離の観点が含まれます。利用しやすいテーブルを考えることは、データモデリングといった設計の観点が含まれます。データソース変更を追従するための変更耐性を考えたりします。エンジニアリングですね。

その他の仕事

代表的なことを書きましたが、他にもクエリの実行時間だとか、コストだとか、メタデータ管理であるとか、フリクション(提供されてから使うまでの時間)だとか、色々考えることはあったりします。

ときに地味ですが、ビジネスへの貢献(と自分たちのおもしろさ)のために、粛々と頭を捻ってます。

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?