شعار زيفيرنت

احصل على رؤى من بيانات الموقع التاريخي باستخدام Amazon Location Service وخدمات تحليلات AWS | خدمات الويب الأمازون

التاريخ:

تعتمد العديد من المؤسسات حول العالم على استخدام الأصول المادية، مثل المركبات، لتقديم الخدمة إلى عملائها النهائيين. ومن خلال تتبع هذه الأصول في الوقت الفعلي وتخزين النتائج، يمكن لمالكي الأصول استخلاص رؤى قيمة حول كيفية استخدام أصولهم لتقديم تحسينات الأعمال بشكل مستمر والتخطيط للتغييرات المستقبلية. على سبيل المثال، قد تحتاج شركة التوصيل التي تقوم بتشغيل أسطول من المركبات إلى التأكد من تأثير تغييرات السياسة المحلية الخارجة عن سيطرتها، مثل التوسع المعلن لسلسلة من المركبات. منطقة الانبعاثات المنخفضة للغاية (ULEZ). ومن خلال الجمع بين بيانات موقع السيارة التاريخية والمعلومات من مصادر أخرى، يمكن للشركة ابتكار أساليب تجريبية لاتخاذ قرارات أفضل. على سبيل المثال، يمكن لفريق المشتريات في الشركة استخدام هذه المعلومات لاتخاذ قرارات بشأن المركبات التي يجب تحديد أولوياتها للاستبدال قبل أن تدخل تغييرات السياسة حيز التنفيذ.

يمكن للمطورين استخدام الدعم في خدمة موقع أمازون For نشر تحديثات موضع الجهاز إلى أمازون إيفينت بريدج لإنشاء خط أنابيب بيانات في الوقت الفعلي تقريبًا يقوم بتخزين مواقع الأصول المتعقبة فيه خدمة تخزين أمازون البسيطة (أمازون إس 3). بالإضافة إلى ذلك، يمكنك استخدام AWS لامدا لإثراء بيانات الموقع الواردة ببيانات من مصادر أخرى، مثل الأمازون DynamoDB جدول يحتوي على تفاصيل صيانة المركبة. ثم يمكن لمحلل البيانات استخدام قدرات الاستعلام الجغرافي المكاني of أمازون أثينا للحصول على رؤى، مثل عدد الأيام التي عملت فيها مركباتهم في الحدود المقترحة لمنطقة ULEZ الموسعة. نظرًا لأن المركبات التي لا تلبي معايير انبعاثات ULEZ تخضع لرسوم يومية للعمل داخل المنطقة، يمكنك استخدام بيانات الموقع، إلى جانب بيانات الصيانة مثل عمر السيارة، والمسافة المقطوعة الحالية، ومعايير الانبعاثات الحالية لتقدير المبلغ سيتعين على الشركة أن تنفق على الرسوم اليومية.

يوضح هذا المنشور كيف يمكنك استخدام موقع Amazon، وEventBridge، وLambda، خرطوم بيانات أمازونوAmazon S3 لإنشاء مسار بيانات مدرك للموقع، واستخدام هذه البيانات للحصول على رؤى مفيدة باستخدام غراء AWS وأثينا.

نظرة عامة على الحل

يعد هذا حلاً بدون خادم تمامًا لإدارة الأصول المستندة إلى الموقع. يتكون الحل من الواجهات التالية:

  • إنترنت الأشياء أو تطبيقات الهاتف المحمول - يسمح تطبيق الهاتف المحمول أو جهاز إنترنت الأشياء (IoT) بتتبع مركبة الشركة أثناء استخدامها وينقل موقعها الحالي بشكل آمن إلى طبقة استيعاب البيانات في AWS. نهج الاستيعاب ليس في نطاق هذا المنصب. وبدلاً من ذلك، تعمل وظيفة Lambda في الحل الذي نقدمه على محاكاة نماذج لرحلات المركبات وتحديث كائنات تعقب موقع Amazon مباشرة بمواقع عشوائية.
  • تحليلات البيانات – يقوم محللو الأعمال بجمع الرؤى التشغيلية من مصادر بيانات متعددة، بما في ذلك بيانات الموقع التي تم جمعها من المركبات. يبحث محللو البيانات عن إجابات لأسئلة مثل "ما هي المدة التي قضتها مركبة معينة تاريخيًا داخل المنطقة المقترحة، وما هي تكلفة الرسوم لو كانت السياسة مطبقة على مدار الـ 12 شهرًا الماضية؟"

