ในเอกสารนี้ คุณจะได้เรียนรู้วิธีใช้ข้อมูลรหัสสถานที่ตัวอย่างจาก ข้อมูลเชิงลึกของ Places โดยใช้ฟังก์ชันการนับสถานที่ ควบคู่กับการค้นหารายละเอียด สถานที่เป้าหมายเพื่อสร้าง ความมั่นใจในผลลัพธ์
รูปแบบสถาปัตยกรรม
รูปแบบสถาปัตยกรรมนี้ช่วยให้คุณมีเวิร์กโฟลว์ที่ทำซ้ำได้เพื่อเชื่อมช่องว่าง ระหว่างการวิเคราะห์ทางสถิติระดับสูงกับการยืนยันความจริงภาคพื้น การผสานความสามารถในการปรับขนาดของ BigQuery เข้ากับความแม่นยำของ Places API จะช่วยให้คุณตรวจสอบผลการวิเคราะห์ได้อย่างมั่นใจ ซึ่งมีประโยชน์อย่างยิ่งสำหรับ การเลือกสถานที่ การวิเคราะห์คู่แข่ง และการวิจัยตลาดที่ความน่าเชื่อถือของข้อมูล มีความสำคัญอย่างยิ่ง
หัวใจสำคัญของรูปแบบนี้เกี่ยวข้องกับขั้นตอนหลัก 4 ขั้นตอน ได้แก่
- ทำการวิเคราะห์ในวงกว้าง: ใช้ฟังก์ชันการนับสถานที่ จากข้อมูลเชิงลึกเกี่ยวกับสถานที่ใน BigQuery เพื่อ วิเคราะห์ข้อมูลสถานที่ในพื้นที่ทางภูมิศาสตร์ขนาดใหญ่ เช่น ทั้งเมืองหรือทั้งภูมิภาค
- แยกและดึงตัวอย่าง: ระบุพื้นที่ที่สนใจ (เช่น
"ฮอตสปอต" ที่มีความหนาแน่นสูง) จากผลลัพธ์ที่รวบรวมไว้ และดึง
sample_place_ids
ที่ฟังก์ชันระบุ - ดึงรายละเอียดความจริงที่ตรวจสอบแล้ว: ใช้ Place IDs ที่ดึงออกมาเพื่อทำการเรียกที่กำหนดเป้าหมาย ไปยัง Place Details API เพื่อดึงรายละเอียดที่สมบูรณ์ ในโลกจริงสำหรับแต่ละสถานที่
- สร้างภาพข้อมูลรวม: วางเลเยอร์ข้อมูลสถานที่โดยละเอียดไว้ด้านบน แผนที่สถิติระดับสูงเริ่มต้นเพื่อตรวจสอบด้วยภาพว่าจำนวนที่รวบรวม แสดงถึงความเป็นจริงในพื้นที่
เวิร์กโฟลว์ของโซลูชัน
เวิร์กโฟลว์นี้ช่วยให้คุณเชื่อมโยงช่องว่างระหว่างแนวโน้มระดับมหภาคกับข้อเท็จจริงระดับจุลภาคได้ คุณเริ่มต้นด้วยมุมมองทางสถิติในวงกว้างและเจาะลึกอย่างมีกลยุทธ์ เพื่อยืนยันข้อมูลด้วยตัวอย่างที่เฉพาะเจาะจงและเกิดขึ้นจริง
วิเคราะห์ความหนาแน่นของสถานที่ในวงกว้างด้วยข้อมูลเชิงลึกเกี่ยวกับสถานที่
ขั้นตอนแรกคือการทำความเข้าใจภาพรวมในระดับสูง คุณสามารถเรียกใช้การค้นหาเพียงครั้งเดียวเพื่อรับข้อมูลสรุปทางสถิติแทนที่จะดึงข้อมูลจุดที่น่าสนใจ (POI) หลายพันรายการ
ฟังก์ชันข้อมูลเชิงลึกเกี่ยวกับสถานที่ PLACES_COUNT_PER_H3
เหมาะสำหรับกรณีนี้ โดยจะรวบรวมจำนวนจุดที่น่าสนใจไว้ในระบบตารางกริดหกเหลี่ยม
(H3) ซึ่งช่วยให้คุณระบุพื้นที่ที่มีความหนาแน่นสูงหรือต่ำได้อย่างรวดเร็วตามเกณฑ์ที่เฉพาะเจาะจง (เช่น ร้านอาหารที่มีคะแนนสูงและเปิดให้บริการ)
ตัวอย่างคำค้นหามีดังนี้ โปรดทราบว่าคุณจะต้องระบุ พื้นที่ค้นหาทางภูมิศาสตร์ ชุดข้อมูลแบบเปิด เช่น ข้อมูล Overture Maps ชุดข้อมูลสาธารณะ BigQuery สามารถใช้เพื่อดึงข้อมูลขอบเขตทางภูมิศาสตร์ได้
สำหรับขอบเขตชุดข้อมูลแบบเปิดที่ใช้บ่อย เราขอแนะนำให้สร้างเป็นตารางในโปรเจ็กต์ของคุณเอง ซึ่งจะช่วยลดค่าใช้จ่ายของ BigQuery และปรับปรุงประสิทธิภาพการค้นหาได้อย่างมาก
-- This query counts all highly-rated, operational restaurants
-- across a large geography, grouping them into H3 cells.
SELECT *
FROM
`places_insights___gb.PLACES_COUNT_PER_H3`(
JSON_OBJECT(
'geography', your_defined_geography,
'h3_resolution', 8,
'types', ['restaurant'],
'business_status', ['OPERATIONAL'],
'min_rating', 3.5
)
);
เอาต์พุตของคําค้นหานี้จะแสดงตารางของเซลล์ H3 และจํานวนสถานที่ ภายในแต่ละเซลล์ ซึ่งเป็นพื้นฐานสําหรับฮีตแมปความหนาแน่น
แยกฮอตสปอตและดึงรหัสสถานที่ตัวอย่าง
ผลลัพธ์จากฟังก์ชัน PLACES_COUNT_PER_H3
จะแสดงผลอาร์เรย์ของ sample_place_ids
ด้วย โดยมีรหัสสถานที่สูงสุด 250 รายการต่อองค์ประกอบของการตอบกลับ รหัสเหล่านี้
คือลิงก์จากสถิติรวมไปยังสถานที่แต่ละแห่งที่
มีส่วนทำให้เกิดสถิติดังกล่าว
ระบบอาจระบุเซลล์ที่เกี่ยวข้องมากที่สุดจากคำค้นหาเริ่มต้นก่อน
เช่น คุณอาจเลือกเซลล์ 20 อันดับแรกที่มีจำนวนสูงสุด จากนั้น
จากฮอตสปอตเหล่านี้ ให้คุณรวม sample_place_ids
ไว้ในรายการเดียว
รายการนี้แสดงตัวอย่างจุดที่น่าสนใจที่สุดที่คัดสรรมาแล้วจากพื้นที่ที่เกี่ยวข้องมากที่สุด เพื่อเตรียมพร้อมสำหรับการยืนยันที่กำหนดเป้าหมาย
หากคุณประมวลผลผลลัพธ์ BigQuery ใน Python โดยใช้ DataFrame ของ pandas ตรรกะในการแยกรหัสเหล่านี้จะตรงไปตรงมา
# Assume 'results_df' is a pandas DataFrame from your BigQuery query.
# 1. Identify the 20 busiest H3 cells by sorting and taking the top results.
top_hotspots_df = results_df.sort_values(by='count', ascending=False).head(20)
# 2. Extract and flatten the lists of sample_place_ids from these hotspots.
# The .explode() function creates a new row for each ID in the lists.
all_sample_ids = top_hotspots_df['sample_place_ids'].explode()
# 3. Create a final list of unique Place IDs to verify.
place_ids_to_verify = all_sample_ids.unique().tolist()
print(f"Consolidated {len(place_ids_to_verify)} unique Place IDs for spot-checking.")
คุณสามารถใช้ตรรกะที่คล้ายกันได้หากใช้ภาษาโปรแกรมอื่นๆ
เรียกดูรายละเอียดความจริงพื้นฐานด้วย Places API
เมื่อมีรายการรหัสสถานที่ที่รวมแล้ว คุณจะเปลี่ยนจากข้อมูลวิเคราะห์ขนาดใหญ่ เป็นการดึงข้อมูลที่เฉพาะเจาะจงได้ คุณจะใช้รหัสเหล่านี้เพื่อค้นหา Place Details API เพื่อดูข้อมูลโดยละเอียดเกี่ยวกับสถานที่ตัวอย่างแต่ละแห่ง
ขั้นตอนนี้เป็นขั้นตอนการตรวจสอบที่สำคัญ แม้ว่าข้อมูลเชิงลึกเกี่ยวกับสถานที่จะบอกจำนวนร้านอาหารในพื้นที่หนึ่งๆ แต่ Places API จะบอกชื่อร้านอาหารเหล่านั้น พร้อมทั้งระบุชื่อ ที่อยู่ที่แน่นอน ละติจูด/ลองจิจูด คะแนนของผู้ใช้ และแม้แต่ลิงก์โดยตรงไปยังตำแหน่งของร้านอาหารบน Google Maps ซึ่งจะช่วยเพิ่มข้อมูลตัวอย่าง และเปลี่ยนรหัสที่เป็นนามธรรมให้เป็นสถานที่ที่จับต้องได้และตรวจสอบได้
ดูรายการข้อมูลทั้งหมดที่ใช้ได้จาก Place Details API และค่าใช้จ่าย
ที่เกี่ยวข้องกับการดึงข้อมูลได้ในเอกสารประกอบเกี่ยวกับ API FieldMask
จะตั้งค่าในคำขอเพื่อควบคุมข้อมูลที่ API ส่งคืน
คำขอไปยัง Places API สำหรับรหัสที่เฉพาะเจาะจงโดยใช้ไลบรารีของไคลเอ็นต์ Python จะมีลักษณะดังนี้
# A request to fetch details for a single Place ID.
request = {"name": f"places/{place_id}"}
# Define the fields you want returned in the response as a comma-separated string.
fields_to_request = "displayName,formattedAddress,location,googleMapsUri"
# The response contains ground truth data.
response = places_client.get_place(
request=request,
metadata=[("x-goog-fieldmask", fields_to_request)]
)
ดูรายละเอียดเพิ่มเติมได้ที่ไลบรารีของไคลเอ็นต์ Places API (ใหม่) ตัวอย่าง
สร้างภาพแบบรวมเพื่อการตรวจสอบ
ขั้นตอนสุดท้ายคือการนำชุดข้อมูลทั้ง 2 ชุดมารวมกันในมุมมองเดียว ซึ่งเป็นวิธีที่รวดเร็วและใช้งานง่ายในการตรวจสอบการวิเคราะห์เบื้องต้น ภาพควรมี 2 เลเยอร์ดังนี้
- เลเยอร์ฐาน: แผนที่ Choropleth หรือฮีตแมปที่สร้างจากผลลัพธ์เริ่มต้น
PLACES_COUNT_PER_H3
ซึ่งแสดงความหนาแน่นโดยรวมของสถานที่ต่างๆ ใน พื้นที่ทางภูมิศาสตร์ของคุณ - เลเยอร์บนสุด: ชุดเครื่องหมายแต่ละรายการสำหรับจุดที่น่าสนใจตัวอย่างแต่ละรายการ ซึ่งพล็อต โดยใช้พิกัดที่แน่นอนซึ่งดึงมาจาก Places API ในขั้นตอนก่อนหน้า
ตรรกะในการสร้างมุมมองแบบรวมนี้แสดงอยู่ในตัวอย่างรหัสเทียมต่อไปนี้
# Assume 'h3_density_data' is your aggregated data from Step 1.
# Assume 'detailed_places_data' is your list of place objects from Step 3.
# Create the base choropleth map from the H3 density data.
# The 'count' column determines the color of each hexagon.
combined_map = create_choropleth_map(
data=h3_density_data,
color_by_column='count'
)
# Iterate through the detailed place data to add individual markers.
for place in detailed_places_data:
# Construct the popup information with key details and a link.
popup_html = f"""
<b>{place.name}</b><br>
Address: {place.address}<br>
<a href="{place.google_maps_uri}" target="_blank">View on Maps</a>
"""
# Add a marker for the current place to the base map.
combined_map.add_marker(
location=[place.latitude, place.longitude],
popup=popup_html,
tooltip=place.name
)
# Display the final map with both layers.
display(combined_map)
การวางเครื่องหมายความจริงภาคพื้นดินที่เฉพาะเจาะจงบนแผนที่ความหนาแน่นระดับสูง จะช่วยให้คุณยืนยันได้ทันทีว่าพื้นที่ที่ระบุว่าเป็นฮอตสปอตนั้นมี สถานที่ที่คุณกำลังวิเคราะห์อยู่เป็นจำนวนมาก การยืนยันด้วยภาพนี้ จะสร้างความน่าเชื่อถืออย่างมากให้กับข้อสรุปที่อิงตามข้อมูล
บทสรุป
รูปแบบสถาปัตยกรรมนี้เป็นวิธีที่มีประสิทธิภาพและมีประสิทธิภาพในการตรวจสอบ ข้อมูลเชิงลึกเชิงพื้นที่ขนาดใหญ่ การใช้ประโยชน์จากข้อมูลเชิงลึกเกี่ยวกับสถานที่สำหรับการวิเคราะห์ในวงกว้างที่ปรับขนาดได้ และ Place Details API สำหรับการตรวจสอบความจริงที่เจาะจง คุณจะสร้างวงจรความคิดเห็นที่มีประสิทธิภาพได้ ซึ่งจะช่วยให้การตัดสินใจเชิงกลยุทธ์ ไม่ว่าจะเป็นการเลือกสถานที่ตั้งร้านค้าปลีกหรือการวางแผนด้านลอจิสติกส์ อิงตามข้อมูลที่ไม่เพียงแต่มีนัยสำคัญทางสถิติเท่านั้น แต่ยังมีความถูกต้องที่ตรวจสอบได้อีกด้วย
ขั้นตอนถัดไป
- สํารวจฟังก์ชันการนับสถานที่อื่นๆ เพื่อดูว่าฟังก์ชันเหล่านั้นตอบคําถามเชิงวิเคราะห์ที่แตกต่างกันได้อย่างไร
- อ่านเอกสารประกอบเกี่ยวกับ Places API เพื่อดูช่องอื่นๆ ที่คุณขอได้เพื่อเพิ่มข้อมูลในการวิเคราะห์
ผู้ร่วมให้ข้อมูล
Henrik Valve | DevX Engineer