Logo Zephyrnet

Nhận thông tin chuyên sâu từ dữ liệu vị trí lịch sử bằng cách sử dụng Dịch vụ vị trí Amazon và dịch vụ phân tích AWS | Dịch vụ web của Amazon

Ngày:

Nhiều tổ chức trên thế giới dựa vào việc sử dụng tài sản vật chất, chẳng hạn như phương tiện, để cung cấp dịch vụ cho khách hàng cuối của họ. Bằng cách theo dõi những tài sản này theo thời gian thực và lưu trữ kết quả, chủ sở hữu tài sản có thể rút ra những hiểu biết có giá trị về cách tài sản của họ đang được sử dụng để liên tục mang lại những cải tiến kinh doanh và lập kế hoạch cho những thay đổi trong tương lai. Ví dụ: một công ty giao hàng vận hành một đội xe có thể cần xác định tác động từ những thay đổi chính sách địa phương nằm ngoài tầm kiểm soát của họ, chẳng hạn như việc mở rộng một cơ sở kinh doanh đã được công bố. Vùng phát thải cực thấp (ULEZ). Bằng cách kết hợp dữ liệu lịch sử vị trí xe với thông tin từ các nguồn khác, công ty có thể đưa ra các phương pháp tiếp cận thực nghiệm để đưa ra quyết định tốt hơn. Ví dụ: nhóm mua sắm của công ty có thể sử dụng thông tin này để đưa ra quyết định về loại xe nào cần ưu tiên thay thế trước khi các thay đổi chính sách có hiệu lực.

Các nhà phát triển có thể sử dụng sự hỗ trợ trong Dịch vụ vị trí của Amazon cho xuất bản cập nhật vị trí thiết bị đến Sự kiện Amazon để xây dựng đường dẫn dữ liệu gần như thời gian thực để lưu trữ vị trí của tài sản được theo dõi trong Dịch vụ lưu trữ đơn giản của Amazon (Amazon S3). Ngoài ra, bạn có thể sử dụng AWS Lambda để làm phong phú thêm dữ liệu vị trí đến bằng dữ liệu từ các nguồn khác, chẳng hạn như Máy phát điện Amazon bảng chứa chi tiết bảo trì xe. Sau đó, nhà phân tích dữ liệu có thể sử dụng khả năng truy vấn không gian địa lý of amazon Athena để có được thông tin chi tiết, chẳng hạn như số ngày phương tiện của họ đã hoạt động trong ranh giới đề xuất của ULEZ mở rộng. Vì các phương tiện không đáp ứng tiêu chuẩn khí thải ULEZ sẽ phải trả phí hàng ngày để vận hành trong khu vực nên bạn có thể sử dụng dữ liệu vị trí cùng với dữ liệu bảo trì như tuổi của xe, quãng đường đã đi hiện tại và tiêu chuẩn khí thải hiện tại để ước tính lượng khí thải công ty sẽ phải chi trả phí hàng ngày.

Bài đăng này cho thấy cách bạn có thể sử dụng Amazon Location, EventBridge, Lambda, Firehose dữ liệu của Amazonvà Amazon S3 để xây dựng đường truyền dữ liệu nhận biết vị trí và sử dụng dữ liệu này để thúc đẩy những hiểu biết có ý nghĩa bằng cách sử dụng Keo AWS và Athena.

Tổng quan về giải pháp

Đây là một giải pháp hoàn toàn không có máy chủ để quản lý tài sản dựa trên vị trí. Giải pháp bao gồm các giao diện sau:

  • IoT hoặc ứng dụng di động – Ứng dụng di động hoặc thiết bị Internet of Things (IoT) cho phép theo dõi phương tiện của công ty khi phương tiện đó đang được sử dụng và truyền vị trí hiện tại của phương tiện đó một cách an toàn đến lớp nhập dữ liệu trong AWS. Cách tiếp cận nhập không nằm trong phạm vi của bài đăng này. Thay vào đó, hàm Lambda trong giải pháp của chúng tôi mô phỏng hành trình xe mẫu và cập nhật trực tiếp các đối tượng theo dõi Vị trí của Amazon với các vị trí ngẫu nhiên.
  • Phân tích dữ liệu – Các nhà phân tích kinh doanh thu thập thông tin chi tiết về hoạt động từ nhiều nguồn dữ liệu, bao gồm cả dữ liệu vị trí được thu thập từ các phương tiện. Các nhà phân tích dữ liệu đang tìm kiếm câu trả lời cho các câu hỏi như: “Trước đây, một phương tiện nhất định đã ở trong khu vực được đề xuất trong bao lâu và chi phí sẽ là bao nhiêu nếu chính sách được áp dụng trong 12 tháng qua?”