يوضح الرسم البياني التالي بنية الحل.
مخطط العمارة

يتكون سير العمل من الخطوات الرئيسية التالية:

  1. يتم استخدام وظيفة التتبع في Amazon Location لتتبع السيارة. باستخدام تكامل EventBridge، يتم نشر التحديثات الموضعية المصفاة إلى ناقل أحداث EventBridge. يستخدم هذا الحل على أساس المسافة التصفية لتقليل التكاليف والارتعاش. تتجاهل التصفية المستندة إلى المسافة تحديثات الموقع التي تحركت فيها الأجهزة لمسافة تقل عن 30 مترًا (98.4 قدمًا).
  2. تصل أحداث موقع جهاز Amazon Location إلى EventBridge default حافلة مع source: ["aws.geo"] و detail-type: ["Location Device Position Event"]. يتم إنشاء قاعدة واحدة لإعادة توجيه هذه الأحداث إلى هدفين في اتجاه مجرى النهر: وظيفة Lambda، ودفق تسليم Firehose.
  3. تم وصف نمطين مختلفين، استنادًا إلى كل هدف، في هذا المنشور لتوضيح الأساليب المختلفة لارتباط البيانات بحاوية S3:
    1. وظيفة لامدا – يستخدم الأسلوب الأول وظيفة Lambda لتوضيح كيف يمكنك استخدام التعليمات البرمجية في مسار البيانات لتحويل بيانات الموقع الواردة مباشرةً. يمكنك تعديل وظيفة Lambda لجلب معلومات إضافية عن السيارة من مخزن بيانات منفصل (على سبيل المثال، جدول DynamoDB أو نظام إدارة علاقات العملاء) لإثراء البيانات، قبل تخزين النتائج في حاوية S3. في هذا النموذج، يتم استدعاء وظيفة Lambda لكل حدث وارد.
    2. تيار تسليم خرطوم الإطفاء - يستخدم الأسلوب الثاني تدفق توصيل Firehose للتخزين المؤقت للتحديثات الموضعية الواردة وتجميعها، قبل تخزينها في حاوية S3 دون تعديل. تستخدم هذه الطريقة ضغط GZIP لتحسين استهلاك التخزين وأداء الاستعلام. يمكنك أيضًا استخدام تحويل البيانات ميزة Data Firehose لاستدعاء وظيفة Lambda لإجراء تحويل البيانات على دفعات.
  4. يزحف AWS Glue إلى مساري حاوية S3، ويملأ جداول قاعدة بيانات AWS Glue استنادًا إلى المخططات المستنتجة، ويجعل البيانات متاحة لتطبيقات التحليلات الأخرى من خلال كتالوج بيانات AWS Glue.
  5. يتم استخدام Athena لتشغيل الاستعلامات الجغرافية المكانية على بيانات الموقع المخزنة في حاويات S3. يوفر كتالوج البيانات بيانات تعريفية تسمح لتطبيقات التحليلات التي تستخدم Athena بالعثور على بيانات الموقع المخزنة في Amazon S3 وقراءتها ومعالجتها.
  6. يتضمن هذا الحل وظيفة Lambda التي تعمل باستمرار على تحديث أداة تعقب موقع Amazon باستخدام بيانات الموقع المحاكاة من الرحلات الوهمية. يتم تشغيل وظيفة Lambda على فترات زمنية منتظمة باستخدام قاعدة EventBridge المجدولة.

