با Places Insights شروع کنید

توابع شمارش مکان‌ها، کوئری‌های SQL از پیش تعریف‌شده‌ای هستند که در BigQuery اجرا می‌شوند و روش پیشنهادی برای کوئری زدن به مجموعه داده‌های Places Insights برای بازیابی تعداد دقیق و شناسه‌های مکان هستند. در حالی که می‌توانید مستقیماً از مجموعه داده‌ها کوئری بگیرید ، دو روش کوئری، آستانه‌های حریم خصوصی و مناطق جستجو را مدیریت می‌کنند:

  • توابع شمارش مکان‌ها می‌توانند هر تعداد مکانی، از جمله عدد ۰، را برگردانند، اما حداقل مساحت جستجو را ۴۰.۰ متر در ۴۰.۰ متر (۱۶۰۰ متر مربع ) (۴۰.۰ متر در ۴۰.۰ متر / ۱۶۰۰ متر مربع) تعیین می‌کنند. توابع همچنین شناسه مکان‌ها (Place IDs ) را برمی‌گردانند که می‌توان از آنها برای جستجوی اطلاعات مربوط به مکان‌های منفرد استفاده کرد.

  • پرس‌وجوهای مجموعه داده‌های مکانی فقط می‌توانند تعداد ۵ و بالاتر را برگردانند (تعداد کم ۰ تا ۴ را برای حفظ حریم خصوصی تفاضلی حذف می‌کنند)، اما هیچ محدودیتی در اندازه ناحیه جستجو اعمال نمی‌کنند.

مگر اینکه نیاز به انجام تحلیل‌های مکانی پیچیده داشته باشید، توصیه می‌کنیم با توابع شمارش مکان‌ها مانند PLACES_COUNT_PER_H3 شروع کنید. این توابع بینش‌های فوری از تراکم مکانی را در سلول‌های شبکه استاندارد ارائه می‌دهند، شناسه‌های مکان را برای بررسی واقعیت زمینی برمی‌گردانند و برای مهندسی ویژگی‌های مکانی و مدل‌های یادگیری ماشینی ساخته شده‌اند.

تابع شمارش مکان بهینه را انتخاب کنید

Places Insights از چندین تابع مکانی پشتیبانی می‌کند. برای اجرای بهینه پرس‌وجو، پردازش موازی و مقیاس‌پذیری دسته‌ای، توصیه می‌کنیم از توابع زیر استفاده کنید:

  • PLACES_COUNT_PER_H3 : یک جدول BigQuery از تعداد مکان‌ها در هر سلول H3 را برمی‌گرداند. این تابع برای تجزیه و تحلیل چگالی منطقه‌ای و نقشه حرارتی choropleth توصیه می‌شود.
  • تابع PLACES_COUNT_V2 : جدولی شامل تعداد مکان‌ها و شناسه‌های مکان نمونه را برمی‌گرداند. این تابع یک پارامتر جدول شامل جغرافیای ورودی شما را می‌پذیرد. با ارسال مستقیم کل جدول، موتور اجرای BigQuery می‌تواند حجم کار را توزیع کرده و تقاطع‌های مکانی را به صورت موازی پردازش کند و پردازش دسته‌ای بسیار کارآمد را برای تجزیه و تحلیل در مقیاس بزرگ امکان‌پذیر سازد.
  • PLACES_COUNT_PER_TYPE_V2 : جدولی از تعداد مکان‌ها و شناسه‌های مکان نمونه را که بر اساس نوع مکان دسته‌بندی شده‌اند، برمی‌گرداند. مشابه PLACES_COUNT_V2 ، ارسال جغرافیای ورودی شما به عنوان پارامتر جدول به BigQuery اجازه می‌دهد تا تقاطع‌های مکانی را در مجموعه داده‌های بزرگ به صورت بومی موازی‌سازی کند.

این توابع علاوه بر شمارش مکان، تا ۲۵۰ شناسه مکان را نیز برای هر عنصر از پاسخ برمی‌گردانند.

شناسه‌های مکان را می‌توان با موارد زیر استفاده کرد:

اجرای کوئری‌ها با توابع Places Count

برای فراخوانی توابع از فرمت زیر استفاده کنید: [project name (optional)].[table name].[function name] .