Sơ đồ sau minh họa kiến ​​trúc giải pháp.
Sơ đồ kiến ​​trúc

Quy trình làm việc bao gồm các bước chính sau:

  1. Chức năng theo dõi của Amazon Location được sử dụng để theo dõi chiếc xe. Bằng cách sử dụng tích hợp EventBridge, các cập nhật vị trí đã lọc sẽ được xuất bản lên bus sự kiện EventBridge. Giải pháp này sử dụng dựa trên khoảng cách lọc để giảm chi phí và jitter. Tính năng lọc dựa trên khoảng cách bỏ qua các cập nhật vị trí trong đó các thiết bị đã di chuyển dưới 30 mét (98.4 feet).
  2. Sự kiện vị trí thiết bị của Amazon Location sẽ xuất hiện trên EventBridge default xe buýt với source: ["aws.geo"]detail-type: ["Location Device Position Event"]. Một quy tắc được tạo để chuyển tiếp các sự kiện này đến hai mục tiêu hạ nguồn: hàm Lambda và luồng phân phối Firehose.
  3. Hai mẫu khác nhau, dựa trên từng mục tiêu, được mô tả trong bài đăng này để minh họa các cách tiếp cận khác nhau để đưa dữ liệu vào bộ chứa S3:
    1. Hàm Lambda – Cách tiếp cận đầu tiên sử dụng hàm Lambda để minh họa cách bạn có thể sử dụng mã trong đường dẫn dữ liệu để chuyển đổi trực tiếp dữ liệu vị trí đến. Bạn có thể sửa đổi hàm Lambda để tìm nạp thêm thông tin về xe từ một kho dữ liệu riêng biệt (ví dụ: bảng DynamoDB hoặc hệ thống Quản lý quan hệ khách hàng) nhằm làm phong phú dữ liệu trước khi lưu trữ kết quả vào bộ chứa S3. Trong mô hình này, hàm Lambda được gọi cho mỗi sự kiện đến.
    2. Luồng phân phối Firehose – Cách tiếp cận thứ hai sử dụng luồng phân phối Firehose để đệm và xử lý các bản cập nhật vị trí đến theo nhóm trước khi lưu trữ chúng vào bộ chứa S3 mà không sửa đổi. Phương pháp này sử dụng tính năng nén GZIP để tối ưu hóa mức tiêu thụ bộ nhớ và hiệu suất truy vấn. Bạn cũng có thể sử dụng chuyển đổi dữ liệu tính năng của Data Firehose để gọi hàm Lambda nhằm thực hiện chuyển đổi dữ liệu theo lô.
  4. AWS Glue thu thập dữ liệu cả hai đường dẫn bộ chứa S3, điền vào các bảng cơ sở dữ liệu AWS Glue dựa trên các lược đồ được suy luận và cung cấp dữ liệu cho các ứng dụng phân tích khác thông qua Danh mục dữ liệu AWS Glue.
  5. Athena được sử dụng để chạy các truy vấn không gian địa lý trên dữ liệu vị trí được lưu trữ trong nhóm S3. Danh mục dữ liệu cung cấp siêu dữ liệu cho phép các ứng dụng phân tích sử dụng Athena tìm, đọc và xử lý dữ liệu vị trí được lưu trữ trong Amazon S3.
  6. Giải pháp này bao gồm chức năng Lambda liên tục cập nhật trình theo dõi Vị trí của Amazon với dữ liệu vị trí được mô phỏng từ các hành trình hư cấu. Hàm Lambda được kích hoạt định kỳ bằng quy tắc EventBridge đã lên lịch.

Bạn có thể tự mình kiểm tra giải pháp này bằng cách sử dụng Kho lưu trữ GitHub mẫu AWS. Kho lưu trữ chứa Mô hình ứng dụng không có máy chủ AWS Cần có mẫu (AWS SAM) và mã Lambda để thử giải pháp này. Tham khảo hướng dẫn trong README tệp để biết các bước về cách cung cấp và ngừng hoạt động giải pháp này.

