Yer türüne göre ÖY sayısı sorgulama

PLACES_COUNT_PER_TYPE_V2 işlevi, birden fazla giriş coğrafyası için yer türüne göre ayrılmış yer sayılarını ve örnek yer kimliklerini içeren bir BigQuery tablosu döndürür. Bu işlev, coğrafi bölgelerin giriş tablosu parametresini kabul ederek verimli toplu işleme için tasarlanmıştır. Coğrafi konumları bir giriş tablosu aracılığıyla sağlar ve yer türlerini dizi olarak belirtirsiniz.

Söz dizimi

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

Parametreler

  • PROJECT_NAME: Google Cloud projenizin adı.
  • LINKED_DATASET_NAME: Places Insights işlevlerini içeren BigQuery veri kümesinin adı (ör. places_insights___us).
  • input_geographies: Analiz edilecek coğrafi bölgeleri içeren bir BigQuery tablosu. Bu tablo aşağıdaki sütunları içermelidir:
    • geo_id (STRING): Her coğrafi bölge için benzersiz bir tanımlayıcı.
    • geo (GEOGRAPHY): Alanı temsil eden BigQuery GEOGRAPHY nesnesi. Bu bir nokta, poligon veya başka bir coğrafya türü olabilir.
  • target_types (ARRAY<STRING>): Sayısını almak istediğiniz yer türü dizelerinin dizisi. Yerler, yalnızca primary_type değil, types dizisinde listelenen türlerden herhangi biriyle eşleşirse sayılır.
  • filters (JSON): Yerlerin ek olarak filtrelenmesi için anahtar/değer çiftleri içeren bir JSON nesnesi. Filtre parametreleri bölümüne bakın.

Çıkış tablosu şeması

PLACES_COUNT_PER_TYPE_V2 işlevi, aşağıdaki sütunları içeren bir tablo döndürür:

Sütun Adı Veri Türü Açıklama
geo_id STRING input_geographies tablosundan giriş coğrafyasının benzersiz tanımlayıcısı.
input_geography GEOGRAPHY input_geographies tablosundaki orijinal GEOGRAPHY nesnesi.
place_type STRING Bu satırın temsil ettiği target_types dizisindeki yer türü.
place_count INTEGER Coğrafi bölge içinde veya yakınında place_type ve diğer filtrelerle eşleşen yerlerin sayısı.
sample_place_ids ARRAY<STRING> Bu tür ve coğrafya ölçütleriyle eşleşen en fazla 250 yer kimliğinden oluşan bir dizi.

Çıkış, target_types dizisinde belirtilen her geo_id ve place_type kombinasyonu için bir satır içerir (sayı sıfır olsa bile).

İşleyiş şekli

İşlev, input_geographies tablosunda sağlanan her coğrafi konumu işler. Her coğrafya için, target_types dizisinde listelenen türlerden herhangi biriyle eşleşen ve filters JSON nesnesindeki tüm koşulları karşılayan yerleri sayar. Sonuçlar, her bir geo_id ve target_types içindeki her bir türe göre toplanır ve dökümü yapılır.

Örnek: NYC ilçelerindeki farklı restoran türlerini sayma

Bu örnekte, New York'un üç ilçesindeki "restoran", "kafe" ve "bar" türlerinin sayısını içeren bir tablo oluşturulur.

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

Sonuç, 9 satırlı bir tablo olur (3 ilçe * 3 tür). Her satırda, her ilçedeki "restoran", "kafe" veya "bar" işletmelerinin sayısı gösterilir. SELECT ifadenize eklerseniz örnek yer kimliklerini de dahil edebilirsiniz.

New York ilçelerinde türe göre yer sayısı işlevinin sonuçları.

PLACES_COUNT_PER_TYPE_V2'yi kullanmanın avantajları

PLACES_COUNT_PER_TYPE_V2, özellikle eski PLACES_COUNT_PER_TYPE işlevine kıyasla çeşitli önemli avantajlar sunar:

  • Coğrafi Konumların Toplu İşlenmesi: Tek seferde bir coğrafi konumu işleyen PLACES_COUNT_PER_TYPE işlevinin aksine, PLACES_COUNT_PER_TYPE_V2 işlevi giriş coğrafi konumlarının TABLE değerini kabul eder. Bu sayede, birden fazla işlev çağrısı yapmak yerine tek bir sorguda çok sayıda coğrafyadaki (noktalar, çokgenler) türe özgü sayıları analiz edebilir ve alabilirsiniz.
  • Gelişmiş performans ve ölçeklenebilirlik: PLACES_COUNT_PER_TYPE_V2, tablo girişi alarak BigQuery'nin optimize edilmiş coğrafi birleştirmelerinden ve sağlanan tüm coğrafyalarda eş zamanlı olarak paralel işleme özelliklerinden yararlanabilir. Bu sayede, çok sayıda coğrafi bölgeyle çalışırken önemli performans iyileştirmeleri ve daha iyi ölçeklenebilirlik elde edilir.
  • Sıfır Sayılar Dahil: Toplu işlemdeki belirli bir alanda bulunmayan türler için 0 sayısına sahip satırlar döndürür. Böylece tüm tür-coğrafya kombinasyonları için eksiksiz bir sonuç kümesi elde edilir.
  • Geçmiş anlık görüntüler: İsteğe bağlı snapshot_date filtresini kullanarak belirli bir aya ait yer sayısı verilerini sorgulayın.

Örnek: Belirli filtrelerle türe göre geçmiş ÖY sayılarını sorgulama

Bu örnekte, geçmiş bir aya ait sayıları almak için snapshot_date parametresini kullanarak elektrikli araç şarj istasyonları gibi belirli yer türlerinin sayısını nasıl bulacağınız gösterilmektedir. regular_opening_hours için ek filtreler uygulayarak yalnızca hafta sonları tüm gün açık olan yerleri ve min_ev_charge_connector_count tarafından belirtilen EV şarj cihazlarının müsaitlik durumunu (en az 10 konnektör mevcut) arar.

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