Truy vấn số lượng địa điểm yêu thích theo loại địa điểm

Hàm PLACES_COUNT_PER_TYPE_V2 trả về một bảng BigQuery chứa số lượng địa điểm và Mã địa điểm mẫu, được phân tích theo loại địa điểm, cho nhiều khu vực địa lý đầu vào. Hàm này được thiết kế để xử lý hàng loạt một cách hiệu quả bằng cách chấp nhận tham số bảng đầu vào của các khu vực địa lý. Bạn cung cấp thông tin địa lý thông qua một bảng đầu vào và chỉ định loại địa điểm dưới dạng một mảng.

Cú pháp

SELECT * FROM `PROJECT_NAME.LINKED_DATASET_NAME.PLACES_COUNT_PER_TYPE_V2`(
  TABLE input_geographies,
  target_types,
  filters
)

Thông số

  • PROJECT_NAME: Tên dự án trên đám mây của bạn trên Google Cloud.
  • LINKED_DATASET_NAME: Tên của tập dữ liệu BigQuery chứa các hàm Thông tin chi tiết về địa điểm (ví dụ: places_insights___us).
  • input_geographies: Bảng BigQuery chứa các khu vực địa lý cần phân tích. Bảng này phải bao gồm các cột sau:
    • geo_id (STRING): Giá trị nhận dạng riêng biệt cho mỗi khu vực địa lý.
    • geo (GEOGRAPHY): Đối tượng GEOGRAPHY của BigQuery đại diện cho khu vực. Đây có thể là một điểm, đa giác hoặc loại địa lý khác.
  • target_types (ARRAY<STRING>): Một mảng các chuỗi loại địa điểm mà bạn muốn lấy số lượng. Địa điểm sẽ được tính nếu khớp với bất kỳ loại nào được liệt kê trong mảng types, chứ không chỉ primary_type.
  • filters (JSON): Đối tượng JSON chứa các cặp khoá-giá trị để lọc thêm địa điểm. Xem Tham số bộ lọc.

Giản đồ bảng đầu ra

Hàm PLACES_COUNT_PER_TYPE_V2 trả về một bảng có các cột sau:

Tên cột Loại dữ liệu Mô tả
geo_id STRING Giá trị nhận dạng riêng biệt của vị trí địa lý đầu vào, từ bảng input_geographies.
input_geography GEOGRAPHY Đối tượng GEOGRAPHY ban đầu trong bảng input_geographies.
place_type STRING Loại địa điểm trong mảng target_types mà hàng này đại diện.
place_count INTEGER Số lượng địa điểm khớp với place_type và các bộ lọc khác trong hoặc gần khu vực địa lý.
sample_place_ids ARRAY<STRING> Một mảng gồm tối đa 250 Mã địa điểm khớp với tiêu chí cho loại và vị trí địa lý này.

Kết quả sẽ chứa một hàng cho mỗi tổ hợp geo_id và place_type được chỉ định trong mảng target_types, ngay cả khi số lượng là 0.

Cách hoạt động

Hàm này xử lý từng vị trí địa lý được cung cấp trong bảng input_geographies. Đối với mỗi khu vực địa lý, API này sẽ đếm những địa điểm khớp với bất kỳ loại nào được liệt kê trong mảng target_types, đồng thời đáp ứng tất cả điều kiện trong đối tượng JSON filters. Kết quả được tổng hợp và phân tích theo từng geo_id và từng loại trong target_types.

Ví dụ: Đếm số lượng các loại quán ăn khác nhau ở các hạt của Thành phố New York

Ví dụ này tạo một bảng số lượng cho các loại "nhà hàng", "quán cà phê" và "quán bar" ở ba quận của Thành phố New York.

SELECT geo_id, input_geography, place_type, place_count
FROM `PROJECT_NAME.places_insights___us.PLACES_COUNT_PER_TYPE_V2`(
  (
    SELECT county_name AS geo_id,
           ST_SIMPLIFY(county_geom, 100) AS geo
    FROM
      `bigquery-public-data.geo_us_boundaries.counties`
    WHERE
      state_fips_code = "36"  -- New York State
      AND county_name IN ("Queens", "Kings", "New York")
  ),
  ['restaurant', 'cafe', 'bar'],  -- target_types
  JSON_OBJECT(
      'business_status', ['OPERATIONAL']
  )
);