اگر هنگام تنظیم Places Insights نام مجموعه داده پیوند شده را تغییر داده‌اید، می‌توانید به جای نام‌های پیش‌فرض جدول، از نام دلخواه خود استفاده کنید. همچنین می‌توانید به صورت اختیاری نام پروژه خود را نیز وارد کنید. اگر نامی وارد نشود، کوئری به طور پیش‌فرض روی پروژه فعال قرار می‌گیرد.

برای مثال:

PROJECT_NAME.places_insights___us.PLACES_COUNT_V2

برای ارسال آرگومان‌ها به تابع، از JSON_OBJECT استفاده کنید.

فیلتر کردن نتایج پرس و جو با استفاده از پارامترهای حساس به حروف بزرگ و کوچک

توابع شمارش مکان (Places Count) از فیلترهای زیادی برای اصلاح جستجوی شما پشتیبانی می‌کنند. این پارامترها (برای مثال، price_level یا types ) به حروف کوچک و بزرگ حساس هستند و باید دقیقاً با نام پارامترها مطابقت داشته باشند. برای لیست کامل گزینه‌ها، به مرجع پارامترهای فیلتر مراجعه کنید.

در مثال بعدی، با استفاده از تابع PLACES_COUNT_V2 ، فیلترهایی را برای محدود کردن جستجو بر اساس حداقل امتیاز کاربر، سطح قیمت، وضعیت کسب‌وکار و اینکه آیا رستوران اجازه ورود سگ را می‌دهد یا خیر، اعمال می‌کنید.

ابتدا، از جدول جغرافیایی ورودی خود استفاده کنید یا جدولی با جغرافیای انتخاب شده تهیه کنید:

-- Create a table for the input geographies
CREATE TABLE `PROJECT_NAME.YOUR_DATASET.my_search_areas` AS (
  SELECT
    '1' AS geo_id, -- Unique identifier
    ST_GEOGPOINT(-73.9857, 40.7484) AS geo -- Empire State Building
  UNION ALL
  SELECT
    '2' AS geo_id, -- Unique identifier
    ST_GEOGPOINT(-73.9851, 40.7580) AS geo -- Times Square
);

در مرحله بعد، تابع PLACES_COUNT_V2 با جدول و شیء JSON حاوی فیلترها فراخوانی کنید. شعاع جستجو در فیلترهای JSON گنجانده شده است و در اطراف هر نقطه در جدول my_search_areas اعمال خواهد شد.

SELECT * FROM `PROJECT_NAME.places_insights___us.PLACES_COUNT_V2`(
  TABLE `PROJECT_NAME.YOUR_DATASET.my_search_areas`,
  JSON_OBJECT(
      'geography_radius', 1000, -- Radius in meters around each point in 'geo'
      'business_status', ['OPERATIONAL'],
      'types', ["restaurant"],
      'min_rating', 1.3,
      'price_level', ['PRICE_LEVEL_INEXPENSIVE', 'PRICE_LEVEL_MODERATE'],
      'allows_dogs', TRUE
      )
);

مثال: تعداد رستوران‌ها و مکان‌های برند را با PLACES_COUNT_V2 جستجو کنید

مثال زیر از تابع PLACES_COUNT_V2 با جدول ورودی جغرافیایی سفارشی my_search_areas برای بازگرداندن تعداد رستوران‌های فعال در محدوده ۱۰۰۰ متری ساختمان امپایر استیت و میدان تایمز در شهر نیویورک استفاده می‌کند:

SELECT * FROM `PROJECT_NAME.places_insights___us.PLACES_COUNT_V2`(
  TABLE `PROJECT_NAME.YOUR_DATASET.my_search_areas`,
  JSON_OBJECT(
      'geography_radius', 1000, -- Radius in meters
      'business_status', ['OPERATIONAL'],
      'types', ["restaurant"]
      )
);

پاسخ یک جدول BigQuery است که شامل geo_id ، جغرافیا، تعداد و نمونه‌ای از شناسه‌های مکان است.

نتایج مربوط به تابع شمارش اماکن در شهر نیویورک.

مثال زیر از تابع PLACES_COUNT_V2 برای فیلتر کردن بر اساس شناسه‌های برند خاص استفاده می‌کند. در این مثال، ما مکان‌های Starbucks را با استفاده از شناسه برند "1413758728321880760" فیلتر می‌کنیم.