يمكنك اختبار هذا الحل بنفسك باستخدام مستودع عينات AWS على GitHub. يحتوي المستودع على نموذج تطبيق AWS Serverless يلزم وجود قالب (AWS SAM) ورمز Lambda لتجربة هذا الحل. راجع التعليمات الواردة في README ملف للحصول على خطوات حول كيفية توفير هذا الحل وإيقاف تشغيله.

قد تبدو التخطيطات المرئية في بعض لقطات الشاشة في هذا المنشور مختلفة عن تلك الموجودة في جهازك وحدة تحكم إدارة AWS.

توليد البيانات

في هذا القسم، نناقش خطوات إنشاء بيانات الرحلة يدويًا أو تلقائيًا.

إنشاء بيانات الرحلة يدويًا

يمكنك تحديث مواضع الجهاز يدويًا باستخدام واجهة سطر الأوامر AWS (AWS CLI) أمر aws location batch-update-device-position. استبدال tracker-name, device-id, Positionو SampleTime القيم الخاصة بك، وتأكد من أن التحديثات المتعاقبة تبعد مسافة تزيد عن 30 مترًا لوضع حدث على default حافلة الأحداث EventBridge:

aws location batch-update-device-position --tracker-name <tracker-name> --updates "[{"DeviceId": "<device-id>", "Position": [<longitude>, <latitude>], "SampleTime": "<YYYY-MM-DDThh:mm:ssZ>"}]"

إنشاء بيانات الرحلة تلقائيًا باستخدام جهاز المحاكاة

المقدمة تكوين سحابة AWS ينشر القالب قاعدة EventBridge المجدولة ووظيفة Lambda المصاحبة التي تحاكي تحديثات المتعقب من المركبات. يتم تمكين هذه القاعدة افتراضيًا، ويتم تشغيلها بتردد محدد بواسطة SimulationIntervalMinutes معلمة CloudFormation تعمل وظيفة Lambda لتوليد البيانات على تحديث أداة تعقب موقع Amazon بإزاحة موضع عشوائي من المواقع الأساسية للمركبات.

يتم تخزين أسماء المركبات والمواقع الأساسية في مركبات.json ملف. تتم إعادة ضبط موضع بداية المركبة كل يوم، ويتم اختيار المواقع الأساسية لمنحها القدرة على الانجراف داخل وخارج منطقة ULEZ في يوم معين لتوفير محاكاة واقعية للرحلة.

اطلع على تعطيل القاعدة مؤقتًا عن طريق الانتقال إلى تفاصيل القاعدة المجدولة على وحدة تحكم EventBridge. وبدلاً من ذلك، قم بتغيير المعلمة State: ENABLED إلى State: DISABLED لمورد القاعدة المجدولة GenerateDevicePositionsScheduleRule في ال template.yml ملف. أعد إنشاء قالب AWS SAM وأعد نشره ليصبح هذا التغيير ساري المفعول.

نهج خط أنابيب بيانات الموقع

يتم نشر التكوينات الموضحة في هذا القسم تلقائيًا بواسطة قالب AWS SAM المقدم. يتم توفير المعلومات الواردة في هذا القسم لوصف الأجزاء ذات الصلة بالحل.

أحداث موقع جهاز موقع أمازون

يرسل Amazon Location أحداث تحديث موضع الجهاز إلى EventBridge بالتنسيق التالي:

{
    "version":"0",
    "id":"<event-id>",
    "detail-type":"Location Device Position Event",
    "source":"aws.geo",
    "account":"<account-number>",
    "time":"<YYYY-MM-DDThh:mm:ssZ>",
    "region":"<region>",
    "resources":[
        "arn:aws:geo:<region>:<account-number>:tracker/<tracker-name>"
    ],
    "detail":{
        "EventType":"UPDATE",
        "TrackerName":"<tracker-name>",
        "DeviceId":"<device-id>",
        "SampleTime":"<YYYY-MM-DDThh:mm:ssZ>",
        "ReceivedTime":"<YYYY-MM-DDThh:mm:ss.sssZ>",
        "Position":[
            <longitude>, 
            <latitude>
	]
    }
}

