そのほか
2024/01/22
末川 愛梨

データマートの作成方法とメリット

本記事ではBigqueryを用いてデータマートを作成する方法や、作成することで得られるメリットについてご紹介します。

そもそもデータマートとは?

データマートとは目的に応じて複数のテーブルからデータ抽出・結合し、新たに一つのテーブルにすることを指します。イメージがこのような感じです。

BIツールでデータ内の数字を可視化するとき、参照元のテーブルがA,B,Cとあり、全データの内可視化するために必要なデータをA’,B’,C’とします。データマートを作成した場合と作成しなかった場合では、こんな違いがあります。
convinience of data-mart

一見データマートを作成する手間が増え、かえって不便になっているように感じる方もいるでしょう。しかし、実際データマートを使うメリットについて、筆者は二つあると実感しています。

1. テーブルの中身がシンプルになる

保管されたデータ(データウェアハウス)をそのままBIツールへ接続すると、必要のない値がたくさん含まれており、本来必要な値が見えづらくなっています。しかしデータマートの作成段階で必要なカラムのみ抽出・結合することで後からデータを見るときに非常に見やすいです!

2,データの処理速度が速くなる

データの利用目的に合わせたデータマートを作成すると、最適化されたデータベースを使用且つ参照するデータやデータ同士の処理が少ないことから、処理スピードが格段に上がります。実際筆者がBigqueryとLooker studioを接続してグラフを表示するまで、データマートを引用したら10秒もかかりませんでした!(それまでは表示されるまで1分以上要していました( ; ; ))

データマートの作成方法

1,データマートを作成する目的を明確にする

データマートを基に何を可視化したいのか、それによって値の必要・不必要は変わってきます。また明確にしておかなければ、データマート作成段階でエラーが生じてしまったり、完成できたとしても他の人から見て「何でこのようなデータマートを作成したのか、分からない」状態が生まれてしまいます。そのため、はじめに

– データマートを作る目的
– そのために用いるテーブルや値
– カラムの意味

などは明確にしておくようにしましょう。

2,データの型を確認する

データマートを作成する上で、まずはデータの型を確認しましょう。例えばテーブルに日付データが”2024-01-01”と格納されている場合、これがDate(日付型)なのかString(文字列型)によって、データ型の違いからデータ結合が上手くいかないことがあります。(ちなみにBigqueryではスキーマからデータの型を確認できます)

3,データをグループ化

グループ化処理がどんなことをしているかご存じですか?「改めて聞かれると分からないかも!」という方に向けて、簡単に説明させていただきます。例えば同じ”2024-01-01”の売上をグループ化したいとします。売上データは以下のような形だとします。

sample_data_before

この時日付、商品ごとの売上を見たい時、以下のようになりますね!

TABLE_2

sample_data_after

day_countが2024-01-01且つKey_productがA001の行は二つあり、それぞれsalesの数字は違います。そこで関数を使ってまとめるのです。ここではSUM(合計)を使いましたが、他にも

– 平均(avg)
– 最大値(max)
– 中央値(med)

などなど様々な種類の関数がありますね!

ちなみにTABLE_1からTABLE_2を作成するときのSQLは以下のようになります。




SELECT day_count, key_product, SUM(sales) AS total_sales
FROM TABLE_1
GROUP BY day_count, key_product;




4,テーブルを結合

テーブル同士を結合する際、結合の鍵となるキー同士で結合(JOIN)を行います!
主に使われやすい結合の種類は以下の5種類です。

1. INNER JOIN(内部結合):
– `INNER JOIN`は、結合条件に一致する行のみを返します。両方のテーブルに共通する行のみが結果として返されます。


SELECT *
FROM table1
INNER JOIN table2 ON table1.column = table2.column;




2. LEFT JOIN(左結合):
– `LEFT JOIN`は、左側のテーブルのすべての行と、右側のテーブルで一致する行を返します。右側のテーブルに一致する行がない場合、NULLが表示されます。


SELECT *
FROM table1
LEFT JOIN table2 ON table1.column = table2.column;




3. RIGHT JOIN(右結合):
– `RIGHT JOIN`は、左側のテーブルで一致する行と右側のテーブルのすべての行を返します。左側のテーブルに一致する行がない場合、NULLが表示されます。


SELECT *
FROM table1
RIGHT JOIN table2 ON table1.column = table2.column;




4. FULL JOIN(フル外部結合):
– `FULL JOIN`は、両方のテーブルのすべての行を返します。一致しない行の場合、NULLが表示されます。


SELECT *
FROM table1
FULL JOIN table2 ON table1.column = table2.column;




5. CROSS JOIN(クロス結合):
– `CROSS JOIN`は、左側のテーブルのすべての行と右側のテーブルのすべての行の組み合わせを返します。条件を指定しない限り、すべての組み合わせが返されます。


SELECT *
FROM table1
CROSS JOIN table2;




これらのテーブルの特性に合わせた結合を行うことでデータマートを作成することができます。

最後にマージしたテーブルの値が間違っていないか、実際にBI画面で見てみたりクエリで書き出してみましょう。

まとめ

本記事ではデータマートを作成するメリット及び作成方法をお伝えしました。もしデータマート作成中に困ったことがあれば、是非この記事を見返してみたり下のボタンからお問い合わせください!最後まで読んでいただき、ありがとうございました。

New call-to-action