Excel を Google BigQuery に接続するための総合ガイド

Google の BigQuery は、企業がこれを利用して膨大なデータセットをリアルタイムで分析できる、強固でサーバーレス、かつ拡張性に優れたデータ ウェアハウスです。中堅企業で働くデータの専門家にとって、Excel を BigQuery に接続できるということは、Excel の高度なデータ操作機能と BigQuery の強力な分析エンジンを組み合わせて Tableau や Power BI などの下流アプリケーションに渡すという新たな可能性が開かれるということになります。そしてこの接続により、Excel データを BigQuery にプッシュして保存し、さらに処理することができます。

そこで本記事では、Excel と BigQuery を接続し、スムーズなデータ転送、効果的なレポート作成、効率的なデータ分析を実現するためのさまざまな方法について見ていきます。さらに、各手法のステップバイステップの方法とその制限について見ていき、データアナリストが Excel と BigQuery を使う際に遭遇する可能性のある一般的な疑問に回答します。

Excel と BigQuery を接続する理由

Excel は日々のデータ分析に非常に重要なツールですが、BigQuery に接続することで以下のことができるようになります:

  • 使い慣れた Excel 環境で BigQuery の大規模データセットを分析する。
  • 大量のデータで Excel に負荷をかけることなく、BigQuery のスケーラビリティを活用する。
  • BigQuery のデータに対してアドホックな SQL クエリを実行する。
  • Excel から BigQuery にデータをプッシュし、さらなる分析や可視化、機械学習モデル、長期保存に利用する。

この組み合わせにより、データの専門家は、大規模なビッグデータを処理するための BigQuery のパワーと、分析やレポート作成のための Microsoft Excel の柔軟性という、両方の長所を活かして作業することができるのです。

Excel と BigQuery を接続する方法

1.Google Sheets を仲介役として使う

Google Sheets のワークブックには、Excel から BigQuery へデータを移動するためのシンプルでコード不要な方法が用意されており、Excel のデータを Google Sheets にアップロードして、Google Sheets を BigQuery に接続することで、簡単にデータを移行することができます。

手順:

  • Excel を Google Sheets に変換する
    • Google Sheets を開き、[File(ファイル)]→[Import(インポート)]と進み、Excel ファイル(.xlsx)をアップロードする。
    • データは Google Sheets のフォーマットに変換される。
  • Google Sheets のワークシートを BigQuery に接続する
    • Google Sheets で、[Data(データ)]→[Data connectors(データコネクタ)]→[Connect to BigQuery(BigQuery に接続)]に移動する。
    • Google アカウントを認証し、関連する BigQuery プロジェクトとデータセットを選択する。
  • データを BigQuery のアカウントにエクスポートする
    • BigQuery に接続したい Google Sheets のデータ範囲を選択する。
    • コネクタツールを使って、データを BigQuery データセットに直接プッシュする。

制約:

  • データサイズの制限:Google Sheets には1,000万セルの制限がある。
  • 手動プロセス:定期的な転送や大規模な自動化には不向き。

2.CSV のアップロードのために BigQuery Web UI を使う

データが Excel の場合は、それを CSV ファイルとして保存し、BigQuery の Web UI を使って BigQuery に直接アップロードできます。この方法は、自動処理や複雑な設定が必要ない単純なデータ転送に有効です。