يمكنك اختياريًا تحديد تحويل المدخلات لتعديل تنسيق ومحتويات بيانات حدث موضع الجهاز قبل وصولها إلى الهدف.

إثراء البيانات باستخدام لامدا

يتم تسهيل إثراء البيانات في هذا النمط من خلال استدعاء وظيفة Lambda. في هذا المثال، نسمي هذه الوظيفة ProcessDevicePosition، واستخدم وقت تشغيل Python. يتم تطبيق تحويل مخصص في تعريف هدف EventBridge لتلقي بيانات الحدث بالتنسيق التالي:

{
    "EventType":<EventType>,
    "TrackerName":<TrackerName>,
    "DeviceId":<DeviceId>,
    "SampleTime":<SampleTime>,
    "ReceivedTime":<ReceivedTime>,
    "Position":[<Longitude>,<Latitude>]
}

يمكنك تطبيق تحويلات إضافية، مثل إعادة هيكلة Latitude و Longitude البيانات إلى أزواج منفصلة ذات قيمة رئيسية إذا كان ذلك مطلوبًا من خلال معالجة الأحداث في منطق الأعمال النهائي.

يوضح التعليمة البرمجية التالية منطق تطبيق Python الذي يتم تشغيله بواسطة ProcessDevicePosition وظيفة لامدا. لقد تم تخطي معالجة الأخطاء في مقتطف الشفرة هذا للإيجاز. الكود الكامل متاح في جيثب ريبو.

import json
import os
import uuid
import boto3

# Import environment variables from Lambda function.
bucket_name = os.environ["S3_BUCKET_NAME"]
bucket_prefix = os.environ["S3_BUCKET_LAMBDA_PREFIX"]

s3 = boto3.client("s3")

