نمای کلی

این سند نحوه ساخت گزارشهای مکانی پویا با استفاده از Places Insights و Looker Studio را شرح میدهد. با توانمندسازی ذینفعان غیرفنی برای پاسخ به سوالات خود، ارزش دادههای مکانی خود را افزایش دهید. این راهنما به شما نشان میدهد که چگونه گزارشهای ایستا را به ابزارهای تعاملی و به سبک نقشه حرارتی برای تجزیه و تحلیل بازار تبدیل کنید، بدون اینکه نیاز به نوشتن SQL برای هر درخواست داشته باشید. دسترسی به دادههای مکانی پیچیده را فعال کنید و شکاف بین مهندسی داده و هوش تجاری را پر کنید.
اتخاذ این الگوی معماری چندین مزیت کلیدی را به همراه دارد:
- نمایش بصری دادهها: دادههای Places Insights را به نقشهها و نمودارهای تعاملی تبدیل میکند که بلافاصله تراکم مکانی و روندها را نشان میدهند.
- کاوش ساده بدون SQL: اعضای تیم، مانند تحلیلگران بازار یا برنامهریزان املاک و مستغلات، را قادر میسازد تا دادهها را با استفاده از پارامترهای از پیش تعریف شده (مثلاً تغییر "شهر" یا "زمان روز" با استفاده از منوی کشویی) به صورت پویا فیلتر کنند. آنها میتوانند دادهها را بدون نوشتن حتی یک خط SQL کاوش کنند.
- همکاری یکپارچه: ویژگیهای اشتراکگذاری Standard Looker Studio به شما امکان میدهد تا این بینشهای تعاملی را به طور ایمن توزیع کنید.
گردش کار راهکار
گردش کار زیر یک معماری گزارشدهی کارآمد ایجاد میکند. این گردش کار از یک مبنای ایستا به یک برنامه کاملاً پویا حرکت میکند و قبل از ایجاد پیچیدگی، صحت دادهها را تضمین میکند.
پیشنیازها
قبل از شروع، برای تنظیم Places Insights این دستورالعملها را دنبال کنید . برای این کار به Looker Studio که ابزاری رایگان است، نیاز خواهید داشت.
مرحله ۱: ایجاد یک خط مبنای مکانی ایستا
قبل از معرفی تعامل، یک پرسوجوی پایه ایجاد کنید و مطمئن شوید که در Looker Studio به درستی رندر میشود. از Places Insights و قابلیتهای مکانی BigQuery برای تجمیع دادهها در شبکههای ششضلعی با استفاده از سیستم نمایهسازی H3 استفاده کنید. این کار یک خروجی پرسوجو تولید میکند که میتواند با نوع کارت نقشه پر شده Looker Studio برای تجسم استفاده شود.
۱.۱ اتصال داده
از کوئری استاتیک زیر برای ایجاد اتصال اولیه استفاده کنید. این کوئری یک مکان ثابت (لندن) و یک دسته (رستورانها) را برای اعتبارسنجی خط لوله داده هدف قرار میدهد.
SELECT
h3_index,
`carto-os.carto.H3_BOUNDARY`(h3_index) AS h3_geo,
restaurant_count
FROM (
SELECT WITH AGGREGATION_THRESHOLD
`carto-os.carto.H3_FROMGEOGPOINT`(point, 8) AS h3_index,
COUNT(*) AS restaurant_count
FROM
-- Note: Change 'gb' to your target country code (e.g., 'us')
`places_insights___gb.places`
WHERE
'London' IN UNNEST(locality_names)
AND 'restaurant' IN UNNEST(types)
GROUP BY
h3_index
)
ORDER BY
restaurant_count DESC;
یادداشتی در مورد تجمیع مکانی
این پرسوجو از تابعی از جعبه ابزار تحلیلی CARTO ( carto-os ) که به صورت عمومی در Google Cloud BigQuery موجود است، استفاده میکند. تابع H3_FROMGEOGPOINT نقاط مکانی خاص را به سلولهای H3 تبدیل میکند، سیستمی که جهان را به سلولهای شبکهای ششضلعی تقسیم میکند.
ما از این تبدیل استفاده میکنیم زیرا نقشهی پر شدهی Looker Studio برای نمایش رنگها به چندضلعیها (اشکال) نیاز دارد. با تبدیل نقاط به اشکال ششضلعی، میتوانیم تراکم کسبوکارها را در یک منطقهی خاص تجسم کنیم، نه اینکه هزاران نقطهی همپوشانی را ترسیم کنیم.
یادداشتی در مورد آستانه تجمیع
همه کوئریهای Places Insights به عبارت WITH AGGREGATION_THRESHOLD نیاز دارند. این محافظت از حریم خصوصی تضمین میکند که دادهها فقط در صورتی بازگردانده میشوند که تعداد تجمیعشده ۵ یا بالاتر باشد.
در چارچوب این مصورسازی، اگر یک سلول شبکه H3 شامل کمتر از ۵ رستوران باشد، آن سلول به طور کامل از مجموعه نتایج حذف شده و روی نقشه شما خالی نمایش داده میشود.
برای پیادهسازی این مورد در Looker Studio:
- یک گزارش خالی جدید ایجاد کنید.
- BigQuery را به عنوان رابط داده انتخاب کنید.
- از منوی سمت چپ، گزینه CUSTOM QUERY را انتخاب کرده و شناسه پروژه صورتحساب خود را انتخاب کنید.
- کوئری Static Base بالا را در ویرایشگر پیست کنید.
- پاک کردن استفاده از SQL قدیمی ، فعال کردن محدوده تاریخ و فعال کردن پارامترهای آدرس ایمیل نمایشگر .
- روی افزودن کلیک کنید.
۱.۲ پیکربندی تجسم مکانی
پس از اتصال دادهها، Looker Studio را طوری پیکربندی کنید که دادههای مرزی H3 را به درستی تشخیص دهد:
- از منوی «افزودن نمودار» ، یک نمودار مصورسازی «نقشه پر شده» (Filled Map) به بوم گزارش اضافه کنید.
- مطمئن شوید که فیلد
h3_geoشما، که شامل هندسه چندضلعی است، روی نوع داده Geospatial تنظیم شده باشد.- روی نماد ویرایش منبع داده (مداد) در کنار نام اتصال خود کلیک کنید.
- اگر
h3_geoروی متن (ABC) تنظیم شده است، از منوی کشویی برای انتخاب Geo > Geospatial استفاده کنید. - روی انجام شد کلیک کنید.
- فیلد
h3_indexرا به Location (به عنوان شناسه منحصر به فرد) نگاشت کنید. - فیلد
h3_geoرا به Geospatial Field (که به عنوان هندسه چندضلعی عمل میکند) نگاشت کنید. - فیلد
restaurant_countرا به Color metric نگاشت کنید.
این کار نقشهای از تراکم رستورانها را بر اساس سلول H3 رندر میکند. آبی تیرهتر (گزینه رنگ پیشفرض) نشاندهنده سلولی با تعداد رستورانهای بیشتر است.

