Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

【BigQuery/GCS】データ分析基盤について調査中

経緯

データ分析基盤で色々試した結果を書いていきたいと思います。

分析の全体像

処理の流れ

データ分析には主に4つのフェーズがあります。

  1. 収集
  2. 蓄積
  3. 処理/分析
  4. 可視化

[AWS Black Belt Online Seminar] AWS で構築するデータレイク基盤のアーキテクチャ 資料及び QA 公開 | Amazon Web Services ブログ

よく使われる用語

全てがこのパターンではないですが、
データレイクで様々な情報を集めて、そのデータを整形して、データウェアハウスに突っ込んで、さらに用途に応じて、データマートを使用するイメージです。
image.png

データレイク

形式に関わらず様々なデータを格納する場所です。
後ほど記載しますが、構造化データも非構造化データどちらもこのデータレイクに格納します。
データレイクとしての Cloud Storage  |  アーキテクチャ  |  Google Cloud
データレイクとクラウドサービス ~①データレイクの今までをおさらい~ - GiXo Ltd.

データウェアハウス

構造化データしか取り扱うことができません。
データの抽出・分析作業をスムーズに行うことができます。

データマート

用途に応じて必要なデータだけを抽出・加工してまとめたデータベースです。
データマートとは?(データウェアハウスとの違い) - Talend

結論

上記を組み合わせると、下記みたいな流れになるかと思います。

  1. 収集
  2. 蓄積(データレイク)
  3. 処理/分析(データウェアハウス、データマート)
  4. 可視化(BIツール)

取り扱うデータ

どんなデータを取り扱うかを書きます。
2種類あって、構造化データと非構造化データ(規則性がある)があります。
下記の図で場合分けをすることができます。

image.png
構造化データと非構造化データとデータの規則性|データ分析用語を解説 - GiXo Ltd.より引用

実際のデータ分析基盤

データレイク GCS

下記の実装を使って、GCSにjsonを保存します。
【GCP/Rails】RakeタスクでGCSにjsonを放り込む - Qiita

かつherokuでスケジューラとか組みこんでGCS(データレイク)に送れ他ので、それもありだなと思っています。

わかっていないところ

herokuからデータレイクに対してデータを投入した場合と、データレイクからアプリケーションのapiを叩きにいく場合の2つがあるがどちらが良いかまだわかっていない。

データウェアハウス BigQuery

GCSのデータをBigQueryに取り込みます。
下記記事を参考にしていきます。

最初は、データセットが作成されていないので、データセットをまず作成してから進めてください。
image.png

Cloud Storage からの JSON データの読み込み  |  BigQuery  |  Google Cloud

jsonの整形

また通常のjsonデータでは、BigQueryに投入することはできません。
通常のjsonをNDJSONという形式に変換しなければいけません。
ndjson - zakuni
なので、GCSにあげる前に下記のような処理をどこかで挟まなければいけません。(自分はここ試してないです.......)

cat test.json | jq -c '.[]' > test_NDJSON.json

JSON parsing error: How to Load JSON into BigQuery Successfully using NDJSON
jq コマンドを使う日常のご紹介 - Qiita

NDJSONにすれば、GCSのデータをBigQueryに取り込むことができているはず!
※今回データマートはスキップします。

データの可視化

Googleのデータポータルを考えます。
BigQueryのデータとかを取り込んで、下記のように可視化してくれます。
表示するデータは、カスタマイズできるので、非常に便利です。

image.png
データポータルを使用して BigQuery データを可視化する  |  Google Cloudより引用

基本的な使い方 - データポータルのヘルプ
1時間でできる!インフォグラフィックづくりで楽しく学ぶGoogleデータスタジオ - Qiita

料金計算

上記を踏まえて料金の計算をする場合は、下記を使用すると便利です。
image.png
Google Cloud Platform 料金計算ツール  |  Google Cloud

今後必要なところ

ワークフロー

今回は、Cloud Composerなどのワークフローを制御してくれる機能に関しては、触れなかったので、これを使うことのメリットについては深ぼっていきたいところ。

下記の記事とか非常に参考になります。
Google Cloud DataFlow + Pub/Sub でデータ処理環境を構築する - Qiita
Cloud Composerでデータ基盤のワークフローを作る - Eureka Engineering - Medium
分析者から見た使いにくいデータ基盤の話 | リクルートテクノロジーズ メンバーズブログ

ミニマムのデータ分析基盤

初めからBigQueryとかは予算とかが噛み合わないので、Cloud Storageに対して直接jupyter notebookで叩きにいくか、AWS SageMaker使って、S3を見に行ってjupyter notebook使うかのどちらかで想定しています。
別の方法などあれば教えていただけると幸いです:bow_tone1:

その他参考になった記事

1年間のDataPlatformプロジェクトから見えてきた「DataWarehouseの作りかた」〜前編〜
Data Platform構築プロジェクト推進の事例と学び - Speaker Deck

sanoyo
自衛隊からソフトウェアエンジニア
https://note.com/yokosano
engineerlife
技術力をベースに人生を謳歌する人たちのコミュニティです。
https://community.camp-fire.jp/projects/view/280040
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away