def lambda_handler(event, context):
    key = "%s/%s/%s-%s.json" % (bucket_prefix,
                                event["DeviceId"],
                                event["SampleTime"],
                                str(uuid.uuid4())
    body = json.dumps(event, separators=(",", ":"))
    body_encoded = body.encode("utf-8")
    s3.put_object(Bucket=bucket_name, Key=key, Body=body_encoded)
    return {
        "statusCode": 200,
        "body": "success"
    }

يقوم التعليمة البرمجية السابقة بإنشاء كائن S3 لكل حدث موضع الجهاز الذي يتلقاه EventBridge. يستخدم الكود DeviceId كبادئة لكتابة الكائنات إلى الدلو.

يمكنك إضافة منطق إضافي إلى كود وظيفة Lambda السابق لإثراء بيانات الحدث باستخدام مصادر أخرى. المثال في جيثب ريبو يوضح إثراء الحدث بالبيانات من جدول صيانة المركبات DynamoDB.

بالإضافة إلى الشرط الأساسي إدارة الهوية والوصول AWS (IAM) الأذونات التي يوفرها الدور AWSBasicLambdaExecutionRoleأطلقت حملة ProcessDevicePosition تتطلب الوظيفة أذونات لتنفيذ S3 put_object الإجراء وأي إجراءات أخرى يتطلبها منطق إثراء البيانات. تم توثيق أذونات IAM التي يتطلبها الحل في ملف template.yml ملف.

{
    "Version":"2012-10-17",
    "Statement":[
        {
            "Action":[
                "s3:ListBucket"
            ],
            "Resource":[
                "arn:aws:s3:::<S3_BUCKET_NAME>"
            ],
            "Effect":"Allow"
        },
        {
            "Action":[
                "s3:PutObject"
            ],
            "Resource":[
                "arn:aws:s3:::<S3_BUCKET_NAME>/<S3_BUCKET_LAMBDA_PREFIX>/*"
            ],
            "Effect":"Allow"
        }
    ]
}

خط أنابيب البيانات باستخدام Amazon Data Firehose

أكمل الخطوات التالية لإنشاء دفق تسليم Firehose الخاص بك:

  1. في وحدة تحكم Amazon Data Firehose، اختر تيارات الإطفاء في جزء التنقل.
  2. اختار إنشاء تيار خرطوم الإطفاء.
  3. في حالة مصدر، اختر كـ وضع مباشر.
  4. في حالة الرحلات، اختر الأمازون S3.
  5. في حالة اسم تيار خرطوم الحريق، أدخل اسمًا (لهذه المشاركة ، ProcessDevicePositionFirehose).
    إنشاء تيار خرطوم الإطفاء
  6. قم بتكوين إعدادات الوجهة بتفاصيل حول حاوية S3 التي يتم تخزين بيانات الموقع فيها، بالإضافة إلى استراتيجية التقسيم:
    1. استعمل و لتحديد بادئات الدلو والكائن.
    2. استعمل DeviceId كبادئة إضافية لكتابة الكائنات إلى المجموعة.
  7. تفعيل التقسيم الديناميكي و محدد السطر الجديد للتأكد من أن التقسيم يتم تلقائيًا بناءً على DeviceId، ويتم إضافة محددات الأسطر الجديدة بين السجلات في الكائنات التي يتم تسليمها إلى Amazon S3.

هذه مطلوبة بواسطة AWS Glue للزحف إلى البيانات لاحقًا، ولكي تتعرف Athena على السجلات الفردية.
إعدادات الوجهة لتيار Firehose

أنشئ قاعدة EventBridge وأرفق الأهداف

قاعدة EventBridge ProcessDevicePosition يحدد هدفين: ProcessDevicePosition وظيفة لامدا، و ProcessDevicePositionFirehose تيار التسليم. أكمل الخطوات التالية لإنشاء القاعدة وإرفاق الأهداف:

  1. في وحدة تحكم EventBridge ، قم بإنشاء قاعدة جديدة.
  2. في حالة الاسم، أدخل اسمًا (لهذه المشاركة ، ProcessDevicePosition).
  3. في حالة حافلة الحدثأختر الافتراضي.
  4. في حالة نوع القاعدةتحديد حكم مع نمط الحدث.
    تفاصيل قاعدة EventBridge
  5. في حالة مصدر الحدث، حدد أحداث AWS أو أحداث شركاء EventBridge.
    مصدر الحدث EventBridge
  6. في حالة خدمة التوصيل، حدد استخدم نموذج النمط.
  7. في مجلة نمط الحدث قسم ، حدد خدمات AWS كمصدر، خدمة موقع أمازون كخدمة محددة، و حدث موضع جهاز الموقع كنوع الحدث.
    طريقة إنشاء EventBridge
  8. في حالة الهدف 1، أرفق ProcessDevicePosition وظيفة لامدا كهدف.
    هدف إيفنت بريدج 1
  9. نستخدم محول الإدخال لتخصيص الحدث المخصص لحاوية S3.
    هدف EventBridge 1 محول
  10. ضبط خريطة مسارات الإدخال و قالب الإدخال لتنظيم الحمولة في التنسيق المطلوب.
    1. الكود التالي هو خريطة مسارات الإدخال:
      {
          EventType: $.detail.EventType
          TrackerName: $.detail.TrackerName
          DeviceId: $.detail.DeviceId
          SampleTime: $.detail.SampleTime
          ReceivedTime: $.detail.ReceivedTime
          Longitude: $.detail.Position[0]
          Latitude: $.detail.Position[1]
      }

    2. الكود التالي هو قالب الإدخال:
      {
          "EventType":<EventType>,
          "TrackerName":<TrackerName>,
          "DeviceId":<DeviceId>,
          "SampleTime":<SampleTime>,
          "ReceivedTime":<ReceivedTime>,
          "Position":[<Longitude>, <Latitude>]
      }

  11. في حالة الهدف 2، اختر ال ProcessDevicePositionFirehose تيار التسليم كهدف.
    هدف إيفنت بريدج 2

يتطلب هذا الهدف دور IAM الذي يسمح بكتابة سجل واحد أو عدة سجلات في تدفق تسليم Firehose:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "firehose:PutRecord",
                "firehose:PutRecords"
            ],
            "Resource": [
                "arn:aws:firehose:<region>:<account-id>:deliverystream/<delivery-stream-name>"
            ],
            "Effect": "Allow"
        }
    ]
}