Bố cục trực quan trong một số ảnh chụp màn hình trong bài đăng này có thể trông khác với bố cục trên Bảng điều khiển quản lý AWS.

Tạo dữ liệu

Trong phần này, chúng tôi thảo luận về các bước để tạo dữ liệu hành trình theo cách thủ công hoặc tự động.

Tạo dữ liệu hành trình theo cách thủ công

Bạn có thể cập nhật vị trí thiết bị theo cách thủ công bằng cách sử dụng Giao diện dòng lệnh AWS Lệnh (AWS CLI) aws location batch-update-device-position. Thay thế cái tracker-name, device-id, PositionSampleTime bằng giá trị của riêng bạn và đảm bảo rằng các lần cập nhật liên tiếp cách nhau hơn 30 mét để đặt sự kiện trên default Xe buýt sự kiện EventBridge:

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

Tự động tạo dữ liệu hành trình bằng trình mô phỏng

Cung cấp Hình thành đám mây AWS mẫu triển khai quy tắc theo lịch trình EventBridge và chức năng Lambda đi kèm mô phỏng các cập nhật theo dõi từ phương tiện. Quy tắc này được bật theo mặc định và chạy ở tần suất được chỉ định bởi SimulationIntervalMinutes Tham số CloudFormation. Chức năng Lambda tạo dữ liệu cập nhật trình theo dõi Vị trí của Amazon với vị trí ngẫu nhiên được bù đắp từ vị trí cơ sở của xe.

Tên xe và vị trí cơ sở được lưu trữ trong xe cộ.json tài liệu. Vị trí xuất phát của phương tiện được đặt lại mỗi ngày và các vị trí cơ sở đã được chọn để giúp chúng có khả năng di chuyển vào và ra khỏi ULEZ vào một ngày nhất định nhằm cung cấp mô phỏng hành trình thực tế.

Bạn có thể vô hiệu hóa quy tắc tạm thời bằng cách điều hướng đến chi tiết quy tắc đã lên lịch trên bảng điều khiển EventBridge. Ngoài ra, thay đổi tham số State: ENABLED đến State: DISABLED đối với tài nguyên quy tắc đã lên lịch GenerateDevicePositionsScheduleRule trong mẫu.yml tài liệu. Xây dựng lại và triển khai lại mẫu AWS SAM để thay đổi này có hiệu lực.

Phương pháp tiếp cận đường ống dữ liệu vị trí

Các cấu hình nêu trong phần này được triển khai tự động theo mẫu AWS SAM được cung cấp. Thông tin trong phần này được cung cấp để mô tả các phần thích hợp của giải pháp.

Sự kiện định vị thiết bị vị trí Amazon

Vị trí Amazon gửi các sự kiện cập nhật vị trí thiết bị tới EventBridge theo định dạng sau:

{
    "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>
	]
    }
}

Bạn có thể tùy ý chỉ định một chuyển đổi đầu vào để sửa đổi định dạng và nội dung của dữ liệu sự kiện vị trí thiết bị trước khi nó đến được mục tiêu.

Làm giàu dữ liệu bằng Lambda

Việc làm giàu dữ liệu trong mẫu này được hỗ trợ thông qua việc gọi hàm Lambda. Trong ví dụ này, chúng tôi gọi hàm này ProcessDevicePositionvà sử dụng thời gian chạy Python. Một chuyển đổi tùy chỉnh được áp dụng trong định nghĩa mục tiêu EventBridge để nhận dữ liệu sự kiện ở định dạng sau:

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

Bạn có thể áp dụng các phép biến đổi bổ sung, chẳng hạn như tái cấu trúc LatitudeLongitude dữ liệu thành các cặp khóa-giá trị riêng biệt nếu điều này được yêu cầu bởi logic nghiệp vụ hạ nguồn xử lý các sự kiện.

Đoạn mã sau minh họa logic ứng dụng Python được điều hành bởi ProcessDevicePosition Hàm Lambda. Việc xử lý lỗi đã được bỏ qua trong đoạn mã này để cho ngắn gọn. Mã đầy đủ có sẵn trong Repo GitHub.

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"
    }

Mã trước tạo đối tượng S3 cho từng sự kiện vị trí thiết bị mà EventBridge nhận được. Mã này sử dụng DeviceId làm tiền tố để ghi các đối tượng vào nhóm.

