データ統合基盤 CS アナリティクスでデータ出力機能をリリースしました

2021.06.11

こんにちは、みかみです。

弊社クラスメソッドの自社プロダクト CS アナリティクス(以下 CSA )は、短期間、低コストで導入可能な統合データ分析基盤です。

概要

CSA ではデータロードやプログラム実行などの1つ1つの処理を「構成要素」として定義し、構成要素を組み合わせて処理の実行単位である「ジョブ」を作成して実行します。

以前はテーブルデータをファイル出力するために python プログラムを書く必要がありましたが、この度「データ出力」構成要素が追加され、画面の GUI 操作だけでデータ出力ジョブを作成できるようになりました。

本エントリでは、「データ出力」を実行するジョブを作成して、BigQuery のテーブルデータを GCS に出力してみます。

CSA JMCの挙動確認バージョン

当エントリの内容は以下のCSA JMCバージョンで挙動を確認しています。

  • CSA JMC v5.7.0

BigQuery 版 JMC では、上記バージョン以降で「データ出力」の構成要素に対応しています。

前提

CSA の サイト設定手順は割愛します。詳細は以下のエントリをご参照ください。

データ出力ジョブを追加して実行

構成要素を作成

管理画面にログイン後、画面上部の「構成要素」メニューから「データ出力」を選択し、データ出力画面に遷移します。

データ出力画面「作成」タブをクリックでデータ出力構成要素の新規作成画面が表示されるので、以下の項目を入力して「保存」します。

  • データ出力名:任意
  • バケット名:データ出力先バケット
  • GCSファイルパス:出力ファイルパス
  • ファイル名:出力ファイル名
  • ファイルの種類:CSV または TSV のどちらかを選択
  • ヘッダ有無:ヘッダ有り または ヘッダ無しのどちらかを選択
  • 区切り文字:カンマ区切り または タブ区切りのどちらかを選択
  • GZip圧縮有無:gzip圧縮 または 無圧縮のどちらかを選択
  • データセット名:出力対象テーブルのデータセット名
  • テーブル名:出力対象のテーブル名

ジョブを作成

続いて先ほど作成したデータ出力を実行するジョブを作成します。

画面上部の「ジョブ」メニューから「ジョブ一覧」画面に遷移します。

「ジョブの追加」ボタンをクリックします。

ポップアップが表示されるので、任意の「ジョブ名」を入力し、「ジョブ実行種別」は「構成要素を実行」のままで「追加」ボタンをクリック。

ジョブ詳細画面に自動遷移するので、画面下部の「構成要素」欄の「編集」ボタンをクリックし、実行する構成要素を追加します。

構成要素編集ダイアログが表示されるので、データ出力構成要素を右側の「現在の構成要素」欄にドラッグ&ドロップで追加して「保存」します。

構成要素が正常に追加されたことを確認して、「保存」ボタンで保存します。

ジョブを実行

ジョブ一覧画面から、先ほど追加したデータ出力ジョブを実行します。

実行開始を確認してしばらく待つと、ジョブが正常に完了したようです。

ちゃんと GCS にファイルが出力されたか確認してみます。

データ出力構成要素作成時に指定した GCS のパスに、ファイル出力されていることが確認できました。

ファイルの中身も確認します。

出力対象の BigQuery テーブルには、以下の Kaggle データセットからいただいてきたアメリカのアボカドの価格と販売数データが格納済みです。

BigQuery テーブルデータが GCS の CSV ファイルに正常に出力できました。

ロードデータを集計してファイル出力するジョブを作成

さらに、ただテーブルデータを出力するだけではなく、以下の構成要素を組み合わせて、ファイルデータをロード後に集計を実行し、集計結果を出力するジョブを作成してみます。

  • データ連携:GCS のファイルデータを BigQuery にロード
  • SQL:ロードしたデータを集計して別テーブルに格納
  • データ出力:集計結果テーブルデータを GCS にファイル出力

「データ連携」構成要素を作成

「構成要素」メニュー一番上の「データ連携」が、GCS のファイルデータを BigQuery にロードするための構成要素です。

「作成」タブから、ロード先の BigQuery のデータセット名、テーブル名を選択し、ロード対象の CSV ファイルを全件洗い替えでロードするよう指定します。

「データ連携」構成要素の作成手順は以下のエントリでもご紹介しているのでご参照ください。

「SQL」構成要素を作成

次に、ロードしたデータを集計する「SQL」構成要素を作成します。

ロードデータを集計する以下の SQL ファイルを、ローカル PC に保存済みです。

INSERT INTO csa.mart_avocado
SELECT
    region,
    ROUND(AVG(AveragePrice), 2) as price_avg,
    CAST(SUM(_4046) as INT64) as num_small,
    CAST(SUM(_4225) as INT64) as num_midiam,
    CAST(SUM(_4770) as INT64) as num_large
FROM csa.load_avocado
GROUP BY region
ORDER BY region

「ファイルを選択」ボタンから保存済みの SQL ファイルを選択して、「アップロード」をクリック。

無事アップロード完了しました。

「データ出力」構成要素を作成

最後に、「データ出力」構成要素を作成します。 作成手順は前述の通りで、出力対象のテーブルと出力ファイル名のみ変更しました。

ジョブを作成して実行

作成した3つの構成要素を順番に実行するジョブを作成しました。

作成したジョブを実行します。

しばらく待ち、ジョブの正常終了が確認できたので、出力結果を確認してみます。

期待通り、ロードデータの集計結果を GCS に CSV ファイルとして出力することができました。

まとめ

CSA のジョブ管理システム JMC では、管理画面の GUI 操作だけでノンコーディングでバッチジョブを作成し管理することが可能です。 ジョブのリトライやスケジュール実行、実行結果の通知なども自由に設定できるので、運用負荷も軽減できます。

本エントリでは Google Cloud BigQuery にデータを格納していますが、他に Amazon Redshift と Snowflake にも対応しています。 データ分析基盤の構築をご検討の際には、短期間、低コストで始められる CSA の導入もご一考いただけますと幸いです。

CSA の導入に関しては、ぜひお気軽に弊社クラスメソッドにご連絡ください!