سازمان ها معمولا داده های کسب و کار و مشتریان را در پایگاه داده هایی مانند سرویس پایگاه داده رابطه آمازون (آمازون RDS) و آمازون Redshiftو اغلب می خواهند این داده ها را با ادغام با سرویس های خارجی غنی کنند. یکی از این غنیسازیها اضافه کردن ویژگیهای مکانی مانند مختصات مکان برای یک آدرس است. با معرفی سرویس مکان آمازون، اکنون با استفاده از ارائه دهندگان داده مانند تجسم نقشه، رمزگذاری جغرافیایی و رمزگذاری معکوس جغرافیایی به عملکردهای جغرافیایی دسترسی دارید. اسرایی و اینجا.
علاوه بر این، با قابلیت آمازون Redshift و پایگاه داده RDS برای تماس AWS لامبدا توابع از طریق توابع تعریف شده توسط کاربر (UDFs)، اکنون می توانید این پایگاه داده ها را با عملکردهای مکانی ارائه شده توسط سرویس مکان آمازون ادغام کنید. برای اطلاعات بیشتر در مورد عملکردهای تعریف شده توسط کاربر در Amazon Redshift، رجوع کنید به ایجاد یک اسکالر لامبدا UDF.
در این پست، آدرسهای مشتریان ذخیره شده در پایگاه داده Redshift آمازون را میگیریم و APIهای جغرافیایی کدگذاری سرویس مکان آمازون را فرا میخوانیم تا مختصات آدرسها را پیدا کرده و آنها را در پایگاه داده حفظ کنیم. اگر از پایگاه های داده آمازون RDS استفاده می کنید، ببینید دسترسی به سرویس مکان آمازون از آمازون آرورا.
پیش نیازها
قبل از شروع، مطمئن شوید که پیش نیازهای زیر را دارید:
- درک مفاهیم اساسی مانند هویت AWS و مدیریت دسترسی نقشها و خطمشیهای (IAM)، توابع Lambda، و Amazon Redshift.
- یک خوشه آمازون Redshift با جدولی که حاوی آدرس مشتری و جزئیات زیر است: شماره خیابان، نام خیابان، نوع خیابان، نام شهرداری، کد ایالت یا استان، کد پستی یا پستی و کد کشور. همچنین برای ذخیره مختصات آدرس به یک ستون نیاز دارید.
- یک ابزار توسعه دهنده SQL به انتخاب شما برای اتصال به خوشه آمازون Redshift.
- An آمازون QuickSight حساب با دسترسی به Amazon Redshift.
بررسی اجمالی راه حل
راه حل ما شامل اجزای زیر است:
- یک تابع Python Lambda برای فراخوانی
search_place_index_for_text
تابع. این تابع یک ورودی متنی می گیرد و مختصات را به عنوان مقادیر طول و عرض جغرافیایی برای هر نتیجه جستجو برمی گرداند. - یک نقش IAM که به لامبدا اجازه می دهد تا آن را فراخوانی کند
SearchPlaceIndexForText
عملیات برای سرویس مکان آمازون. - یک Lambda UDF در پایگاه داده Redshift آمازون برای فراخوانی تابع Lambda.
- یک نقش IAM که به آمازون Redshift اجازه می دهد تا تابع Lambda را فراخوانی کند.
- دستورات SQL برای به روز رسانی و انتخاب داده های مختصات برای رکوردها در پایگاه داده آمازون Redshift با فراخوانی UDF لامبدا.
- یک مجموعه داده QuickSight که از دستور SQL برای دسترسی به داده های مختصات استفاده می کند.
- تجزیه و تحلیل QuickSight که مکان آدرس را در یک نمودار جغرافیایی نمایش می دهد.
نمودار زیر معماری راه حل ما را نشان می دهد:
برای پیاده سازی راه حل، مراحل زیر را انجام می دهیم:
- یک منبع فهرست مکان برای سرویس مکان آمازون تنظیم کنید.
- یک تابع کدگذاری جغرافیایی آدرس مشترک ایجاد کنید.
- API سرویس موقعیت مکانی آمازون را از Amazon Redshift فراخوانی کنید.
- یک تابع Lambda ایجاد کنید.
- Amazon Redshift را راه اندازی کنید.
- دستورات SQL را برای فراخوانی تابع Lambda اجرا کنید.
- مکان های آدرس را در QuickSight تجسم کنید.
به نام ها و پارامترهای استفاده شده در این پست دقت کنید. آنها باید با تمام اجزای راه حل مطابقت داشته باشند و سازگار باشند.
کد کامل در دسترس است GitHub. کد همچنین شامل یک قالب AWS CloudFormation.
یک منبع فهرست مکان برای سرویس مکان آمازون تنظیم کنید
سرویس مکان آمازون از یک منبع فهرست مکان برای ارائه عملکرد کدگذاری جغرافیایی و معکوس جغرافیایی استفاده می کند. بیایید شروع کنیم ایجاد یک منبع فهرست مکان جدید. حساب شما ممکن است یک نمایه مکان پیشفرض داشته باشد، اما ما از آن برای این پست استفاده نمیکنیم، زیرا برای ذخیرهسازی پیکربندی نشده است.
- در کنسول سرویس مکان آمازون، از صفحه ناوبری برای راه اندازی جادوگر برای ایجاد یک فهرست مکان جدید استفاده کنید.
- برای نام، وارد
placeindex.redshift
. - برای ارائه دهنده داده، یکی از ارائه دهندگان داده را برای فهرست مکان خود انتخاب کنید.
- برای گزینه های ذخیره سازی داده ها، انتخاب کنید بله، نتایج ذخیره خواهد شد زیرا ما نتایج geocoding را در یک فیلد پایگاه داده ذخیره می کنیم.
- تمام مقادیر دیگر را به عنوان پیش فرض خود بگذارید و انتخاب کنید ایجاد نمایه مکان.
ما از نام نمایه مکان در کد لامبدا به عنوان پارامتری برای search_place_index_for_text
تماس API.
یک تابع لامبدا برای کدگذاری جغرافیایی آدرس مشترک ایجاد کنید
در مرحله بعد، اجازه دهید یک تابع Lambda برای فراخوانی API سرویس مکان آمازون ایجاد کنیم. ما از این کد عملکرد برای Amazon Redshift و Amazon RDS مجددا استفاده می کنیم زیرا تماس سرویس اصلی یکسان است.
رسیدگی به خطا در این قطعه کد برای اختصار نادیده گرفته شده است. کد کامل در دسترس است GitHub.
استفاده می کنیم country_code
برای محدود کردن search_place_index_for_text
API به یک کشور خاص با استفاده از ISO 3166-1 آلفا -3 کد کشور. سرویس موقعیت مکانی آمازون در صورتی که ورودی ارائه شده باشد اما حاوی مقدار معتبری نباشد، استثنا ایجاد می کند.
یک فایل جدید ایجاد کنید geocode.py
با قطعه کد زیر:
API سرویس موقعیت مکانی آمازون را از Amazon Redshift فراخوانی کنید
هر گره محاسباتی آمازون Redshift توابع Lambda را به صورت موازی فراخوانی می کند تا نتایج را به سرعت بازگرداند. تابع کد وضعیت موفقیت یا عدم موفقیت را همراه با نتایج برمی گرداند. در صورت خرابی، یک پیغام خطا می تواند برگردانده شود.
فراخوان آمازون Redshift Lambda UDF ارائه می دهد arguments
لیستی حاوی لیست مرتب شده ای از پارامترهای ورودی که فیلدهای رکوردهای پایگاه داده را نشان می دهد (به کد زیر مراجعه کنید). تابع پارامترهای ورودی را بر اساس موقعیت لیست می خواند و آنها را به متغیرهایی برای پردازش درخواست نگاشت می کند.
رابط انتظار دارد که نتایج به همان ترتیب و حاوی همان تعداد آیتم به عنوان درخواست بازگردانده شوند. کد زیر را ببینید:
در صورت استثنا، تابع می تواند وضعیت شکست را همراه با یک پیام خطا برگرداند:
یک تابع Lambda ایجاد کنید
اکنون یک تابع Lambda ایجاد می کنیم GeocodeAddresses-Redshift
با استفاده از زمان اجرا پایتون
رسیدگی به خطا در این قطعه کد برای اختصار نادیده گرفته شده است. کد کامل در دسترس است GitHub.
- فایل را ایجاد کنید
geocode.py
همانطور که در بخش قبل توضیح داده شد.
برای پردازش چندین رکورد در یک تماس، تنظیم فاصله زمانی در عملکرد لامبدا برای مدت زمان طولانیتری بسیار مهم است.
- کد پیش فرض تولید شده را جایگزین کنید
lambda_function.py
با کد زیر:
- این تابع برای فراخوانی به مجوز نیاز دارد
search_place_index_for_text
API به آدرس های geocode با استفاده از نمایه مکانplaceindex.redshift
که قبلا ایجاد کردیم - نقش IAM را برای تابع Lambda به روز کنید تا خط مشی زیر را اضافه کنید
GeocodeAddresses-Redshift-policy
:
Amazon Redshift را راه اندازی کنید
اکنون یک Lambda UDF جدید در Amazon Redshift ایجاد می کنیم و آن را به گونه ای پیکربندی می کنیم که از یک نقش IAM استفاده کند که مجوز فراخوانی تابع Lambda خاص را می دهد. برای اطلاعات بیشتر ببین ایجاد یک اسکالر لامبدا UDF.
- یک نقش IAM ایجاد کنید
Redshift-Lambda-role
و خط مشی زیر را اضافه کنیدRedshift-Lambda-policy
به این نقش اجازه می دهد تا آمازون Redshift فراخوانی کندGeocodeAddresses-Redshift
تابعی که ایجاد کردیم:
ما نیاز داریم این نقش IAM را با خوشه آمازون Redshift مرتبط کنید.
- در کنسول Redshift آمازون، کلاستر مورد استفاده را انتخاب کنید.
- تحت نقش های IAM را مدیریت کنید، افزودن
Redshift-Lambda-role
نقش به خوشه - منتظر بمانید تا خوشه اصلاح شود و وارد شوید
Available
وضعیت.
حالا ما یک تابع خارجی Amazon Redshift ایجاد کنید برای فراخوانی یک تابع لامبدا.
- از ویرایشگر SQL دلخواه خود برای اتصال به خوشه Redshift آمازون و ایجاد یک عملکرد خارجی جدید استفاده کنید
f_geocode_address
در آمازون Redshift با استفاده از کد زیر:
این تابع خارجی با استفاده از مجوزهای ارائه شده در تابع Lambda را فراخوانی می کند Redshift-Lambda-role
نقشی که ما خلق کردیم
دستورات SQL را برای فراخوانی تابع Lambda اجرا کنید
اکنون آماده اجرای دستورات SQL هستیم که میتوانند سوابق آدرس را از آن دریافت کنند customer_address
جدول در پایگاه داده Redshift آمازون و آنها را با استفاده از سرویس موقعیت مکانی آمازون ژئوکد کنید.
اگر شما ندارید customer_address
جدول، می توانید آن را با استفاده از اسکریپت موجود در کد کامل ایجاد کنید GitHub.
شما می توانید مانند کد زیر به سادگی نتایج geocoding را به عنوان بخشی از دستور SQL انتخاب کنید. درک این نکته مهم است که توابع Lambda که از دستورات SELECT SQL فراخوانی می شوند، حاوی فیلدهایی از چندین رکورد پایگاه داده در هر تماس هستند. بنابراین، زمان پایان عملکرد باید روی مدت زمان بیشتری تنظیم شود تا چندین رکورد در یک تماس پردازش شود.
نتایج ژئوکدینگ را می توان در یک جدول پایگاه داده جداگانه در Amazon Redshift حفظ کرد. سپس می توانیم نتایج ذخیره شده JSON را برای استخراج مختصات جغرافیایی تجزیه کنیم.
حال بیایید مختصات جغرافیایی را از فیلد نتایج استخراج کنیم.
مکان آدرس را با استفاده از QuickSight تجسم کنید
بیایید یک مجموعه داده را در QuickSight پیکربندی کنیم و یک تجزیه و تحلیل برای این مجموعه داده ایجاد کنیم.
- یک منبع داده جدید Amazon Redshift ایجاد کنید
Redshift-Geocode
یا با استفاده از یک نقطه پایانی کشف شده خودکار یا پیکربندی دستی. - یک مجموعه داده جدید برای منبع داده با استفاده از عبارت SELECT قبلی به عنوان یک SQL سفارشی ایجاد کنید.
اکنون ما آماده ایم تا تحلیل خود را پیکربندی کنیم.
- در کنسول QuickSight، یک تحلیل QuickSight جدید با استفاده از مجموعه داده مکان آدرس ایجاد کنید.
- انتخاب نقطه روی نقشه نوع بصری
- انتخاب طول جغرافیایی و عرض جغرافیایی فیلدها را از لیست فیلدها و آنها را به قسمت بکشید مکانی چاه های میدانی
اکنون باید نقاطی را روی نقشه ببینید که نشان دهنده مکان های آدرس مشتری است.
نتیجه
تبریک می گویم! ما با موفقیت سرویس مکان آمازون را با آمازون Redshift و داده های آدرس جغرافیایی در جدول Redshift آمازون بدون خروج از محیط SQL ادغام کرده ایم. ما داده های آدرس را با اضافه کردن مختصات مکان غنی کردیم. ما همچنین با موفقیت مکان های آدرس را روی نقشه در QuickSight تجسم کردیم. اکنون میتوانید گسترش راهحل را به سایر قابلیتهای سرویس مکان آمازون مانند رمزگذاری معکوس جغرافیایی یا حتی ادغام با توابع لامبدا برای هر عملکرد سفارشی دیگری بررسی کنید.
درباره نویسنده
پاراگ سریواستاوا یک معمار راه حل در خدمات وب آمازون (AWS) است که به مشتریان سازمانی در پذیرش موفق ابر و مهاجرت کمک می کند. در طول دوران حرفه ای خود، او به طور گسترده در پروژه های پیچیده تحول دیجیتال شرکت داشته است. او همچنین مشتاق ساخت راهحلهای نوآورانه پیرامون جنبههای جغرافیایی آدرسها است.
منبع: https://aws.amazon.com/blogs/big-data/access-amazon-location-service-from-amazon-redshift/
- "
- 100
- دسترسی
- حساب
- اتخاذ
- معرفی
- آمازون
- آمازون خدمات وب
- خدمات وب آمازون (AWS)
- تحلیل
- API
- رابط های برنامه کاربردی
- معماری
- دور و بر
- AWS
- انگلیسی
- بریتیش کلمبیا
- بنا
- کسب و کار
- صدا
- کاریابی
- ابر
- پذیرش ابر
- رمز
- کلمبیا
- ستون
- مشترک
- محاسبه
- مشتریان
- داده ها
- پایگاه داده
- پایگاه های داده
- توسعه دهنده
- دیجیتال
- دگرگونی های دیجیتال
- سردبیر
- نقطه پایانی
- سرمایه گذاری
- مشتریان سازمانی
- محیط
- واقعه
- انتظار می رود
- شکست
- زمینه
- کامل
- تابع
- گرجستان
- اداره
- HTTPS
- IAM
- هویت
- شاخص
- اطلاعات
- گرفتار
- IT
- عرض جغرافیایی
- راه اندازی
- فهرست
- محل
- نقشه
- نقشه ها
- مسابقه
- نام
- جهت یابی
- سفارش
- دیگر
- سیاست
- سیاست
- پروژه ها
- عمومی
- پــایتــون
- سوابق
- منابع
- پاسخ
- نتایج
- بازده
- معکوس
- دویدن
- صرفه جویی کردن
- جستجو
- سیاتل
- خدمات
- تنظیم
- مزایا
- فضایی
- SQL
- شروع
- آغاز شده
- دولت
- بیانیه
- وضعیت
- ذخیره سازی
- opbevare
- خیابان
- موفقیت
- موفق
- دگرگونی
- بروزرسانی
- ارزش
- ونکوور
- تجسم
- W
- وب
- خدمات وب
- ویکیپدیا