Looker Studio でプレイス分析情報を動的に可視化する

概要

Looker Studio が BigQuery の Places Insights に都市、曜日、時間の動的パラメータを送信して、地理空間密度ヒートマップを生成するワークフローを示す図。

このドキュメントでは、Places InsightsLooker Studio を使用して動的な地理空間レポートを作成する方法について説明します。技術者以外の関係者が自分で質問に答えられるようにすることで、位置情報の価値を引き出します。このガイドでは、リクエストごとに SQL を記述することなく、静的レポートを市場分析用のインタラクティブなヒートマップ スタイルのツールに変換する方法について説明します。複雑な位置情報データへのアクセスを可能にし、データ エンジニアリングとビジネス インテリジェンスのギャップを解消します。

このアーキテクチャ パターンを採用すると、次のような重要なメリットが得られます。

  • データの視覚的表現: Places Insights のデータをインタラクティブな地図やグラフに変換し、空間密度と傾向をすぐに把握できるようにします。
  • SQL を使用しない簡素化された探索: マーケット アナリストや不動産プランナーなどのチームメンバーが、事前定義されたパラメータを使用してデータを動的にフィルタリングできます(例: プルダウンを使用して「市区町村」や「時間帯」を変更する)。SQL を 1 行も記述せずにデータを探索できます。
  • シームレスなコラボレーション: 標準の Looker Studio 共有機能を使用すると、インタラクティブな分析情報を安全に配布できます。

ソリューションのワークフロー

次のワークフローは、パフォーマンスの高いレポート アーキテクチャを確立します。静的なベースラインから完全に動的なアプリケーションに移行し、複雑さを導入する前にデータの正確性を確保します。

前提条件

始める前に、こちらの手順に沿ってプレイス分析を設定してください。無料ツールの Looker Studio へのアクセスが必要です。

ステップ 1: 静的地理空間ベースラインを確立する

インタラクティブ機能を導入する前に、ベースクエリを確立し、Looker Studio で正しくレンダリングされることを確認します。Places Insights と BigQuery の地理空間機能を使用して、H3 インデックス システムを使用してデータを六角形のグリッドに集約します。これにより、Looker Studio の塗りつぶし地図のグラフタイプで可視化に使用できるクエリ出力が生成されます。

1.1 データの接続

次の静的クエリを使用して、初期接続を確立します。固定の場所(ロンドン)とカテゴリ(レストラン)をターゲットにして、データ パイプラインを検証します。

SELECT
  h3_index,
  `carto-os.carto.H3_BOUNDARY`(h3_index) AS h3_geo,
  restaurant_count
FROM (
  SELECT WITH AGGREGATION_THRESHOLD
    `carto-os.carto.H3_FROMGEOGPOINT`(point, 8) AS h3_index,
    COUNT(*) AS restaurant_count
  FROM
    -- Note: Change 'gb' to your target country code (e.g., 'us')
    `places_insights___gb.places`
  WHERE
    'London' IN UNNEST(locality_names)
    AND 'restaurant' IN UNNEST(types)
  GROUP BY
    h3_index
)
ORDER BY
  restaurant_count DESC;

空間集計に関する注意

このクエリでは、Google Cloud BigQuery で一般公開されている CARTO Analytics Toolbox(carto-os)の関数を使用します。H3_FROMGEOGPOINT 関数は、特定の位置ポイントを H3 セルに変換します。これは、世界を六角形のグリッドセルに分割するシステムです。

Looker Studio の塗りつぶし地図では、色をレンダリングするためにポリゴン(図形)が必要になるため、この変換を使用します。ポイントを六角形に変換することで、何千もの点が重なり合うのではなく、特定のエリアのビジネスの密度を可視化できます。

集計しきい値に関する注意事項

すべての Places Insights クエリには WITH AGGREGATION_THRESHOLD 句が必要です。このプライバシー保護により、集計数が 5 以上のデータのみが返されます。

この可視化のコンテキストでは、H3 グリッドセルに 5 つ未満のレストランが含まれている場合、そのセルは結果セットから完全に除外され、地図に空として表示されます。

Looker Studio でこれを実装するには:

  1. 新しい空のレポートを作成します。
  2. データコネクタとして [BigQuery] を選択します。
  3. 左側のメニューから [カスタムクエリ] を選択し、課金 プロジェクト ID を選択します。
  4. 上記の静的ベースクエリをエディタに貼り付けます。
  5. [レガシー SQL を使用する]、[期間を有効にする]、[閲覧者のメールアドレスを有効にする] の各パラメータをオフにします。
  6. [追加] をクリックします。