手順:

  • Excel を CSV に変換する
    • Excel のスプレッドシートで、ファイルを CSVとして保存する[[File(ファイル)→ Save As(名前を付けて保存)→ CSV(カンマ区切り)]。
  • CSV を BigQuery にアップロードする
    • BigQuery の Web インタフェースを開き、プロジェクトに移動する。
    • [Create Table(テーブルの作成)]をクリックして[Upload as the source(ソースとしてアップロードする)]を選択して CSV ファイルをアップロードする。
    • データを格納する BigQuery のターゲットデータセットとテーブルを指定する。
    • スキーマの設定を設定する(自動検出または手動でスキーマフィールドを設定する)。
  • データをインポートする
    • 設定を完了し、[Create Table(テーブルを作成する)]をクリックすると、CSV ファイルのデータが BigQuery テーブルにアップロードされる。

制約:

  • 手作業:CSV への変換とセットアップを毎回手動で行う必要がある。
  • 自動化されていない:定期的、反復的なデータ転送には不向き。

3.BigQuery データ転送サービスを利用する

DTS(BigQuery Data Transfer Service)で、BigQuery へのデータのインポートが自動化されます。DTS は Google Ads や YouTube のような Google 製品に対応していますが、最初に Google Sheets や Google Cloud Storage にデータを読み込むことで、Excel データ用に拡張することができます。

手順:

  • Excel データを CSV に変換し、Google Cloud Storage にアップロードする
    • Excel ファイルを CSV ファイルとして保存する。
    • CSV ファイル を GCS(Google Cloud Storage)のバケットにアップロードする。
  • BigQuery のデータ転送を設定する
    • BigQuery の Web UI で、BigQuery Data Transfers に移動する。
    • 新しいデータ転送を作成し、ソースとして Google Cloud Storage を選択する。
  • 転送をスケジュールする
    • GCS のバケットとファイルの場所を指定する。
    • BigQuery のターゲットデータセットを設定し、テーブルスキーマを設定する。
    • GCS から BigQuery にデータを移動するために、転送(1回限りまたは定期的)をスケジュールする。

制約:

  • Google Cloud Storage の使用が必要:最初に CSV ファイルを GCS に保存しないといけない。
  • セットアップが複雑さ:直接アップロードに比べ、高度なオプションを使ったより多くの設定が必要。

4.Google Apps Script を使う

Excel のデータが Google Sheets に保存されている場合、Google Apps Script を使って Sheets から BigQuery へのデータ転送を自動化することができます。ちなみに Google Apps Script は、Google Sheets 内で JavaScript コードを記述できる軽量のスクリプトプラットフォームです。

手順:

  • Excel を Google Sheets に変換する
    • [File(ファイル)]→[Import(インポート)]で Excel のデータを Google Sheets にインポートする。
  • Google Apps Script サービスアカウントを開く
    • Google Sheets でスクリプトのインターフェースを開く(Extensions→Apps Script)。
  • Google Apps のスクリプトを書いてデータを転送する
    • Google Sheets からデータを取得し、BigQuery に挿入するスクリプトを作成する。
function loadDataToBigQuery() {
  var projectId = 'your_project_id';
  var datasetId = 'your_dataset_id';
  var tableId = 'your_table_id';
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var data = sheet.getDataRange().getValues();
  var bigqueryData = [];
  for (var i = 1; i < data.length; i++) {
    bigqueryData.push({
      field1: data[i][0],  // Replace with your column mappings
      field2: data[i][1]
    });
  }
    var bigqueryTable = {
    projectId: projectId,
    datasetId: datasetId,
    tableId: tableId,
    rows: bigqueryData.map(row => ({json: row}))
  };
BigQuery.Tabledata.insertAll(bigqueryTable);
}
  • スクリプトを実行する
    • スクリプトを実行して、Google Sheets から BigQuery にデータを転送する。

制約:

  • スケーラビリティが限られる:小規模から中規模のデータセットに最適。

5.Python と BigQuery API を使う

コーディングに馴染みのある上級ユーザーであれば、Python のスクリプトを作成して、BigQuery API を使って Excel から BigQuery へのデータ転送を自動化することができます。この方法は最も柔軟性が高く、大規模なデータセットや複雑なワークフローにも対応できます。

手順:

  • 必要な Python ライブラリをインストールする
    • Excel と BigQuery を使のに必要なライブラリをインストールする。
pip install pandas google-cloud-bigquery openpyxl
  • Python のスクリプトを書く
    • pandas を使って Excel ファイルを読み込み、google-cloud-bigquery を使ってデータを BigQuery に読み込む。
import pandas as pd
from google.cloud import bigquery

# Read Excel file into pandas DataFrame
df = pd.read_excel('your_file.xlsx')

# Authenticate and initialize BigQuery client
client = bigquery.Client()

# Specify BigQuery dataset and table
dataset_id = 'your_project.your_dataset'
table_id = f"{dataset_id}.your_table"

# Load DataFrame into BigQuery
job = client.load_table_from_dataframe(df, table_id)
job.result()  # Wait for the job to complete
print(f"Loaded {job.output_rows} rows into {table_id}.")
  • スクリプトを実行する
    • スクリプトは Excel ファイルを読み込み、それを DataFrame に変換し、指定されたBigQueryテーブルに格納する。

制約:

  • コーディングの知識が必要:Python に馴染みのあるユーザーにしか適していない。
  • 手動でのスクリプト実行:スケジューラーで自動化されない限り、スクリプトは手動で実行されないといけない。

6.サードパーティのデータ統合プラットフォームを使う

Integrate.io のようなサードパーティの統合プラットフォームには、Excel から BigQuery へデータを転送するためのローコードソリューションがあり、そのようなプラットフォームでは、データフローを自動化してスケジュールすることができることから、技術的なバックグラウンドを持たないユーザーでもそのプロセスを簡単に行うことができます。

手順:

  • データ統合プラットフォームに登録する
  • データソースを接続する
    • ローカルまたは Google Drive などのクラウドストレージに保存されている Excel データと、BigQuery プロジェクトの両方の接続を設定する。
  • データパイプラインを設定する
    • データパイプラインを定め、Excel ファイルをソース、BigQuery をデスティネーションとして指定する。
    • Excel のデータと BigQuery のテーブル間のフィールドをマッピングする。
  • データ転送の自動化を設定する
    • 定期的なデータ転送をスケジュールしたり、特定のイベントや条件に基づいて転送をトリガーしたりする。

まとめ

Excel やその他のソースを Google の BigQuery に接続することで、データの専門家は BigQuery のクラウドベースのデータウェアハウスのパワーを活用しながら、大規模なデータセットを効率的に分析できるようになります。単純な1回限りのデータ転送でも、定期的なデータ同期や BigQuery へのデータ取得のための自動化ソリューションを希望する場合でも、本記事でお話した方法は幅広いユースケースに対応します。Excel から BigQuery への自動化を始めるには、こちらからぜひお問い合わせください。

Q&A

1. BigQuery と Excel 間のデータ同期を自動化できますか?

Integrate.io のようなサードパーティツールを使えば、スケジュールやトリガーに基づいて BigQuery と Excel 間でデータを同期する自動ワークフローを設定できます。Excel の Power Query も手動更新に対応していますが、完全自動化には追加の設定が必要です。

2. BigQuery のデータを Excel に読み込むのに時間がかかるのはなぜですか?

BigQuery から Excelへのデータ転送のパフォーマンスは、データセットのサイズ、ネットワーク速度、クエリの複雑さによって変わってきますが、BigQuery でフィルタを使って、最適化されたクエリを実行することで、データの読み込み時間を短縮できます。また、Excel には 1,048,576 行の行数制限があるため、この制限を超えないようにしてください。

3. Excel から BigQuery にデータをプッシュできますか?

はい。Integrate.io のようなサードパーティの統合プラットフォームを使うか、Excel から CSV ファイルを保存した後に手動で BigQuery にアップロードすることで、Excel から BigQuery にデータをプッシュすることができます。また、プラットフォームによっては、このプロセスを自動化して定期的にアップロードできるものもあります。