データサイエンス

BigQueryのシャーディングテーブルをLooker Studioで可視化する方法

こんにちは。新米分析官のA.K.です! 今回は、Looker StudioでBigQuery上にあるシャーディングテーブルを読み込んだ時のエラーとその対処方法についてご紹介します。

エラーの紹介

Bigquery側でサンプル用のテーブルを用意しました。テーブルはサフィックスに「YYYYMMDD」形式で日付を持っているデータです。中には適当な値を入れています。

作成に使用したクエリ例は以下の通りです。

create or replace table {dataset}.demo_{yyyymmdd} (
  create_datetime DATETIME,
  category STRING,
  price INT64
);


insert into {dataset}.demo_{yyyymmdd} 
 (create_datetime, category, price)
VALUES
 ('2023-02-15 08:00:00', 'beverage', 100),
  ('2023-02-15 09:00:00', 'food', 300),
  ('2023-02-15 10:00:00', 'daily necessities', 500),
  ('2023-02-15 11:00:00', 'medicine', 100),
  ('2023-02-15 12:00:00', 'beverage', 150)

 

こちらのテーブルをLooker Studioから読みこんでみます。まず、Looker Studioに移動します。

Looker Studioで「作成」>「レポート」をクリックすると、コネクタを選択する画面に移行するので、コネクタから「BigQuery」を選択します。

BigQuery上にあるプロジェクトの選択画面に移行するので、先ほど作成したサンプル用のテーブル(demo_YYYYMMDD)を読み込ませてみます。

すると、下記画像のようにデータは正常に読み込まれますが、データが認識されない状態になります。エラーメッセージも出ない為、何が原因なのかよくわかりませんでした。

原因の探索

Looker StudioとBigQueryのシャーディングテーブルについて調べてみると、下記の記事がヒットしました。

記事内で、「BigQueryで1日分しかデータがない日付シャーディングテーブルをうまく描画できない」との記載があります。
今回用意したサンプルテーブルは2日分用意しているため、上記内容とは異なるのですが、生じている現象は同じでした。

どうやら、Looker StudioとBigQueryのシャーディングテーブルは相性が良くないみたいです。根本の原因はよくわかりませんが、シャーディングテーブルをそのまま読み込むとデータを正しく認識してくれなさそうです。

そこでカスタムクエリを利用して、データを読み込んでみます。

解決方法

まず、画面右側のデータ編集のサイドバーからアイコンをクリックして、データ編集の画面を開きます。データ編集画面から「接続を編集」をクリックして、BigQueryのプロジェクト選択画面に戻ります。

画面左側のサイドバーから「カスタムクエリ」を選択して、課金プロジェクトを選択します。課金プロジェクトを選択すると、カスタムクエリを記述する枠が出てくるので、こちらにクエリを書いていきます。

カスタムクエリは下記を使用します。

SELECT *
FROM `{dataset}.demo_*`
WHERE _table_suffix BETWEEN @DS_START_DATE AND @DS_END_DATE;

カスタムクエリの「@DS_START」と「@DS_END_DATE」はLooker Studio内の日付パラメータになります。カスタムクエリが書けたら、「期間パラメータを有効にする」にチェックを付けて「再接続」をクリックします。データ接続変更に関して、注意のポップアップが表示されるので、「適用」をクリックしたのち、「完了」ボタンからデータソースの編集を終了します。

次に、「コントロールを追加」>「期間設定」から期間を指定するためのパラメータを作成します。

パラメータが作成できたら、日付をシャーディングテーブルの日付に変更すると、見事データが読み込まれました。

補足

後々、気が付いたことですが、月を跨いだシャーディングテーブルが正しく読み込まれないようです。サンプルで使用していた2つのシャーディングテーブルのうち、片方の日付を「20230201」に変更してみます。(2023年2月現在)

カスタムクエリを使用しない通常の読み込み方法で、Looker Studioに読み込ませてみると「20230201」に変更した日付のテーブルのみが正しくデータが読み込まれました。どうやら、Looker Studio側で「現在年月」のシャーディングテーブルのみを読み込むように設計されている(バグ?)ようでした。

最後に

いかがでしたでしょうか。根本的な原因の解決はできませでしたが、カスタムクエリを使用することで、BigQueryのシャーディングテーブルをLooker Studioで可視化することができました。BigQueryのシャーディングテーブルは、課金量を抑えるためにも便利な機能なので、Looker Studioで手軽に読み込めないのは致命的かなと思います。早く修正されるとありがたいですね…。

A.K.
新米分析官。趣味は、釣り・サウナ。