برای یافتن شناسه‌های برند برای برندهایی که می‌خواهید بر اساس آنها فیلتر کنید، جدول brands را برای مجموعه داده‌های خود جستجو کنید (برای مثال، places_insights___us.brands ). برای اطلاعات بیشتر در مورد مجموعه داده‌های brands، به بخش «نوشتن یک پرس‌وجو با استفاده از داده‌های brands» مراجعه کنید.

برای مثال، برای یافتن شناسه برند «استارباکس»:

SELECT id, name
FROM `PROJECT_NAME.places_insights___us.brands`
WHERE name = "Starbucks"

پس از به دست آوردن شناسه‌های برند، می‌توانید از آنها در فیلتر brand_ids همانطور که در کوئری زیر نشان داده شده است، استفاده کنید:

SELECT * FROM `PROJECT_NAME.places_insights___us.PLACES_COUNT_V2`(
  TABLE `PROJECT_NAME.YOUR_DATASET.my_search_areas`,
  JSON_OBJECT(
      'geography_radius', 1000, -- Radius in meters
      'business_status', ['OPERATIONAL'],
      'brand_ids', ["1413758728321880760"]
      )
);

خروجی کوئری را با ابزارهای Google Cloud تجسم کنید

ابزارهای تحلیل و هوش تجاری به شما کمک می‌کنند تا از داده‌های BigQuery خود، بینش‌هایی را کشف کنید. BigQuery از چندین ابزار تجسم داده‌های گوگل و شخص ثالث پشتیبانی می‌کند که می‌توانید از آنها برای تحلیل نتایج توابع خود در داده‌های Places Insights استفاده کنید.

برای مثالی از مصورسازی نتایج یک تابع، به Visualize results در مرجع PLACES_COUNT_PER_H3 مراجعه کنید. برای اطلاعات بیشتر در مورد مصورسازی نتایج Places Insights، به Visualize query results مراجعه کنید.

محدودیت‌ها و الزامات عملکرد

توابع شمارش مکان محدودیت‌ها و الزامات زیر را دارند:

  • این توابع فقط از بینش‌های COUNT پشتیبانی می‌کنند.
  • حداقل مساحت جستجو ۴۰ متر در ۴۰ متر (۱۶۰۰ متر مربع ) (۴۰ متر در ۴۰ متر / ۱۶۰۰ متر مربع) مورد نیاز است.
  • محدودیت اندازه ورودی پارامتر: شیء JSON که به عنوان پارامتر به توابع ارسال می‌شود، به ۱ مگابایت محدود است. تأثیر این محدودیت به نسخه تابع بستگی دارد:
    • برای توابع V2 ( PLACES_COUNT_V2 ، PLACES_COUNT_PER_TYPE_V2 )، این محدودیت فقط برای شیء JSON فیلترها اعمال می‌شود. از آنجایی که جغرافیاها به طور جداگانه با استفاده از یک پارامتر جدول ارائه می‌شوند، این توابع می‌توانند بدون رسیدن به محدودیت اندازه JSON، به تعداد بسیار بیشتری از جغرافیاهای ورودی مقیاس‌بندی شوند.
    • برای PLACES_COUNT_PER_H3 ، PLACES_COUNT ، PLACES_COUNT_PER_TYPE و PLACES_COUNT_PER_GEO ، این محدودیت برای کل شیء JSON، شامل تمام تعاریف جغرافیایی، اعمال می‌شود. این ممکن است تعداد جغرافیایی‌هایی را که می‌توان در یک فراخوانی واحد پردازش کرد، محدود کند.
  • از فیلتر کردن بر اساس شناسه مکان، گزینه‌های شارژ خودروی برقی یا مؤلفه آدرس پشتیبانی نمی‌کند.
  • شما فقط می‌توانید به توابع شمارش مکان‌ها برای شهرها و کشورهایی که در آنها مشترک شده‌اید دسترسی داشته باشید. برای دسترسی به مجموعه داده‌ها، به بخش «تنظیم بینش مکان‌ها» مراجعه کنید.
  • پارامترهای فیلتر (برای مثال، geography یا types ) به حروف کوچک و بزرگ حساس هستند و باید دقیقاً با نام پارامترها مطابقت داشته باشند، در غیر این صورت پرس و جو با شکست مواجه خواهد شد.