プレイス インサイトを使ってみる

Places Count 関数は、BigQuery で実行される事前定義済みの SQL クエリです。Places Insights データセットにクエリを実行して正確なカウントと Place ID を取得する場合におすすめの方法です。データセットに 直接クエリを実行することもできますが、2 つのクエリ方法ではプライバシーのしきい値と検索エリアの処理方法が異なります。

  • Places Count 関数 は、0 を含む任意のカウントを返すことができますが、 最小検索エリアは 40.0 メートル × 40.0 メートル(1,600 平方メートル)に制限されます。また、関数は Place ID を返します。この ID を使用して 、個々の場所に関する情報を検索できます。

  • 場所データセットのクエリ は、5 以上のカウントのみを返すことができます(差分プライバシーを維持するため、0 ~ 4 の少ないカウントは除外されます)。ただし、検索エリアのサイズに制限はありません。

複雑な空間分析を行う必要がない場合は、 Places Count 関数から始めることをおすすめします。 PLACES_COUNT_PER_H3 標準化されたグリッドセル全体で空間密度に関する分析情報をすぐに取得でき、グラウンド トゥルースの検査用の Place ID を返します。また、地理空間の特徴エンジニアリングと ML モデル用に構築されています。

最適な Places Count 関数を選択する

Places Insights は、いくつかの空間関数をサポートしています。クエリの実行、並列処理、バッチ スケーラビリティを最適化するには、次の関数を使用することをおすすめします。

  • PLACES_COUNT_PER_H3: H3 セルごとの場所のカウントを含む BigQuery テーブルを返します。この関数は、地域密度分析とコロプレスマップのヒートマップに推奨されます。
  • PLACES_COUNT_V2: 場所のカウントとサンプル Place ID を含むテーブルを返します。この関数 は、入力地理情報を含むテーブル パラメータ を受け取ります。テーブル全体を直接渡すことで、BigQuery 実行エンジンはワークロードを分散し、空間交差を並行して処理できるため、大規模な分析で非常に効率的なバッチ処理が可能になります。
  • PLACES_COUNT_PER_TYPE_V2: 場所のタイプ別に分類された場所のカウントとサンプル Place ID のテーブルを返します。PLACES_COUNT_V2 と同様に、入力地理情報をテーブル パラメータとして渡すことで、BigQuery は大規模なデータセット全体で空間交差をネイティブに並列化できます。

これらの関数は、場所のカウントとともに、レスポンスの要素ごとに最大 250 個の Place IDs も返します。

Place ID は、次のものに使用できます。

Places Count 関数を使用してクエリを実行する

関数を呼び出すには、[project name (optional)].[table name].[function name] の形式を使用します。

Places Insights の設定時にリンクされたデータセット名を変更した場合は、デフォルトのテーブル名ではなくカスタム名を使用します。プロジェクト名を含めることもできます。プロジェクト名が含まれていない場合、クエリはデフォルトでアクティブなプロジェクトになります。

次に例を示します。

PROJECT_NAME.places_insights___us.PLACES_COUNT_V2

JSON_OBJECT を使用して、関数に引数を渡します。

大文字と小文字を区別するパラメータを使用してクエリ結果をフィルタする

Places Count 関数は、検索を絞り込むための多くのフィルタをサポートしています。これらのパラメータ(price_leveltypes など)では大文字と小文字が区別され、パラメータ名と完全に一致する必要があります。オプションの一覧については、 フィルタ パラメータのリファレンスをご覧ください。

次の例では、PLACES_COUNT_V2 関数を使用して、最小ユーザー評価、料金レベル、ビジネス ステータス、レストランで犬を許可するかどうかで検索を絞り込むフィルタを適用します。

まず、入力地理情報テーブルを使用するか、選択した地理情報を含むテーブルを準備します。

-- Create a table for the input geographies
CREATE TABLE `PROJECT_NAME.YOUR_DATASET.my_search_areas` AS (
  SELECT
    '1' AS geo_id, -- Unique identifier
    ST_GEOGPOINT(-73.9857, 40.7484) AS geo -- Empire State Building
  UNION ALL
  SELECT
    '2' AS geo_id, -- Unique identifier
    ST_GEOGPOINT(-73.9851, 40.7580) AS geo -- Times Square
);

次に、テーブルとフィルタを含む JSON オブジェクトを使用して PLACES_COUNT_V2 を呼び出します。検索半径は JSON フィルタに含まれており、my_search_areas テーブルの各ポイントの周囲に適用されます。