Bạn có thể thêm logic bổ sung vào mã hàm Lambda trước đó để làm phong phú thêm dữ liệu sự kiện bằng các nguồn khác. Ví dụ trong Repo GitHub minh họa việc làm phong phú thêm sự kiện bằng dữ liệu từ bảng bảo trì phương tiện DynamoDB.

Ngoài điều kiện tiên quyết Quản lý truy cập và nhận dạng AWS (IAM) quyền do vai trò cung cấp AWSBasicLambdaExecutionRole, Các ProcessDevicePosition chức năng yêu cầu quyền để thực hiện S3 put_object hành động và bất kỳ hành động nào khác được yêu cầu bởi logic làm giàu dữ liệu. Các quyền IAM mà giải pháp yêu cầu được ghi lại trong mẫu.yml tập tin.

{
    "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"
        }
    ]
}

Đường dẫn dữ liệu sử dụng Amazon Data Firehose

Hoàn thành các bước sau để tạo luồng phân phối Firehose của bạn:

  1. Trên bảng điều khiển Amazon Data Firehose, chọn Suối vòi rồng trong khung điều hướng.
  2. Chọn Tạo luồng Firehose.
  3. Trong nguồn, chọn như PUT trực tiếp.
  4. Trong Nơi đến, chọn Amazon S3.
  5. Trong Tên luồng Firehose, nhập tên (cho bài đăng này, ProcessDevicePositionFirehose).
    Tạo luồng Firehose
  6. Định cấu hình cài đặt đích với thông tin chi tiết về nhóm S3 nơi lưu trữ dữ liệu vị trí, cùng với chiến lược phân vùng:
    1. Sử dụng để xác định tiền tố nhóm và đối tượng.
    2. Sử dụng DeviceId làm tiền tố bổ sung để ghi các đối tượng vào nhóm.
  7. Kích hoạt tính năng phân vùng độngDấu phân cách dòng mới để đảm bảo việc phân vùng được thực hiện tự động dựa trên DeviceIdvà các dấu phân cách dòng mới sẽ được thêm vào giữa các bản ghi trong đối tượng được phân phối tới Amazon S3.

Những điều này được AWS Glue yêu cầu để thu thập dữ liệu sau này và để Athena nhận ra từng bản ghi riêng lẻ.
Cài đặt đích cho luồng Firehose

Tạo quy tắc EventBridge và đính kèm mục tiêu

Quy tắc EventBridge ProcessDevicePosition xác định hai mục tiêu: ProcessDevicePosition Hàm Lambda và ProcessDevicePositionFirehose luồng giao hàng. Hoàn thành các bước sau để tạo quy tắc và đính kèm mục tiêu:

  1. Trên bảng điều khiển EventBridge, hãy tạo một quy tắc mới.
  2. Trong Họ tên, nhập tên (cho bài đăng này, ProcessDevicePosition).
  3. Trong xe buýt sự kiệnchọn mặc định.
  4. Trong Loại quy tắclựa chọn Quy tắc có mẫu sự kiện.
    Chi tiết quy tắc EventBridge
  5. Trong Nguồn sự kiện, lựa chọn Sự kiện AWS hoặc sự kiện của đối tác EventBridge.
    Nguồn sự kiện EventBridge
  6. Trong Phương pháp, lựa chọn Sử dụng mẫu hình.
  7. Trong tạp chí mẫu sự kiện phần, chỉ định Dịch vụ AWS như nguồn, Dịch vụ vị trí của Amazon là dịch vụ cụ thể và Vị trí Vị trí thiết bị Sự kiện như loại sự kiện.
    Phương pháp tạo EventBridge
  8. Trong Mục tiêu 1, đính kèm ProcessDevicePosition Lambda hoạt động như một mục tiêu.
    Mục tiêu EventBridge 1
  9. Chúng tôi sử dụng Biến áp đầu vào để tùy chỉnh sự kiện được cam kết với bộ chứa S3.
    Máy biến áp mục tiêu EventBridge 1
  10. Thiết lập Bản đồ đường dẫn đầu vàoMẫu đầu vào để tổ chức tải trọng thành định dạng mong muốn.
    1. Đoạn mã sau là bản đồ đường dẫn đầu vào:
      {
          EventType: $.detail.EventType
          TrackerName: $.detail.TrackerName
          DeviceId: $.detail.DeviceId
          SampleTime: $.detail.SampleTime
          ReceivedTime: $.detail.ReceivedTime
          Longitude: $.detail.Position[0]
          Latitude: $.detail.Position[1]
      }

    2. Đoạn mã sau là mẫu đầu vào:
      {
          "EventType":<EventType>,
          "TrackerName":<TrackerName>,
          "DeviceId":<DeviceId>,
          "SampleTime":<SampleTime>,
          "ReceivedTime":<ReceivedTime>,
          "Position":[<Longitude>, <Latitude>]
      }

  11. Trong Mục tiêu 2, chọn ProcessDevicePositionFirehose luồng phân phối làm mục tiêu.
    Mục tiêu EventBridge 2

