はじめに
この記事は前回からの引き続きとなります。よろしければこちらもご覧ください。
Excelのみのデータ管理を脱却して、データをDWHでも取り扱いやすいフォーマットに変更したというのが前回のハイライトになります。
DWHって何?、なぜそこにデータを蓄積すべきか
DWHとは データウェアハウス
のことであり、直訳の通りデータの倉庫のようなものです。
DWHは一般的に言われるデータベース(例えば、Oracleやpostgres、MySQL等)とは違って、データの集計や分析用途で使われることを目的としています。
もちろん、データベースでも集計や分析を実施することは可能(以前はそうしてきたので)ですが、
正しいDWHの利用の仕方により 高速な集計や分析をとても手軽に実現できることがメリットです。
ちなみにそのメリットは、データが大きくなればなるほど享受できる点となります。
また、DWHに蓄積するメリットはそれだけではありません。
プロバイダであるAWSやGoogle Cloud, Snowflakeを代表として、DWHに蓄積されたデータを軸に
- データを様々サービスに連携する、集計結果を書き戻す
- プロバイダが提供する別サービスでデータを加工し、データからインサイトを獲得する
- クリーンなデータ(データの源泉や上流に近い)として、発展的に機械学習基盤への運搬などに利用する
など、用途は広がるばかりです。
本来であれば、 自社業務やサービスで発生するデータ をDWHに蓄積して、集計や分析することで
売上を向上させる、ユーザーの利用を促進する目的がメインです。ただ、自社のビジネスや経営を安定化させる
単純に作業高率化を図りたい、その上で自社の次の一手を考えたいという観点でも、
自社の経営データをDWHに配置し、将来的に分析に回すという選択肢は良いと思っています。
とりあえずDWHにデータを格納する
データパイプラインの構築は必要か?
結論から言うと No
という形です。
リッチなデータパイプラインを組むことは、将来的にメリットがあることは間違いありません。
ただし現在の足元を見たときに、担当者が音を上げず運用が回るものなのか、ちょっと他のこと(拡張や追加連携)も検討したいときに
ちょっと調べて検討したり、対応してみようかと思わせてくれることが最も大事です。
ちょっとしたデータ転送から始めることを考えると
- 定期的に最新のデータが連携されていること
- 同じ経路で転送したいファイルやデータが増えたときに、簡易に対応できること
- ちょっとした前処理は必要かもしれないが、Excelの関数で対応できていたレベル、四則演算がメイン
ぐらいが要件で、決してリッチなデータパイプラインは必要ないと感じられるでしょう。
どんなサービスでデータ転送を考えてみるか
いくつか代表的な方法を上げてみましょう。
転送先DWHは代表的なGoogle CloudサービスであるBigQueryで検討してみます。
データは前回の定義した下記のデータで検討します。
自社がGoogle(WorkSpaceやGoogle Cloud)を使うことに積極的である場合
ExcelデータをGoogle のスプレッドシートに保存し、BigQueryから外部テーブルとして参照する 方法が挙げられます。
外部テーブルのメリットは、直接スプレッドシートのデータをデータの参照元とするので
もしスプレッドシート側に変更があったとしても、データのロード作業などは不要で常に最新が反映されることになります。
(画像のカラム名は今回手を抜いていますが、本来は正しい物理名を設定すべきです。あとdescriptionも十分使える要素です)
デメリットとしては、BigQuery内のストレージ参照ではないため、SQLクエリの速度が遅くなります(肌感としては数倍~数十倍)
下記の画像は実際にSQLでアクセスしたものですが、シンプルな全件SELECT抽出でも 数秒かかる
のが実態です。
従って後続に複雑な処理が待ち構える場合は、別案を考える必要もあります。(ただ今回のユースケースでは必要十分です)
Excelをそのまま使いたい場合
方法としては
- サービスを使って、データを連携する
- クラウドサービスを組み合わせて、連携を行う
と言った2点となりますが、後者はちょっとしたパイプラインを組むこととなり
この程度の作業に手間はかけていられません。ただ将来的に連携対象が拡張し、とりあえずインフラコストを抑えたいというのであれば検討アリです。
話を戻しますが、前者としてサービスを利用するならいくつか候補があります。
今回のユースケースでは trocco
がおススメです。転送元のサービス(今回はExcelのみ)なので費用なしの フリープラン
を活用できます。
ただ注意点として繰り返しとはなりますが、将来的に連携したいデータやサービスが、現時点でも考えられるなら
それを加味したランニングコストでサービス検討を進めましょう。
troccoでは、Box for Office
を利用する形が良い方法の一つです。
自分のローカルPCにあるExcelをDWHに向けて転送することも可能ですが
あくまで一時的に送信であり、定常的な転送には向いていません。Boxを使っていきましょう。
加えて、Boxはオンライン上でExcelの編集が可能です。このあたり他のストレージサービスよりも優れた点であり
直接インタフェースとしてデータを編集することができます。
その後、troccoを用いてデータの転送設定を作るだけです。こちらは本当に楽な作業です。
Boxも個人で使う場合と法人で使う場合で金額形態が違うことや
自社では別ストレージサービスを契約しているので、いまさら...ということもあるかと思います。
もしExcelを高頻度で使うのに、ワークスペースがAzureベースではなく、
ローカルPCで編集して毎回アップロードしている場合などは、そちらから業務を見直して、クラウドベースの編集に寄せるのも一案でしょう。
DWHに蓄積したデータの使い道
こちらは先にも記載しましたが、例としては下記が挙げられます
- SQLを用いて、データ集計を行う
- 一時的な保存やデータクレンジングを行い、2次加工の環境に転送する(機械学習や分析など)
- BI(ビジネスインテリジェンス)から参照し、ダッシュボードの参照データとする
次回は、今回書ききれなかったダッシュボードに加えて、少しテクニカルな視点として
DWH上のデータを簡易アプリケーションとして利用する視点まで及んでみようと思います。