قم بالزحف إلى البيانات وفهرستها باستخدام AWS Glue

بعد إنشاء بيانات كافية، أكمل الخطوات التالية:

  1. في وحدة تحكم AWS Glue ، اختر الزواحف في جزء التنقل.
  2. حدد برامج الزحف التي تم إنشاؤها، location-analytics-glue-crawler-lambda و location-analytics-glue-crawler-firehose.
  3. اختار يجري.

ستقوم برامج الزحف تلقائيًا بتصنيف البيانات إلى تنسيق JSON، وتجميع السجلات في جداول وأقسام، وإرسال البيانات التعريفية المرتبطة إلى كتالوج بيانات AWS Glue.
الزواحف

  1. عندما آخر تشغيل تظهر حالات كلا الزواحف كـ نجح، تأكد من وجود جدولين (lambda و firehose) تم إنشاؤها على طاولات الطعام .

يقوم الحل بتقسيم بيانات الموقع الواردة بناءً على deviceid مجال. لذلك، طالما لم تكن هناك أجهزة جديدة أو تغييرات في المخطط، فلن تحتاج برامج الزحف إلى التشغيل مرة أخرى. ومع ذلك، إذا تمت إضافة أجهزة جديدة، أو تم استخدام حقل مختلف للتقسيم، فستحتاج برامج الزحف إلى التشغيل مرة أخرى.
طاولات الطعام

أنت الآن جاهز للاستعلام عن الجداول باستخدام Athena.

استعلم عن البيانات باستخدام أثينا

Athena عبارة عن خدمة تحليلات تفاعلية بدون خادم تم تصميمها لتحليل البيانات غير المنظمة وشبه المنظمة والمنظمة حيث يتم استضافتها. إذا كانت هذه هي المرة الأولى التي تستخدم فيها وحدة تحكم Athena، اتبع التعليمات لإعداد موقع نتيجة الاستعلام في Amazon S3. للاستعلام عن البيانات باستخدام Athena، أكمل الخطوات التالية:

  1. في وحدة تحكم Athena ، افتح محرر الاستعلام.
  2. في حالة مصدر البيانات، اختر AwsDataCatalog.
  3. في حالة قاعدة البيانات، اختر location-analytics-glue-database.
  4. من قائمة الخيارات (ثلاث نقاط رأسية)، اختر معاينة الجدول للاستعلام عن محتوى كلا الجدولين.
    جدول المعاينة

يعرض الاستعلام 10 نماذج للسجلات الموضعية المخزنة حاليًا في الجدول. لقطة الشاشة التالية هي مثال من معاينة firehose الطاولة. ال firehose يقوم الجدول بتخزين البيانات الأولية غير المعدلة من أداة تعقب الموقع في Amazon.
نتائج الاستعلام
يمكنك الآن تجربة الاستعلامات الجغرافية المكانية ملف GeoJSON لتوسيع ULEZ بلندن لعام 2021 هو جزء من المستودع، وقد تم تحويله بالفعل إلى استعلام متوافق مع جدولي Athena.

  1. انسخ والصق المحتوى من 1-خرطوم-أثينا-ulez-2021-create-view.sql الملف الموجود في examples/firehose مجلد في محرر الاستعلام.

يستخدم هذا الاستعلام الامتداد ST_Within وظيفة جغرافية مكانية لتحديد ما إذا كان الموقع المسجل داخل أو خارج منطقة ULEZ المحددة بواسطة المضلع. عرض جديد يسمى ulezvehicleanalysis_firehose يتم إنشاؤه بعمود جديد، insidezone، والذي يلتقط ما إذا كان الموضع المسجل موجودًا داخل المنطقة.