Mục tiêu này yêu cầu vai trò IAM cho phép ghi một hoặc nhiều bản ghi vào luồng phân phối Firehose:

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

Thu thập dữ liệu và lập danh mục dữ liệu bằng AWS Glue

Sau khi đã tạo đủ dữ liệu, hãy hoàn tất các bước sau:

  1. Trên bảng điều khiển AWS Glue, hãy chọn Trình thu thập thông tin trong khung điều hướng.
  2. Chọn các trình thu thập thông tin đã được tạo, location-analytics-glue-crawler-lambdalocation-analytics-glue-crawler-firehose.
  3. Chọn chạy.

Trình thu thập thông tin sẽ tự động phân loại dữ liệu thành định dạng JSON, nhóm các bản ghi thành các bảng và phân vùng, đồng thời đưa siêu dữ liệu liên quan vào Danh mục dữ liệu AWS Glue.
Trình thu thập thông tin

  1. Khi Lần chạy cuối cùng trạng thái của cả hai trình thu thập thông tin hiển thị là Kế nhiệm, xác nhận rằng hai bảng (lambdafirehose) đã được tạo trên Bàn .

Giải pháp phân vùng dữ liệu vị trí đến dựa trên deviceid cánh đồng. Do đó, miễn là không có thiết bị mới hoặc thay đổi lược đồ nào thì trình thu thập thông tin không cần phải chạy lại. Tuy nhiên, nếu thiết bị mới được thêm vào hoặc một trường khác được sử dụng để phân vùng thì trình thu thập thông tin cần phải chạy lại.
Bàn

Bây giờ bạn đã sẵn sàng truy vấn các bảng bằng Athena.

Truy vấn dữ liệu bằng Athena

Athena là một dịch vụ phân tích tương tác, không có máy chủ được xây dựng để phân tích dữ liệu phi cấu trúc, bán cấu trúc và có cấu trúc nơi dữ liệu được lưu trữ. Nếu đây là lần đầu tiên bạn sử dụng bảng điều khiển Athena, làm theo chỉ dẫn để thiết lập vị trí kết quả truy vấn trong Amazon S3. Để truy vấn dữ liệu bằng Athena, hãy hoàn thành các bước sau:

  1. Trên bảng điều khiển Athena, mở trình chỉnh sửa truy vấn.
  2. Trong Nguồn dữ liệu, chọn AwsDataCatalog.
  3. Trong Cơ sở dữ liệu, chọn location-analytics-glue-database.
  4. Trên menu tùy chọn (ba dấu chấm dọc), chọn Bảng xem trước để truy vấn nội dung của cả hai bảng.
    Xem trước bảng

Truy vấn hiển thị 10 bản ghi vị trí mẫu hiện được lưu trữ trong bảng. Ảnh chụp màn hình sau đây là một ví dụ từ việc xem trước firehose bàn. Các firehose bảng lưu trữ dữ liệu thô, chưa sửa đổi từ trình theo dõi Vị trí của Amazon.
Kết quả truy vấn
Bây giờ bạn có thể thử nghiệm các truy vấn không gian địa lý. Tệp GeoJSON cho bản mở rộng ULEZ London 2021 là một phần của kho lưu trữ và đã được chuyển đổi thành truy vấn tương thích với cả hai bảng Athena.

  1. Sao chép và dán nội dung từ 1-firehose-athena-ulez-2021-create-view.sql tệp được tìm thấy trong examples/firehose thư mục vào trình soạn thảo truy vấn.