Kết quả sẽ là một bảng có 9 hàng (3 quận * 3 loại). Mỗi hàng sẽ cho biết số lượng cơ sở "nhà hàng", "quán cà phê" hoặc "quán bar" trong mỗi hạt. Bạn cũng có thể thêm Mã địa điểm mẫu nếu thêm mã đó vào câu lệnh SELECT.

Kết quả cho hàm Số lượng địa điểm theo loại ở các hạt của New York.

Lợi ích của việc sử dụng PLACES_COUNT_PER_TYPE_V2

PLACES_COUNT_PER_TYPE_V2 mang lại một số lợi ích chính, đặc biệt là khi so sánh với hàm PLACES_COUNT_PER_TYPE cũ:

  • Xử lý hàng loạt khu vực địa lý: Không giống như PLACES_COUNT_PER_TYPE xử lý từng khu vực địa lý một, PLACES_COUNT_PER_TYPE_V2 chấp nhận một TABLE khu vực địa lý đầu vào. Điều này cho phép bạn phân tích và nhận số lượng theo loại cụ thể trên nhiều khu vực địa lý (điểm, đa giác) trong một truy vấn duy nhất, thay vì thực hiện nhiều lệnh gọi hàm.
  • Cải thiện hiệu suất và khả năng mở rộng: Bằng cách lấy dữ liệu đầu vào của bảng, PLACES_COUNT_PER_TYPE_V2 có thể tận dụng các phép nối không gian địa lý được tối ưu hoá của BigQuery và khả năng xử lý song song trên tất cả các khu vực địa lý được cung cấp cùng một lúc. Điều này giúp cải thiện đáng kể hiệu suất và khả năng mở rộng khi xử lý một số lượng lớn khu vực địa lý.
  • Bao gồm số lượng bằng 0: Trả về các hàng có số lượng bằng 0 cho những loại không tìm thấy trong một khu vực cụ thể trong lô, đảm bảo tập hợp kết quả đầy đủ cho tất cả các tổ hợp loại-vị trí địa lý.
  • Thông tin tổng quan trước đây: Truy vấn dữ liệu về số lượng địa điểm của một tháng cụ thể bằng bộ lọc snapshot_date không bắt buộc.

Ví dụ: Truy vấn số lượng địa điểm yêu thích trước đây theo loại bằng các bộ lọc cụ thể

Ví dụ này minh hoạ cách tìm số lượng cho các loại địa điểm cụ thể, chẳng hạn như trạm sạc xe điện, bằng cách sử dụng tham số snapshot_date để truy xuất số lượng của một tháng trước đây. Hàm này áp dụng các bộ lọc bổ sung cho regular_opening_hours để chỉ tra cứu những địa điểm mở cửa cả ngày vào các ngày cuối tuần và có trạm sạc xe điện (có ít nhất 10 giắc cắm) do min_ev_charge_connector_count chỉ định.

SELECT *
FROM `PROJECT_NAME.places_insights___us.PLACES_COUNT_PER_TYPE_V2`(
  (
    SELECT county_name AS geo_id,
           ST_SIMPLIFY(county_geom, 100) AS geo
    FROM
      `bigquery-public-data.geo_us_boundaries.counties`
    WHERE
      state_fips_code = "36"  -- New York State
      AND county_name IN ("Queens", "Kings", "New York")
  ),
  ['electric_vehicle_charging_station'], -- target_types array
  JSON_OBJECT(
    'geography_radius', 10000,
    'snapshot_date', '2026-01', -- Target snapshot month (YYYY-MM)
    'min_ev_charge_connector_count', 10, -- Look for a min amount of chargers
    'regular_opening_hours', JSON_OBJECT(
      'saturday', [JSON_OBJECT('start_time', '00:00', 'end_time', '23:59')], 'sunday', [JSON_OBJECT('start_time', '00:00', 'end_time', '23:59')]
    )
  )
);