مرحله ۲: پیادهسازی پارامترهای پویا
برای تعاملی کردن گزارش، کنترلهایی به گزارش اضافه خواهیم کرد که به کاربر اجازه میدهد از بین گزینههای زیر انتخاب کند:
- محل سکونت: شهری را که گزارش بر آن تمرکز دارد، کنترل میکند.
- روز هفته: مکانها را بر اساس روزی که باز هستند فیلتر میکند و از رکورد
regular_opening_hoursدر طرحواره استفاده میکند. - ساعت روز: مکانها را بر اساس ساعات کاریشان با مقایسه با فیلدهای
start_timeوend_timeفیلتر میکند.
برای دستیابی به این هدف، پارامترهای انتخاب شده توسط کاربر را مستقیماً در زمان اجرا به یک کوئری اصلاح شده Places Insights ارسال خواهید کرد. در ویرایشگر منبع داده Looker Studio، باید این پارامترها را به صورت صریح به عنوان متغیرهای تایپ شده تعریف کنید.
در Looker Studio، منوی Resource را انتخاب کنید، سپس روی Manage added data sources کلیک کنید. در پنلی که ظاهر میشود، گزینه EDIT را در مقابل BigQuery Custom SQL data source که قبلاً اضافه کردیم، انتخاب کنید.
در پنجرهی Edit Connection، گزینهی ADD A PARAMETER را انتخاب کنید. ما قصد داریم سه پارامتر با مقادیر زیر اضافه کنیم.
| نام پارامتر | نوع داده | مقادیر مجاز | فهرست مقادیر (باید دقیقاً با پایگاه داده مطابقت داشته باشد) | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
p_locality | متن | فهرست ارزشها |
| ||||||||||||||||
p_day_of_week | متن | فهرست ارزشها |
| ||||||||||||||||
p_hour_of_day | متن | فهرست ارزشها |
|
پیکربندی نمونه برای پارامتر p_hour_of_day .