Truy vấn này sử dụng ST_Within chức năng không gian địa lý để xác định xem vị trí được ghi nằm trong hay ngoài vùng ULEZ được xác định bởi đa giác. Một chế độ xem mới được gọi là ulezvehicleanalysis_firehose được tạo bằng một cột mới, insidezone, ghi lại liệu vị trí đã ghi có tồn tại trong vùng hay không.

Python đơn giản tiện ích được cung cấp, nó chuyển đổi các tính năng đa giác được tìm thấy trong tệp GeoJSON đã tải xuống thành ST_Polygon chuỗi dựa trên định dạng văn bản phổ biến có thể được sử dụng trực tiếp trong truy vấn Athena.

  1. Chọn Xem trước Xem trước trên ulezvehicleanalysis_firehose view để khám phá nội dung của nó.
    Xem trước chế độ xem

Bây giờ bạn có thể chạy truy vấn đối với chế độ xem này để có được thông tin chi tiết tổng thể.

  1. Sao chép và dán nội dung từ 2-firehose-athena-ulez-2021-query-days-in-zone.sql tệp được tìm thấy trong examples/firehose thư mục vào trình soạn thảo truy vấn.

Truy vấn này thiết lập tổng số ngày mỗi phương tiện đã vào ULEZ và tổng chi phí dự kiến ​​sẽ là bao nhiêu. Truy vấn đã được tham số hóa bằng cách sử dụng ? ký tự giữ chỗ. Truy vấn được tham số hóa cho phép bạn chạy lại cùng một truy vấn với các giá trị tham số khác nhau.

  1. Nhập số tiền phí hàng ngày cho Thông số 1, sau đó chạy truy vấn.
    Trình chỉnh sửa truy vấn

Kết quả hiển thị từng phương tiện, tổng số ngày sử dụng trong ULEZ được đề xuất và tổng chi phí dựa trên phí hàng ngày bạn đã nhập.
Kết quả truy vấn
Bạn có thể lặp lại bài tập này bằng cách sử dụng lambda bàn. Dữ liệu trong lambda bảng được tăng cường bằng các chi tiết bổ sung về xe có trong bảng DynamoDB bảo trì xe tại thời điểm bảng này được xử lý bằng hàm Lambda. Giải pháp hỗ trợ các trường sau:

  • MeetsEmissionStandards (Boolean)
  • Mileage (Con số)
  • PurchaseDate (Chuỗi, trong YYYY-MM-DD định dạng)

Bạn cũng có thể làm phong phú thêm dữ liệu mới khi nó xuất hiện.

  1. Trên bảng điều khiển DynamoDB, hãy tìm bảng bảo trì phương tiện trong Bàn. Tên bảng được cung cấp dưới dạng đầu ra VehicleMaintenanceDynamoTable trong ngăn xếp CloudFormation đã triển khai.
  2. Chọn Khám phá các mục bảng để xem nội dung của bảng.
  3. Chọn Tạo mặt hàng để tạo ra một kỷ lục mới cho một chiếc xe.
    Tạo mặt hàng
  4. đăng ký hạng mục thi DeviceId (Chẳng hạn như vehicle1 dưới dạng Chuỗi), PurchaseDate (Chẳng hạn như 2005-10-01 dưới dạng Chuỗi), Mileage (Chẳng hạn như 10000 dưới dạng số) và MeetsEmissionStandards (có giá trị như False như Boolean).
  5. Chọn Tạo mặt hàng để tạo bản ghi.
    Tạo mặt hàng
  6. Sao chép bản ghi mới tạo với các mục bổ sung cho các phương tiện khác (chẳng hạn như đối với vehicle2 or vehicle3), mỗi lần sửa đổi một chút giá trị của các thuộc tính.
  7. Chạy lại location-analytics-glue-crawler-lambda Trình thu thập thông tin AWS Glue sau khi dữ liệu mới được tạo để xác nhận rằng bản cập nhật lược đồ với các trường mới đã được đăng ký.
  8. Sao chép và dán nội dung từ 1-lambda-athena-ulez-2021-create-view.sql tệp được tìm thấy trong examples/lambda thư mục vào trình soạn thảo truy vấn.
  9. Xem trước ulezvehicleanalysis_lambda view để xác nhận rằng các cột mới đã được tạo.

Nếu có lỗi như Column 'mileage' cannot be resolved được hiển thị, quá trình làm giàu dữ liệu không diễn ra hoặc trình thu thập thông tin AWS Glue chưa phát hiện thấy các bản cập nhật cho lược đồ.