1.2 地理空間の可視化を構成する

データが接続されたら、H3 境界データを正しく認識するように Looker Studio を構成します。

  1. [グラフを追加] メニューから、レポート キャンバスに塗り分け地図のビジュアリゼーションを追加します。
  2. ポリゴン ジオメトリを含む h3_geo フィールドが [地理空間] データ型に設定されていることを確認します。
    1. 接続名の横にある [データソースを編集](鉛筆)アイコンをクリックします。
    2. h3_geo が [Text](ABC)に設定されている場合は、プルダウン メニューを使用して [Geo] > [Geospatial] を選択します。
    3. [完了] をクリックします。
  3. h3_index フィールドを Location(一意の識別子として機能)にマッピングします。
  4. h3_geo フィールドを [地理空間フィールド](ポリゴン ジオメトリとして機能)にマッピングします。
  5. restaurant_count フィールドを [色の指標] にマッピングします。

これにより、H3 セルごとのレストランの密度を示す地図がレンダリングされます。濃い青色(デフォルトの色オプション)は、レストランの数が多いセルを示します。

ロンドンの地図が塗りつぶされ、六角形のグリッドが重ねて表示されています。青色が濃いセルほど、レストランの密度が高いことを示しています。凡例には、5 ~ 1,215 の範囲の密度カウントが表示されています。

ステップ 2: 動的パラメータを実装する

レポートをインタラクティブにするため、ユーザーが次のオプションから選択できるコントロールをレポートに追加します。

  • 地域: レポートの対象となる都市を制御します。
  • 曜日: スキーマの regular_opening_hours レコードを活用して、営業している曜日で場所をフィルタします。
  • 時間帯: start_time フィールドと end_time フィールドを比較して、営業時間を基準に場所をフィルタします。

これを実現するには、ユーザーが選択したパラメータを、実行時に変更された Places Insights クエリに直接渡します。Looker Studio のデータソース エディタで、これらのパラメータを型付き変数として明示的に定義する必要があります。

Looker Studio で、[リソース] メニューを選択し、[追加済みのデータソースの管理] をクリックします。表示されたパネルで、先ほど追加した BigQuery カスタム SQL データソースの EDIT を選択します。

[接続を編集] ウィンドウで、[パラメータを追加] を選択します。以下の値で 3 つのパラメータを追加します。

パラメータ名 データ型 使用可能な値 値のリスト(DB と完全に一致している必要があります)
p_locality テキスト 値の一覧
ラベル
London ロンドン
Manchester マンチェスター
Birmingham バーミンガム
Glasgow グラスゴー
p_day_of_week テキスト 値の一覧
ラベル
monday 月曜日
tuesday 火曜日
wednesday Wednesday
thursday 木曜日
friday 金曜日
saturday 土曜日
sunday 日曜日
p_hour_of_day テキスト 値の一覧
ラベル
03:00:00 午前 3 時~午前 4 時
08:00:00 午前 8 時~午前 9 時
19:00:00 午後 7 時~午後 8 時

p_hour_of_day パラメータの構成例。

p_hour_of_day パラメータの構成インターフェース。値のリスト セクションで、時間文字列が読み取り可能なラベルにマッピングされています。

p_hour_of_day パラメータについては、Value 列に注意してください。SQL クエリで CAST(@p_hour_of_day AS TIME) が使用されているため、Looker Studio から渡される値は厳密な HH:MM:SS 形式(24 時間表記)である必要があります。

3 つのパラメータをすべて設定して保存したら、BigQuery カスタム SQL 接続を変更して、@ 構文を使用してこれらの変数を参照するようにします。

これを行うには、[接続を編集] をクリックして、次の変更されたクエリを貼り付けます。

SELECT
  h3_index,
  `carto-os.carto.H3_BOUNDARY`(h3_index) AS h3_geo,
  restaurant_count