برای پارامتر p_hour_of_day ، به ستون Value توجه ویژه داشته باشید. از آنجا که کوئری SQL از CAST(@p_hour_of_day AS TIME) استفاده میکند، مقادیر ارسالی از Looker Studio باید با فرمت HH:MM:SS (ساعت ۲۴ ساعته) باشند.
پس از تنظیم و ذخیره هر سه پارامتر، اتصال BigQuery Custom SQL خود را برای ارجاع به این متغیرها با استفاده از سینتکس @ تغییر دهید.
این کار با کلیک روی ویرایش اتصال (Edit Connection) و قرار دادن عبارت اصلاحشدهی زیر در آن انجام میشود:
SELECT
h3_index,
`carto-os.carto.H3_BOUNDARY`(h3_index) AS h3_geo,
restaurant_count
FROM (
SELECT WITH AGGREGATION_THRESHOLD
`carto-os.carto.H3_FROMGEOGPOINT`(point, 8) AS h3_index,
COUNT(*) AS restaurant_count
FROM
`places_insights___gb.places`
WHERE
-- Dynamic locality filter based on parameter
@p_locality IN UNNEST(locality_names)
AND 'restaurant' IN UNNEST(types)
AND business_status = 'OPERATIONAL'
AND EXISTS (
SELECT 1
FROM UNNEST(
CASE @p_day_of_week
WHEN 'monday' THEN regular_opening_hours.monday
WHEN 'tuesday' THEN regular_opening_hours.tuesday
WHEN 'wednesday' THEN regular_opening_hours.wednesday
WHEN 'thursday' THEN regular_opening_hours.thursday
WHEN 'friday' THEN regular_opening_hours.friday
WHEN 'saturday' THEN regular_opening_hours.saturday
WHEN 'sunday' THEN regular_opening_hours.sunday
END
) AS hours
WHERE hours.start_time <= CAST(@p_hour_of_day AS TIME)
AND hours.end_time >= TIME_ADD(CAST(@p_hour_of_day AS TIME), INTERVAL 1 HOUR)
)
GROUP BY
h3_index
)
ORDER BY
restaurant_count DESC;
برای ذخیره ویرایش، روی «اتصال مجدد» کلیک کنید. در پرسوجوی اصلاحشده، متغیرهای جدیدی مانند @p_hour_of_day را که با نام پارامترهایی که اخیراً تنظیم کردهایم مرتبط هستند، یادداشت کنید.
برای نمایش این پارامترها به کاربر نهایی، به بوم گزارش برگردید:
- سه کنترل لیست کشویی به گزارش خود اضافه کنید.
- برای هر کنترل، فیلد کنترل را مطابق با پارامترهای جدید ایجاد شده خود تنظیم کنید:
- کنترل ۱:
p_locality - کنترل ۲:
p_day_of_week - کنترل ۳:
p_hour_of_day
- کنترل ۱:
گزارش نهایی شما باید به شکل زیر باشد. تغییر مقدار در یکی از کنترلهای کشویی، Looker Studio را وادار میکند تا دادههای درخواستی را قبل از نمایش روی نقشه، از Places Insights دریافت کند.