Nếu Tùy chọn bảng xem trước chỉ trả về kết quả từ trước khi bạn tạo bản ghi trong bảng DynamoDB, trả về kết quả truy vấn theo thứ tự giảm dần bằng cách sử dụng sampletime (ví dụ, order by sampletime desc limit 100;).
Kết quả truy vấn
Bây giờ chúng tôi tập trung vào những phương tiện hiện không đáp ứng tiêu chuẩn khí thải và sắp xếp các phương tiện theo thứ tự giảm dần dựa trên số km đã đi mỗi năm (được tính bằng số km/tuổi mới nhất của xe tính theo năm).

  1. Sao chép và dán nội dung từ 2-lambda-athena-ulez-2021-query-days-in-zone.sql tệp được tìm thấy trong examples/lambda thư mục vào trình soạn thảo truy vấn.
    Kết quả truy vấn

Trong ví dụ này, chúng ta có thể thấy rằng trong số các phương tiện của mình, có 5 phương tiện được báo cáo là không đáp ứng các tiêu chuẩn về khí thải. Chúng ta cũng có thể thấy các phương tiện đã tích lũy được số km đi được nhiều mỗi năm và số ngày sử dụng trong ULEZ được đề xuất. Bây giờ, nhà điều hành đội xe có thể quyết định ưu tiên thay thế những phương tiện này. Vì dữ liệu vị trí được bổ sung thêm dữ liệu bảo dưỡng xe cập nhật nhất tại thời điểm nhập dữ liệu nên bạn có thể phát triển thêm các truy vấn này để chạy trong một khoảng thời gian xác định. Ví dụ: bạn có thể tính đến những thay đổi về số dặm trong năm qua.

Do tính chất động của việc làm giàu dữ liệu, mọi dữ liệu mới được chuyển giao cho Amazon S3, cùng với kết quả truy vấn, sẽ bị thay đổi khi các bản ghi được cập nhật trong bảng bảo trì phương tiện DynamoDB.

Làm sạch

Tham khảo hướng dẫn trong README file để dọn sạch các tài nguyên được cung cấp cho giải pháp này.

Kết luận

Bài đăng này trình bày cách bạn có thể sử dụng Amazon Location, EventBridge, Lambda, Amazon Data Firehose và Amazon S3 để xây dựng đường truyền dữ liệu nhận biết vị trí và sử dụng dữ liệu vị trí thiết bị được thu thập để thúc đẩy phân tích chuyên sâu bằng AWS Glue và Athena. Bằng cách theo dõi các tài sản này theo thời gian thực và lưu trữ kết quả, các công ty có thể rút ra những hiểu biết có giá trị về mức độ hiệu quả mà đội xe của họ đang được sử dụng và phản ứng tốt hơn với những thay đổi trong tương lai. Bây giờ bạn có thể khám phá việc mở rộng mã mẫu này với các yêu cầu phân tích và dữ liệu theo dõi thiết bị của riêng bạn.


Về các tác giả

Alan Peaty là Kiến trúc sư giải pháp đối tác cấp cao tại AWS. Alan giúp Nhà tích hợp hệ thống toàn cầu (GSI) và Nhà cung cấp phần mềm độc lập toàn cầu (GISV) giải quyết những thách thức phức tạp của khách hàng bằng cách sử dụng dịch vụ AWS. Trước khi gia nhập AWS, Alan từng làm kiến ​​trúc sư tại các nhà tích hợp hệ thống để chuyển các yêu cầu kinh doanh thành các giải pháp kỹ thuật. Ngoài công việc, Alan là một người đam mê IoT và là một người đam mê chạy bộ, thích vượt qua những con đường mòn lầy lội ở vùng nông thôn nước Anh.

Đoạn Srivastava là Kiến trúc sư giải pháp tại AWS, giúp khách hàng doanh nghiệp áp dụng và di chuyển đám mây thành công. Trong sự nghiệp chuyên môn của mình, anh đã tham gia nhiều vào các dự án chuyển đổi kỹ thuật số phức tạp. Anh ấy cũng đam mê xây dựng các giải pháp sáng tạo xung quanh các khía cạnh không gian địa lý của địa chỉ.

tại chỗ_img

Tin tức mới nhất

tại chỗ_img