Mengueri jumlah POI menurut jenis tempat

Fungsi PLACES_COUNT_PER_TYPE_V2 menampilkan tabel BigQuery yang berisi jumlah tempat dan contoh ID Tempat, yang dikelompokkan menurut jenis tempat, untuk beberapa geografi input. Fungsi ini dirancang untuk batch processing yang efisien dengan menerima parameter tabel input geografi. Anda memberikan geografi melalui tabel input dan menentukan jenis tempat sebagai array.

Sintaksis

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

Parameter

  • PROJECT_NAME: Nama project Google Cloud Anda.
  • LINKED_DATASET_NAME: Nama set data BigQuery yang berisi fungsi Places Insights (misalnya, places_insights___us).
  • input_geographies: Tabel BigQuery yang berisi geografi yang akan dianalisis. Tabel ini harus menyertakan kolom berikut:
    • geo_id (STRING): ID unik untuk setiap geografi.
    • geo (GEOGRAPHY): Objek GEOGRAPHY BigQuery yang mewakili area. Ini dapat berupa titik, poligon, atau jenis geografi lainnya.
  • target_types (ARRAY<STRING>): Array string jenis tempat yang ingin Anda dapatkan jumlahnya. Tempat akan dihitung jika cocok dengan salah satu jenis yang tercantum dalam array types, bukan hanya primary_type.
  • filters (JSON): Objek JSON yang berisi key-value pair untuk pemfilteran tambahan tempat. Lihat Parameter Filter.

Skema Tabel Output

Fungsi PLACES_COUNT_PER_TYPE_V2 menampilkan tabel dengan kolom berikut:

Nama Kolom Jenis Data Deskripsi
geo_id STRING ID unik untuk geografi input, dari tabel input_geographies.
input_geography GEOGRAPHY Objek GEOGRAPHY asli dari tabel input_geographies.
place_type STRING Jenis tempat dari array target_types yang diwakili baris ini.
place_count INTEGER Jumlah tempat yang cocok dengan place_type dan filter lainnya di dalam atau di dekat geografi.
sample_place_ids ARRAY<STRING> Array yang berisi hingga 250 ID Tempat yang cocok dengan kriteria untuk jenis dan geografi ini.

Output akan berisi baris untuk setiap kombinasi geo_id dan place_type yang ditentukan dalam array target_types, meskipun jumlahnya nol.

Cara kerjanya

Fungsi ini memproses setiap geografi yang disediakan dalam tabel input_geographies. Untuk setiap wilayah, API ini menghitung tempat yang cocok dengan salah satu jenis yang tercantum dalam array target_types dan juga memenuhi semua kondisi dalam objek JSON filters. Hasilnya digabungkan dan diperinci berdasarkan setiap geo_id dan setiap jenis di target_types.

Contoh: Menghitung berbagai jenis tempat makan di County NYC

Contoh ini menghasilkan tabel jumlah untuk jenis "restaurant", "cafe", dan "bar" di tiga county di New York City.

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']
  )
);

Hasilnya adalah tabel dengan 9 baris (3 county * 3 jenis). Setiap baris akan menampilkan jumlah tempat usaha "restoran", "kafe", atau "bar" di setiap county. Anda juga dapat menyertakan contoh ID Tempat jika Anda menambahkannya ke pernyataan SELECT.

Hasil untuk fungsi Places Count Per Type di county New York.

Manfaat Menggunakan PLACES_COUNT_PER_TYPE_V2

PLACES_COUNT_PER_TYPE_V2 menawarkan beberapa keuntungan utama, terutama jika dibandingkan dengan fungsi PLACES_COUNT_PER_TYPE yang lebih lama:

  • Pemrosesan Batch Geografi: Tidak seperti PLACES_COUNT_PER_TYPE yang memproses satu geografi dalam satu waktu, PLACES_COUNT_PER_TYPE_V2 menerima TABLE geografi input. Dengan begitu, Anda dapat menganalisis dan mendapatkan jumlah spesifik per jenis di berbagai geografi (titik, poligon) dalam satu kueri, tanpa perlu melakukan beberapa panggilan fungsi.
  • Peningkatan Performa dan Skalabilitas: Dengan mengambil input tabel, PLACES_COUNT_PER_TYPE_V2 dapat memanfaatkan gabungan geospasial BigQuery yang dioptimalkan dan kemampuan pemrosesan paralel di semua geografi yang disediakan secara bersamaan. Hal ini menghasilkan peningkatan performa yang signifikan dan skalabilitas yang lebih baik saat menangani sejumlah besar geografi.
  • Zero Counts Included: Menampilkan baris dengan jumlah 0 untuk jenis yang tidak ditemukan di area tertentu dalam batch, sehingga memastikan set hasil yang lengkap untuk semua kombinasi jenis-geografi.
  • Snapshot historis: Buat kueri data jumlah tempat dari bulan tertentu menggunakan filter snapshot_date opsional.

Contoh: Membuat kueri jumlah POI historis berdasarkan jenis dengan filter tertentu

Contoh ini menunjukkan cara menemukan jumlah untuk jenis tempat tertentu, seperti Stasiun Pengisian Kendaraan Listrik Umum, menggunakan parameter snapshot_date untuk mengambil jumlah untuk bulan lalu. Filter ini menerapkan filter tambahan untuk regular_opening_hours guna mencari hanya tempat yang buka sepanjang hari pada akhir pekan, dan ketersediaan pengisian daya EV (setidaknya tersedia 10 konektor) yang ditentukan oleh min_ev_charge_connector_count.

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')]
    )
  )
);