بايثون بسيطة سهل حياتك يتم توفيره، والذي يحول ميزات المضلع الموجودة في ملف GeoJSON الذي تم تنزيله إلى ST_Polygon سلاسل على أساس تنسيق النص المعروف التي يمكن استخدامها مباشرة في استعلام Athena.

  1. اختار عرض المعاينة على ulezvehicleanalysis_firehose عرض لاستكشاف محتواه.
    معاينة العرض

يمكنك الآن تشغيل الاستعلامات مقابل طريقة العرض هذه للحصول على رؤى شاملة.

  1. انسخ والصق المحتوى من 2-خرطوم-أثينا-أوليز-2021-الاستعلام-أيام-في-zone.sql الملف الموجود في examples/firehose مجلد في محرر الاستعلام.

يحدد هذا الاستعلام إجمالي عدد الأيام التي دخلت فيها كل مركبة ULEZ، وما هي الرسوم الإجمالية المتوقعة. تم تحديد معلمات الاستعلام باستخدام ? حرف نائب. استعلامات المعلمات تسمح لك بإعادة تشغيل نفس الاستعلام بقيم معلمات مختلفة.

  1. أدخل مبلغ الرسوم اليومية ل المعلمة 1، ثم قم بتشغيل الاستعلام.
    محرر الاستعلام

تعرض النتائج كل مركبة، وإجمالي عدد الأيام التي قضتها في ULEZ المقترحة، وإجمالي الرسوم بناءً على الرسوم اليومية التي أدخلتها.
نتائج الاستعلام
يمكنك تكرار هذا التمرين باستخدام lambda طاولة. البيانات في lambda يتم تعزيز الجدول بتفاصيل إضافية للمركبة موجودة في جدول DynamoDB لصيانة المركبات في وقت معالجته بواسطة وظيفة Lambda. الحل يدعم الحقول التالية:

  • MeetsEmissionStandards (قيمة منطقية)
  • Mileage (عدد)
  • PurchaseDate (سلسلة، في YYYY-MM-DD شكل)

يمكنك أيضًا إثراء البيانات الجديدة فور وصولها.

  1. في وحدة تحكم DynamoDB، ابحث عن جدول صيانة المركبات أسفل طاولات الطعام. يتم توفير اسم الجدول كإخراج VehicleMaintenanceDynamoTable في مكدس CloudFormation المنشور.
  2. اختار استكشف عناصر الجدول لعرض محتوى الجدول.
  3. اختار إنشاء العنصر لإنشاء رقم قياسي جديد للمركبة.
    إنشاء العنصر
  4. أدخل DeviceId (مثل vehicle1 كسلسلة)، PurchaseDate (مثل 2005-10-01 كسلسلة)، Mileage (مثل 10000 كرقم)، و MeetsEmissionStandards (بقيمة مثل False كمنطقية).
  5. اختار إنشاء العنصر لإنشاء السجل.
    إنشاء العنصر
  6. قم بتكرار السجل الذي تم إنشاؤه حديثًا مع إدخالات إضافية للمركبات الأخرى (مثل vehicle2 or vehicle3)، مع تعديل قيم السمات قليلاً في كل مرة.
  7. أعد تشغيل ملف location-analytics-glue-crawler-lambda زاحف AWS Glue بعد إنشاء بيانات جديدة للتأكد من تسجيل تحديث المخطط بالحقول الجديدة.
  8. انسخ والصق المحتوى من 1-لامدا-أثينا-أوليز-2021-إنشاء-view.sql الملف الموجود في examples/lambda مجلد في محرر الاستعلام.
  9. معاينة ulezvehicleanalysis_lambda عرض للتأكيد على أنه تم إنشاء الأعمدة الجديدة.

إذا كانت الأخطاء مثل Column 'mileage' cannot be resolved يتم عرضها، أو أن إثراء البيانات لا يحدث، أو أن زاحف AWS Glue لم يكتشف بعد تحديثات للمخطط.

