นับ POI ของคำค้นหาตามประเภทสถานที่

ฟังก์ชัน PLACES_COUNT_PER_TYPE_V2 จะแสดงผลตาราง BigQuery ที่มีจำนวนสถานที่และรหัสสถานที่ตัวอย่าง โดยแยกตามประเภทสถานที่สำหรับภูมิศาสตร์ที่ป้อนหลายรายการ ฟังก์ชันนี้ออกแบบมาเพื่อการประมวลผลแบบกลุ่มที่มีประสิทธิภาพโดยยอมรับพารามิเตอร์ตารางอินพุตของภูมิศาสตร์ คุณระบุภูมิศาสตร์ผ่านตารางอินพุตและระบุประเภทสถานที่ในรูปแบบอาร์เรย์

ไวยากรณ์

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

พารามิเตอร์

  • PROJECT_NAME: ชื่อโปรเจ็กต์ Google Cloud
  • LINKED_DATASET_NAME: ชื่อชุดข้อมูล BigQuery ที่มีฟังก์ชันข้อมูลเชิงลึกเกี่ยวกับสถานที่ (เช่น places_insights___us)
  • input_geographies: ตาราง BigQuery ที่มีภูมิศาสตร์ที่จะวิเคราะห์ ตารางนี้ต้องมีคอลัมน์ต่อไปนี้
    • geo_id (STRING): ตัวระบุที่ไม่ซ้ำกันสำหรับแต่ละภูมิศาสตร์
    • geo (GEOGRAPHY): ออบเจ็กต์ GEOGRAPHY ของ BigQuery ที่แสดงพื้นที่ ซึ่งอาจเป็นจุด รูปหลายเหลี่ยม หรือประเภทภูมิศาสตร์อื่นๆ
  • target_types (ARRAY<STRING>): อาร์เรย์ของสตริงประเภทสถานที่ที่คุณต้องการนับจำนวน ระบบจะนับสถานที่หากตรงกับประเภทใดก็ได้ที่แสดงในอาร์เรย์ types ไม่ใช่แค่ primary_type
  • filters (JSON): ออบเจ็กต์ JSON ที่มีคู่คีย์-ค่าสำหรับการกรองสถานที่เพิ่มเติม ดูพารามิเตอร์ตัวกรอง

สคีมาของตารางเอาต์พุต

ฟังก์ชัน PLACES_COUNT_PER_TYPE_V2 จะแสดงผลตารางที่มีคอลัมน์ต่อไปนี้

ชื่อคอลัมน์ ประเภทข้อมูล คำอธิบาย
geo_id STRING ตัวระบุที่ไม่ซ้ำกันสำหรับภูมิศาสตร์อินพุตจากตาราง input_geographies
input_geography GEOGRAPHY ออบเจ็กต์ GEOGRAPHY เดิมจากตาราง input_geographies
place_type STRING ประเภทสถานที่จากอาร์เรย์ target_types ที่แถวนี้แสดง
place_count INTEGER จำนวนสถานที่ที่ตรงกับ place_type และตัวกรองอื่นๆ ภายในหรือใกล้กับภูมิศาสตร์
sample_place_ids ARRAY<STRING> อาร์เรย์ของรหัสสถานที่สูงสุด 250 รายการที่ตรงกับเกณฑ์สำหรับประเภทและภูมิศาสตร์นี้

เอาต์พุตจะมีแถวสำหรับชุดค่าผสมของ geo_id และ place_type แต่ละชุดที่ระบุไว้ในอาร์เรย์ target_types แม้ว่าจำนวนจะเป็น 0 ก็ตาม

วิธีการทำงาน

ฟังก์ชันจะประมวลผลแต่ละภูมิศาสตร์ที่ระบุไว้ในตาราง input_geographies สำหรับแต่ละภูมิศาสตร์ ระบบจะนับสถานที่ที่ตรงกับประเภทใดก็ได้ที่แสดงในอาร์เรย์ target_types และเป็นไปตามเงื่อนไขทั้งหมดในออบเจ็กต์ JSON filters ด้วย ผลลัพธ์จะรวบรวมและแจกแจงตาม geo_id แต่ละรายการและแต่ละประเภทใน target_types