SELECT * FROM `PROJECT_NAME.places_insights___us.PLACES_COUNT_V2`(
  TABLE `PROJECT_NAME.YOUR_DATASET.my_search_areas`,
  JSON_OBJECT(
      'geography_radius', 1000, -- Radius in meters around each point in 'geo'
      'business_status', ['OPERATIONAL'],
      'types', ["restaurant"],
      'min_rating', 1.3,
      'price_level', ['PRICE_LEVEL_INEXPENSIVE', 'PRICE_LEVEL_MODERATE'],
      'allows_dogs', TRUE
      )
);

例: PLACES_COUNT_V2 を使用してレストランの数とブランドのロケーションをクエリする

次の例では、カスタム入力地理情報テーブル my_search_areasPLACES_COUNT_V2 関数を使用して、ニューヨーク市のエンパイア ステート ビルとタイムズ スクエアから 1,000 メートル以内の営業中のレストランの数を返します。

SELECT * FROM `PROJECT_NAME.places_insights___us.PLACES_COUNT_V2`(
  TABLE `PROJECT_NAME.YOUR_DATASET.my_search_areas`,
  JSON_OBJECT(
      'geography_radius', 1000, -- Radius in meters
      'business_status', ['OPERATIONAL'],
      'types', ["restaurant"]
      )
);

レスポンスは、geo_id、地理情報、カウント、Place ID のサンプルを含む BigQuery テーブルです。

ニューヨーク市の Places Count 関数の結果。

次の例では、PLACES_COUNT_V2 関数を使用して、特定のブランド ID でフィルタします。この例では、ブランド ID "1413758728321880760" を使用してスターバックスのロケーションをフィルタします。

フィルタするブランドのブランド ID を確認するには、データセットの brands テーブル(places_insights___us.brands など)にクエリを実行します。ブランド データセットの詳細については、ブランド データを使用してクエリを作成するをご覧ください。

たとえば、「スターバックス」のブランド ID を確認するには、次のようにします。

SELECT id, name
FROM `PROJECT_NAME.places_insights___us.brands`
WHERE name = "Starbucks"

ブランド ID を取得したら、次のクエリに示すように、brand_ids フィルタで使用できます。

SELECT * FROM `PROJECT_NAME.places_insights___us.PLACES_COUNT_V2`(
  TABLE `PROJECT_NAME.YOUR_DATASET.my_search_areas`,
  JSON_OBJECT(
      'geography_radius', 1000, -- Radius in meters
      'business_status', ['OPERATIONAL'],
      'brand_ids', ["1413758728321880760"]
      )
);

Google Cloud ツールでクエリの出力を可視化する

分析ツールとビジネス インテリジェンス ツールを使用すると、 BigQuery データから分析情報を発見できます。BigQuery は、Google とサードパーティの データ可視化 ツールをいくつかサポートしています。これらのツールを使用して、Places Insights データに対する関数の結果を分析できます。

関数の結果を可視化する例については、PLACES_COUNT_PER_H3 リファレンスの結果を可視化するをご覧ください。 Places Insights の結果の可視化の詳細については、クエリ結果を可視化する をご覧ください

関数の制限事項と要件

Places Count 関数には、次の制限事項と要件があります。

  • この関数は、COUNT 分析情報のみをサポートしています。
  • 最小検索エリアは 40.0 メートル × 40.0 メートル(1600 m2)(40.0 メートル × 40.0 メートル / 1,600 平方メートル)に制限されます。
  • パラメータ入力サイズの上限: 関数にパラメータとして渡される JSON オブジェクトは 1 MB に制限されます。この制限の影響は、関数のバージョンによって異なります。
    • V2 関数(PLACES_COUNT_V2PLACES_COUNT_PER_TYPE_V2)の場合、この制限はフィルタ JSON オブジェクトにのみ適用されます。 地理情報はテーブル パラメータを使用して個別に提供されるため、これらの関数は JSON サイズの上限に達することなく、はるかに多くの入力地理情報にスケーリングできます。
    • PLACES_COUNT_PER_H3PLACES_COUNTPLACES_COUNT_PER_TYPEPLACES_COUNT_PER_GEO の場合、この制限は、すべての地理情報定義を含む JSON オブジェクト全体に適用されます。これにより、1 回の呼び出しで処理できる地理情報の数が制限される可能性があります。
  • プレイス ID、EV 充電オプション、住所コンポーネントによるフィルタリングはサポートされていません。
  • Places Count 関数には、登録した都市や国でのみアクセスできます。データセットへのアクセスについては、Set up Places Insights を設定するをご覧ください。
  • フィルタ パラメータ(geographytypes など)では大文字と小文字が区別され、パラメータ名と完全に一致する必要があります。一致しない場合、クエリは失敗します。