مرحله ۳: نتایج را به اشتراک بگذارید
برای اشتراکگذاری گزارش از ابزار اشتراکگذاری تعبیهشده در Looker Studio استفاده کنید. این به بینندگان اجازه میدهد تا بر اساس پارامترهایی که از لیستهای کشویی شما انتخاب میکنند، به صورت پویا، تجسم را بهروزرسانی کنند.
نتیجهگیری
این الگو یک ابزار گزارشدهی تعاملی و مقیاسپذیر ایجاد میکند که از قدرت محاسباتی BigQuery برای ارائه دادههای تجمیعشده Places Insights به Looker Studio بهره میبرد. این معماری از مشکلات تلاش برای تجسم مجموعه دادههای خام عظیم جلوگیری میکند و به کاربران نهایی انعطافپذیری لازم برای کاوش دادهها در ابعاد مختلف، مانند زمان، مکان و نوع کسبوکار، را تقریباً به صورت بلادرنگ ارائه میدهد. این ابزاری قدرتمند است که به ذینفعان غیرفنی شما انعطافپذیری لازم برای کاوش دادهها را میدهد.
مراحل بعدی
با پارامتری کردن بخشهای مختلف طرح Places Insights، انواع دیگر گزارشهای پویا را بررسی کنید:
- تحلیل پویای رقبا: پارامتری برای نامهای
brandایجاد کنید تا کاربران بتوانند فوراً نقشه حرارتی را بین رقبای مختلف تغییر دهند تا اشباع نسبی آنها را در یک بازار مشاهده کنند. برای دسترسی به دادههای برند ، به دادههای «درباره مکانها» مراجعه کنید. - انتخاب تعاملی سایت: پارامترهایی برای
price_level(مثلاً «متوسط» در مقابل «گران») و حداقلratingاضافه کنید تا تیمهای املاک بتوانند به صورت پویا مناطقی را که با مشخصات جمعیتی خاص مطابقت دارند، فیلتر کنند. - مناطق تحت پوشش سفارشی: به جای فیلتر کردن بر اساس نام شهر، به کاربران اجازه دهید مناطق مطالعاتی سفارشی را تعریف کنند.
- مبتنی بر شعاع: سه پارامتر عددی ایجاد کنید: p_latitude، p_longitude و p_radius_meters. مختصات را میتوان از APIهای پلتفرم نقشههای گوگل، از جمله API مربوط به Geocoding، دریافت کرد. در کوئری خود، این موارد را به تابع ST_DWITHIN تزریق کنید:
-
ST_DWITHIN(point, ST_GEOGPOINT(@p_longitude, @p_latitude), @p_radius_meters)
-
- مبتنی بر چندضلعی: برای اشکال سفارشی پیچیده (مانند مناطق فروش)، کاربران نمیتوانند به راحتی متن هندسی را وارد کنند. در عوض، یک جدول جستجو در BigQuery ایجاد کنید که شامل هندسههای شکل شما و یک نام کاربرپسند (مثلاً "منطقه A") باشد. یک پارامتر متنی
p_zone_nameدر Looker Studio ایجاد کنید تا کاربران بتوانند منطقه را انتخاب کنند و از یک زیرپرسوجو برای بازیابی هندسه برای تابعST_CONTAINSاستفاده کنید.
- مبتنی بر شعاع: سه پارامتر عددی ایجاد کنید: p_latitude، p_longitude و p_radius_meters. مختصات را میتوان از APIهای پلتفرم نقشههای گوگل، از جمله API مربوط به Geocoding، دریافت کرد. در کوئری خود، این موارد را به تابع ST_DWITHIN تزریق کنید:
مشارکتکنندگان
- دیوید سزاینگارتن | مهندس روابط توسعهدهندگان
- هنریک والو | مهندس DevX