ตัวอย่าง: นับจำนวนร้านอาหารประเภทต่างๆ ในเขตต่างๆ ของนิวยอร์กซิตี้

ตัวอย่างนี้จะสร้างตารางจำนวนสำหรับประเภท "ร้านอาหาร" "คาเฟ่" และ "บาร์" ใน 3 เขตของนิวยอร์กซิตี้

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

ผลลัพธ์จะเป็นตารางที่มี 9 แถว (3 เขต * 3 ประเภท) แต่ละแถวจะแสดงจำนวนสถานประกอบการ "ร้านอาหาร" "คาเฟ่" หรือ "บาร์" ภายในแต่ละเขต นอกจากนี้ คุณยังใส่รหัสสถานที่ตัวอย่างได้หากเพิ่มรหัสดังกล่าวลงในคำสั่ง SELECT

ผลลัพธ์สำหรับฟังก์ชัน Places Count Per Type ในเขตต่างๆ ของนิวยอร์ก

ประโยชน์ของการใช้ PLACES_COUNT_PER_TYPE_V2

PLACES_COUNT_PER_TYPE_V2 มีข้อดีหลักๆ หลายประการ โดยเฉพาะเมื่อเทียบกับฟังก์ชัน PLACES_COUNT_PER_TYPE ที่เก่ากว่า ดังนี้

  • การประมวลผลภูมิศาสตร์แบบกลุ่ม: PLACES_COUNT_PER_TYPE_V2 ต่างจาก PLACES_COUNT_PER_TYPE ที่ประมวลผลภูมิศาสตร์ทีละรายการ โดยจะยอมรับ TABLE ของภูมิศาสตร์ที่ป้อนเข้ามา ซึ่งจะช่วยให้คุณวิเคราะห์และรับจำนวนที่เจาะจงประเภทในพื้นที่ทางภูมิศาสตร์ต่างๆ (จุด รูปหลายเหลี่ยม) ได้ในการค้นหาเดียว แทนที่จะเรียกใช้ฟังก์ชันหลายครั้ง
  • ประสิทธิภาพและความสามารถในการปรับขนาดที่เพิ่มขึ้น: การรับอินพุตตารางช่วยให้ PLACES_COUNT_PER_TYPE_V2 สามารถใช้ประโยชน์จากการรวมเชิงภูมิสารสนเทศที่เพิ่มประสิทธิภาพของ BigQuery และความสามารถในการประมวลผลแบบขนานในทุกภูมิศาสตร์ที่ระบุพร้อมกัน ซึ่งจะช่วยปรับปรุงประสิทธิภาพได้อย่างมากและมีความสามารถในการปรับขนาดได้ดีขึ้นเมื่อต้องจัดการกับพื้นที่ทางภูมิศาสตร์จำนวนมาก
  • รวมจำนวนที่เป็นศูนย์: แสดงผลแถวที่มีจำนวนเป็น 0 สำหรับประเภทที่ไม่พบในพื้นที่ที่เฉพาะเจาะจงภายในกลุ่ม เพื่อให้มั่นใจว่าชุดผลลัพธ์จะสมบูรณ์สำหรับการรวมประเภทและภูมิศาสตร์ทั้งหมด
  • ภาพรวมย้อนหลัง: ค้นหาข้อมูลจำนวนสถานที่จากเดือนที่เฉพาะเจาะจงโดยใช้ตัวกรอง snapshot_date ที่ไม่บังคับ

ตัวอย่าง: ค้นหาจำนวน POI ที่ผ่านมาตามประเภทด้วยตัวกรองที่เฉพาะเจาะจง

ตัวอย่างนี้แสดงวิธีค้นหาจำนวนสำหรับสถานที่บางประเภท เช่น สถานีชาร์จ EV โดยใช้พารามิเตอร์ snapshot_date เพื่อดึงข้อมูลจำนวนสำหรับเดือนที่ผ่านมา โดยจะใช้ตัวกรองเพิ่มเติมสำหรับ regular_opening_hours เพื่อค้นหาสถานที่ที่เปิดตลอดทั้งวันในวันหยุดสุดสัปดาห์เท่านั้น และความพร้อมให้บริการที่ชาร์จ EV (มีหัวชาร์จอย่างน้อย 10 หัว) ที่ระบุโดย 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')]
    )
  )
);