إذا كان خيار معاينة الجدول يقوم فقط بإرجاع النتائج من ما قبل إنشاء السجلات في جدول DynamoDB، قم بإرجاع نتائج الاستعلام بترتيب تنازلي باستخدام sampletime (فمثلا، order by sampletime desc limit 100;).
نتائج الاستعلام
نركز الآن على المركبات التي لا تستوفي حاليًا معايير الانبعاثات، ونرتب المركبات بترتيب تنازلي استنادًا إلى عدد الكيلومترات المقطوعة سنويًا (يتم حسابها باستخدام أحدث عدد أميال / عمر للمركبة بالسنوات).

  1. انسخ والصق المحتوى من 2-لامدا-أثينا-أوليز-2021-استعلام-أيام-في-zone.sql الملف الموجود في examples/lambda مجلد في محرر الاستعلام.
    نتائج الاستعلام

في هذا المثال، يمكننا أن نرى أنه من بين أسطول المركبات لدينا، تم الإبلاغ عن خمس مركبات لا تلبي معايير الانبعاثات. يمكننا أيضًا رؤية المركبات التي قطعت عددًا كبيرًا من الأميال سنويًا، وعدد الأيام التي قضتها في ULEZ المقترحة. قد يقرر مشغل الأسطول الآن إعطاء الأولوية لهذه المركبات للاستبدال. نظرًا لأنه يتم إثراء بيانات الموقع بأحدث بيانات صيانة المركبات في وقت استيعابها، يمكنك تطوير هذه الاستعلامات بشكل أكبر لتعمل خلال نافذة زمنية محددة. على سبيل المثال، يمكنك أن تأخذ في الاعتبار التغيرات في المسافة المقطوعة خلال العام الماضي.

نظرًا للطبيعة الديناميكية لإثراء البيانات، سيتم تغيير أي بيانات جديدة يتم الالتزام بها في Amazon S3، إلى جانب نتائج الاستعلام، عندما يتم تحديث السجلات في جدول صيانة مركبات DynamoDB.

تنظيف

راجع التعليمات الواردة في README ملف لتنظيف الموارد المتوفرة لهذا الحل.

وفي الختام

يوضح هذا المنشور كيف يمكنك استخدام Amazon Location، وEventBridge، وLambda، وAmazon Data Firehose، وAmazon S3 لإنشاء مسار بيانات مدرك للموقع، واستخدام بيانات موقع الجهاز المجمعة لتوجيه الرؤى التحليلية باستخدام AWS Glue وAthena. ومن خلال تتبع هذه الأصول في الوقت الفعلي وتخزين النتائج، يمكن للشركات استخلاص رؤى قيمة حول مدى فعالية استخدام أساطيلها والاستجابة بشكل أفضل للتغيرات في المستقبل. يمكنك الآن استكشاف توسيع نموذج التعليمات البرمجية هذا باستخدام بيانات تتبع جهازك ومتطلبات التحليلات.


حول المؤلف

آلان بيتي هو مهندس حلول الشركاء الأول في AWS. يساعد آلان شركات تكامل الأنظمة العالمية (GSIs) وبائعي البرامج المستقلين العالميين (GISVs) في حل تحديات العملاء المعقدة باستخدام خدمات AWS. قبل انضمامه إلى AWS، عمل آلان كمهندس معماري في شركات تكامل الأنظمة لترجمة متطلبات العمل إلى حلول تقنية. خارج العمل، آلان متحمس لإنترنت الأشياء وعداء متحمس يحب السير في المسارات الموحلة في الريف الإنجليزي.

باراج سريفاستافا هو مهندس حلول في AWS، حيث يساعد عملاء المؤسسات في اعتماد السحابة وترحيلها بنجاح. خلال حياته المهنية، شارك على نطاق واسع في مشاريع التحول الرقمي المعقدة. وهو أيضًا متحمس لبناء حلول مبتكرة حول الجوانب الجغرافية المكانية للعناوين.

بقعة_صورة

أحدث المعلومات الاستخباراتية

بقعة_صورة