FROM (
  SELECT WITH AGGREGATION_THRESHOLD
    `carto-os.carto.H3_FROMGEOGPOINT`(point, 8) AS h3_index,
    COUNT(*) AS restaurant_count
  FROM
    `places_insights___gb.places`
  WHERE
    -- Dynamic locality filter based on parameter
    @p_locality IN UNNEST(locality_names)
    AND 'restaurant' IN UNNEST(types)
    AND business_status = 'OPERATIONAL'
    AND EXISTS (
      SELECT 1
      FROM UNNEST(
        CASE @p_day_of_week
          WHEN 'monday' THEN regular_opening_hours.monday
          WHEN 'tuesday' THEN regular_opening_hours.tuesday
          WHEN 'wednesday' THEN regular_opening_hours.wednesday
          WHEN 'thursday' THEN regular_opening_hours.thursday
          WHEN 'friday' THEN regular_opening_hours.friday
          WHEN 'saturday' THEN regular_opening_hours.saturday
          WHEN 'sunday' THEN regular_opening_hours.sunday
        END
      ) AS hours
      WHERE hours.start_time <= CAST(@p_hour_of_day AS TIME)
        AND hours.end_time >= TIME_ADD(CAST(@p_hour_of_day AS TIME), INTERVAL 1 HOUR)
    )
  GROUP BY
    h3_index
)
ORDER BY
  restaurant_count DESC;

[再接続] をクリックして編集内容を保存します。変更されたクエリで、@p_hour_of_day などの新しい変数を確認します。これは、先ほど設定したパラメータ名に対応しています。

レポート キャンバスに戻り、これらのパラメータをエンドユーザーに公開します。

  1. レポートに 3 つのプルダウン リスト コントロールを追加します。
  2. 各コントロールで、コントロール フィールドを新しく作成したパラメータに対応するように設定します。
    • コントロール 1: p_locality
    • コントロール 2: p_day_of_week
    • コントロール 3: p_hour_of_day

最終的なレポートは次のようになります。プルダウン コントロールのいずれかの値を変更すると、Looker Studio は地図に表示する前に、リクエストされたデータをプレイス インサイトから取得します。

最終的なインタラクティブ レポート。グラスゴーのレストラン密度マップが表示され、上部に 3 つのプルダウン フィルタが表示されている。[時間] メニューが展開され、選択可能な期間が表示されます。

ステップ 3: 結果を共有する

Looker Studio に組み込まれている共有ツールを使用して、レポートを共有します。これにより、閲覧者はプルダウン リストから選択したパラメータに基づいて、可視化を動的に更新できます。

まとめ

このパターンでは、BigQuery の計算能力を活用して集計されたプレイス分析情報を Looker Studio に提供する、スケーラブルでインタラクティブなレポートツールを作成します。このアーキテクチャでは、大規模な未加工データセットを可視化しようとする際の落とし穴を回避し、エンドユーザーが時間、場所、業種などのさまざまなディメンションでデータをほぼリアルタイムで探索できる柔軟性を提供します。これは、技術的な知識のない関係者がデータを柔軟に探索できる強力なツールです。

次のステップ

Places Insights スキーマのさまざまな部分をパラメータ化して、動的レポートの他のバリエーションを試してみます。

  • 動的な競合他社分析: brand 名前のパラメータを作成して、ユーザーがヒートマップをさまざまな競合他社間で瞬時に切り替え、市場での相対的な飽和度を確認できるようにします。ブランドデータの可用性については、プレイス分析のデータについてをご覧ください。
  • インタラクティブなサイト選択: price_level のパラメータを追加します(例:「中程度」と「高額」)と最小 rating を指定して、不動産チームが特定の人口統計プロファイルに一致するエリアを動的にフィルタできるようにします。
  • カスタム商圏: 市区町村名でフィルタする代わりに、ユーザーがカスタムの調査エリアを定義できるようにします。
    • 半径ベース: p_latitude、p_longitude、p_radius_meters の 3 つの数値パラメータを作成します。座標は、Geocoding API などの Google Maps Platform API から取得できます。クエリで、これらを ST_DWITHIN 関数に挿入します。
      • ST_DWITHIN(point, ST_GEOGPOINT(@p_longitude, @p_latitude), @p_radius_meters)
    • ポリゴンベース: 複雑なカスタムシェイプ(販売テリトリーなど)の場合、ユーザーはジオメトリ テキストを簡単に入力できません。代わりに、シェイプ ジオメトリとわかりやすい名前(例:「ゾーン A」)。Looker Studio でテキスト パラメータ p_zone_name を作成して、ユーザーがゾーンを選択できるようにします。また、サブクエリを使用して ST_CONTAINS 関数のジオメトリを取得します。

寄稿者

  • David Szajngarten | デベロッパー リレーションズ エンジニア
  • デベロッパー エクスペリエンス エンジニア | Henrik Valve