Places Insights のデータポータルの可視化

概要

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

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

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

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

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

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

前提条件

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

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

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

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 セルに変換します。これは、世界を六角形のグリッドセルに分割するシステムです。

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

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

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

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

データポータルでこれを実装するには:

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

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

データが接続されたら、H3 境界データを正しく認識するようにデータポータルを設定します。

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

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

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

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

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

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

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

データポータルで、[リソース] メニューを選択し、[追加済みのデータソースの管理] をクリックします。表示されたパネルで、先ほど追加した 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) が使用されているため、データポータルから渡される値は厳密な 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

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

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

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

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

まとめ

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

次のステップ

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」など)を含むルックアップ テーブルを BigQuery に作成します。データポータルでテキスト パラメータ p_zone_name を作成して、ユーザーがゾーンを選択できるようにし、サブクエリを使用して ST_CONTAINS 関数のジオメトリを取得します。

寄稿者