Zephyrnet-logo

Krijg inzichten uit historische locatiegegevens met behulp van Amazon Location Service en AWS-analysediensten | Amazon-webservices

Datum:

Veel organisaties over de hele wereld zijn afhankelijk van het gebruik van fysieke middelen, zoals voertuigen, om een ​​dienst aan hun eindklanten te leveren. Door deze assets in realtime te volgen en de resultaten op te slaan, kunnen asset-eigenaren waardevolle inzichten verkrijgen over hoe hun assets worden gebruikt om voortdurend bedrijfsverbeteringen te realiseren en toekomstige veranderingen te plannen. Een bezorgbedrijf dat een wagenpark beheert, moet bijvoorbeeld mogelijk de impact vaststellen van lokale beleidswijzigingen die buiten hun macht liggen, zoals de aangekondigde uitbreiding van een Ultra-lage-emissiezone (ULEZ). Door historische voertuiglocatiegegevens te combineren met informatie uit andere bronnen, kan het bedrijf empirische benaderingen bedenken voor betere besluitvorming. Het inkoopteam van het bedrijf kan deze informatie bijvoorbeeld gebruiken om beslissingen te nemen over welke voertuigen prioriteit moeten krijgen bij vervanging voordat beleidswijzigingen van kracht worden.

Ontwikkelaars kunnen de ondersteuning gebruiken in Amazon-locatieservice For updates van de apparaatpositie publiceren naar Amazon EventBridge om een ​​bijna realtime datapijplijn te bouwen waarin locaties van gevolgde activa worden opgeslagen Amazon eenvoudige opslagservice (Amazone S3). Bovendien kunt u gebruik maken van AWS Lambda om binnenkomende locatiegegevens te verrijken met gegevens uit andere bronnen, zoals een Amazon DynamoDB tabel met onderhoudsgegevens van het voertuig. Dan kan een data-analist gebruik maken van de mogelijkheden voor geospatiale zoekopdrachten of Amazone Athene om inzichten te verkrijgen, zoals het aantal dagen dat hun voertuigen binnen de voorgestelde grenzen van een uitgebreide ULEZ hebben gereden. Omdat voertuigen die niet voldoen aan de ULEZ-emissienormen een dagelijkse heffing moeten betalen om binnen de zone te mogen rijden, kunt u de locatiegegevens gebruiken, samen met onderhoudsgegevens zoals de leeftijd van het voertuig, de huidige kilometerstand en de huidige emissienormen om de hoeveelheid te schatten. het bedrijf zou moeten uitgeven aan dagelijkse vergoedingen.

Dit bericht laat zien hoe je Amazon Location, EventBridge, Lambda, Amazon Data-brandslang, en Amazon S3 om een ​​locatiebewuste datapijplijn op te bouwen, en deze data te gebruiken om betekenisvolle inzichten te genereren AWS lijm en Athene.

Overzicht van de oplossing

Dit is een volledig serverloze oplossing voor locatiegebaseerd assetbeheer. De oplossing bestaat uit de volgende interfaces:

  • IoT of mobiele applicatie – Een mobiele applicatie of een Internet of Things (IoT)-apparaat maakt het mogelijk een bedrijfsvoertuig te volgen terwijl het in gebruik is en verzendt de huidige locatie veilig naar de gegevensopnamelaag in AWS. De innamebenadering valt niet binnen de reikwijdte van dit bericht. In plaats daarvan simuleert een Lambda-functie in onze oplossing voorbeeldvoertuigritten en werkt Amazon Location tracker-objecten rechtstreeks bij met willekeurige locaties.
  • Data analytics – Bedrijfsanalisten verzamelen operationele inzichten uit meerdere gegevensbronnen, inclusief de locatiegegevens die van de voertuigen zijn verzameld. Data-analisten zijn op zoek naar antwoorden op vragen als: “Hoe lang heeft een bepaald voertuig historisch gezien binnen een voorgestelde zone doorgebracht, en hoeveel zouden de kosten hebben gekost als het beleid de afgelopen twaalf maanden van kracht was geweest?”

Het volgende diagram illustreert de oplossingsarchitectuur.
Architectuur diagram

De workflow bestaat uit de volgende belangrijke stappen:

  1. De trackingfunctionaliteit van Amazon Location wordt gebruikt om het voertuig te volgen. Met behulp van EventBridge-integratie worden gefilterde positionele updates gepubliceerd naar een EventBridge-gebeurtenisbus. Deze oplossing maakt gebruik van op afstand gebaseerd filtering om kosten en jitter te verminderen. Op afstand gebaseerde filtering negeert locatie-updates waarin apparaten zich minder dan 30 meter (98.4 voet) hebben verplaatst.
  2. Positiegebeurtenissen van Amazon Location-apparaten arriveren op de EventBridge default busje mee source: ["aws.geo"] en detail-type: ["Location Device Position Event"]. Er wordt één regel gemaakt om deze gebeurtenissen door te sturen naar twee stroomafwaartse doelen: een Lambda-functie en een Firehose-leveringsstroom.
  3. In dit bericht worden twee verschillende patronen beschreven, gebaseerd op elk doel, om verschillende benaderingen te demonstreren voor het vastleggen van de gegevens in een S3-bucket:
    1. Lambda-functie – De eerste benadering maakt gebruik van een Lambda-functie om te demonstreren hoe u code in de datapijplijn kunt gebruiken om de binnenkomende locatiegegevens rechtstreeks te transformeren. U kunt de Lambda-functie aanpassen om aanvullende voertuiginformatie op te halen uit een afzonderlijke gegevensopslag (bijvoorbeeld een DynamoDB-tabel of een Customer Relationship Management-systeem) om de gegevens te verrijken, voordat u de resultaten opslaat in een S3-bucket. In dit model wordt voor elke binnenkomende gebeurtenis de Lambda-functie aangeroepen.
    2. Leveringsstroom voor brandslangen – De tweede benadering maakt gebruik van een Firehose-leveringsstroom om de binnenkomende positionele updates te bufferen en in batches op te slaan, voordat ze zonder aanpassingen in een S3-bucket worden opgeslagen. Deze methode maakt gebruik van GZIP-compressie om het opslagverbruik en de queryprestaties te optimaliseren. Je kunt ook gebruik maken van de data transformatie functie van Data Firehose om een ​​Lambda-functie aan te roepen om gegevenstransformatie in batches uit te voeren.
  4. AWS Glue doorzoekt beide S3-bucketpaden, vult de AWS Glue-databasetabellen in op basis van de afgeleide schema's en maakt de gegevens beschikbaar voor andere analysetoepassingen via de AWS Glue Data Catalog.
  5. Athena wordt gebruikt om georuimtelijke zoekopdrachten uit te voeren op de locatiegegevens die zijn opgeslagen in de S3-buckets. De Data Catalog biedt metadata waarmee analysetoepassingen die Athena gebruiken de locatiegegevens die zijn opgeslagen in Amazon S3 kunnen vinden, lezen en verwerken.
  6. Deze oplossing bevat een Lambda-functie die de Amazon Location tracker continu updatet met gesimuleerde locatiegegevens van fictieve ritten. De Lambda-functie wordt met regelmatige tussenpozen geactiveerd met behulp van een geplande EventBridge-regel.

U kunt deze oplossing zelf testen met behulp van de AWS-voorbeelden GitHub-repository. De repository bevat de AWS serverloos toepassingsmodel (AWS SAM)-sjabloon en Lambda-code vereist om deze oplossing uit te proberen. Raadpleeg de instructies in de README -bestand met stappen voor het inrichten en buiten gebruik stellen van deze oplossing.

Visuele lay-outs in sommige schermafbeeldingen in dit bericht kunnen er anders uitzien dan die op jouw scherm AWS-beheerconsole.

Gegevensgeneratie

In deze paragraaf bespreken we de stappen om handmatig of automatisch ritgegevens te genereren.

Genereer handmatig ritgegevens

U kunt de apparaatposities handmatig bijwerken met behulp van de AWS-opdrachtregelinterface (AWS CLI)-opdracht aws location batch-update-device-position. Vervang de tracker-name, device-id, Position en SampleTime waarden met die van u, en zorg ervoor dat opeenvolgende updates meer dan 30 meter uit elkaar liggen om een ​​evenement op de website te plaatsen default EventBridge evenementenbus:

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

Genereer automatisch ritgegevens met behulp van de simulator

de verstrekte AWS CloudFormatie sjabloon implementeert een geplande EventBridge-regel en een bijbehorende Lambda-functie die trackerupdates van voertuigen simuleert. Deze regel is standaard ingeschakeld en wordt uitgevoerd met een frequentie die is opgegeven door de SimulationIntervalMinutes CloudFormation-parameter. De Lambda-functie voor het genereren van gegevens werkt de Amazon Location tracker bij met een willekeurige positieafwijking ten opzichte van de basislocaties van de voertuigen.

Voertuignamen en basislocaties worden opgeslagen in de voertuigen.json bestand. De startpositie van een voertuig wordt elke dag opnieuw ingesteld en de basislocaties zijn gekozen om ze de mogelijkheid te geven om op een bepaalde dag de ULEZ in en uit te drijven om een ​​realistische reissimulatie te bieden.

Je kunt schakel de regel uit tijdelijk door naar de geplande regeldetails op de EventBridge-console te navigeren. U kunt ook de parameter wijzigen State: ENABLED naar State: DISABLED voor de geplande regelbron GenerateDevicePositionsScheduleRule in de sjabloon.yml bestand. Bouw de AWS SAM-sjabloon opnieuw op en implementeer deze opnieuw om deze wijziging door te voeren.

Locatiegegevenspijplijnbenaderingen

De configuraties die in deze sectie worden beschreven, worden automatisch geïmplementeerd door de meegeleverde AWS SAM-sjabloon. De informatie in deze sectie wordt verstrekt om de relevante onderdelen van de oplossing te beschrijven.

Amazon Locatie-apparaatpositiegebeurtenissen

Amazon Location verzendt update-gebeurtenissen voor de apparaatpositie naar EventBridge in het volgende formaat:

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

Optioneel kunt u een invoertransformatie om het formaat en de inhoud van de apparaatpositiegebeurtenisgegevens te wijzigen voordat deze het doel bereiken.

Dataverrijking met Lambda

Gegevensverrijking in dit patroon wordt mogelijk gemaakt door het aanroepen van een Lambda-functie. In dit voorbeeld noemen we deze functie ProcessDevicePositionen gebruik een Python-runtime. Er wordt een aangepaste transformatie toegepast in de EventBridge-doeldefinitie om de gebeurtenisgegevens in de volgende indeling te ontvangen:

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

U kunt aanvullende transformaties toepassen, zoals het refactoren van Latitude en Longitude gegevens in afzonderlijke sleutel-waardeparen als dit vereist is door de downstream bedrijfslogica die de gebeurtenissen verwerkt.

De volgende code demonstreert de Python-toepassingslogica die wordt uitgevoerd door de ProcessDevicePosition Lambda-functie. Omwille van de beknoptheid is de foutafhandeling in dit codefragment overgeslagen. De volledige code is beschikbaar in de GitHub repo.

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

De voorgaande code maakt een S3-object voor elke apparaatpositiegebeurtenis die door EventBridge wordt ontvangen. De code maakt gebruik van de DeviceId als voorvoegsel om de objecten naar de bucket te schrijven.

U kunt extra logica toevoegen aan de voorgaande Lambda-functiecode om de gebeurtenisgegevens te verrijken met behulp van andere bronnen. Het voorbeeld in de GitHub repo demonstreert het verrijken van het evenement met gegevens uit een DynamoDB-voertuigonderhoudstabel.

Naast de voorwaarde AWS Identiteits- en toegangsbeheer (IAM)-machtigingen die door de rol worden verstrekt AWSBasicLambdaExecutionRole ProcessDevicePosition functie vereist machtigingen om de S3 uit te voeren put_object actie en alle andere acties die vereist zijn door de gegevensverrijkingslogica. IAM-machtigingen die voor de oplossing vereist zijn, worden gedocumenteerd in de sjabloon.yml bestand.

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

Datapijplijn met behulp van Amazon Data Firehose

Voer de volgende stappen uit om uw Firehose-bezorgstroom aan te maken:

  1. Kies op de Amazon Data Firehose-console Brandslang stromen in het navigatievenster.
  2. Kies Maak een Firehose-stream.
  3. Voor bron, kies als Directe PUT.
  4. Voor Bestemming, kiezen Amazon S3.
  5. Voor Firehose-streamnaam, voer een naam in (voor dit bericht, ProcessDevicePositionFirehose).
    Maak een Firehose-stream
  6. Configureer de bestemmingsinstellingen met details over de S3-bucket waarin de locatiegegevens zijn opgeslagen, samen met de partitiestrategie:
    1. Te gebruiken en om de bucket- en objectvoorvoegsels te bepalen.
    2. Te gebruiken DeviceId als extra voorvoegsel om de objecten naar de bucket te schrijven.
  7. Enable Dynamische partitie en Nieuw regelscheidingsteken om ervoor te zorgen dat het partitioneren automatisch gebeurt op basis van DeviceId, en dat er nieuwe regelscheidingstekens worden toegevoegd tussen records in objecten die worden afgeleverd bij Amazon S3.

Deze zijn vereist door AWS Glue om de gegevens later te kunnen crawlen en om ervoor te zorgen dat Athena individuele records kan herkennen.
Bestemmingsinstellingen voor Firehose-stream

Maak een EventBridge-regel en koppel doelen

De EventBridge-regel ProcessDevicePosition definieert twee doelstellingen: de ProcessDevicePosition Lambda-functie, en de ProcessDevicePositionFirehose levering stroom. Voer de volgende stappen uit om de regel te maken en doelen toe te voegen:

  1. Maak een nieuwe regel op de EventBridge-console.
  2. Voor Naam, voer een naam in (voor dit bericht, ProcessDevicePosition).
  3. Voor EvenementenbusKiezen verzuim.
  4. Voor Regeltype¸ selecteren Regel met een gebeurtenispatroon.
    EventBridge-regeldetails
  5. Voor Event bronselecteer AWS-evenementen of EventBridge-partnerevenementen.
    EventBridge-gebeurtenisbron
  6. Voor Methodeselecteer Gebruik patroonvorm.
  7. In het Gebeurtenis patroon sectie specificeren AWS-diensten als de bron, Amazon-locatieservice als de specifieke dienst, en Locatie Apparaatpositiegebeurtenis als het gebeurtenistype.
    EventBridge-aanmaakmethode
  8. Voor Doel 1, bevestig de ProcessDevicePosition Lambda functioneert als doelwit.
    EventBridge-doel 1
  9. Wij gebruiken Ingangstransformator: om de gebeurtenis aan te passen die is toegewezen aan de S3-bucket.
    EventBridge doel 1 transformator
  10. Configure Invoerpadenkaart en Invoersjabloon om de payload in het gewenste formaat te organiseren.
    1. De volgende code is de invoerpadenkaart:
      {
          EventType: $.detail.EventType
          TrackerName: $.detail.TrackerName
          DeviceId: $.detail.DeviceId
          SampleTime: $.detail.SampleTime
          ReceivedTime: $.detail.ReceivedTime
          Longitude: $.detail.Position[0]
          Latitude: $.detail.Position[1]
      }

    2. De volgende code is de invoersjabloon:
      {
          "EventType":<EventType>,
          "TrackerName":<TrackerName>,
          "DeviceId":<DeviceId>,
          "SampleTime":<SampleTime>,
          "ReceivedTime":<ReceivedTime>,
          "Position":[<Longitude>, <Latitude>]
      }

  11. Voor Doel 2, kies de ProcessDevicePositionFirehose leveringsstroom als doelwit.
    EventBridge-doel 2

Voor dit doel is een IAM-rol vereist waarmee een of meerdere records naar de Firehose-leveringsstroom kunnen worden geschreven:

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

Crawl en catalogiseer de gegevens met AWS Glue

Nadat er voldoende gegevens zijn gegenereerd, voert u de volgende stappen uit:

  1. Kies op de AWS Glue-console: crawlers in het navigatievenster.
  2. Selecteer de crawlers die zijn gemaakt, location-analytics-glue-crawler-lambda en location-analytics-glue-crawler-firehose.
  3. Kies lopen.

De crawlers classificeren de gegevens automatisch in JSON-formaat, groeperen de records in tabellen en partities en leggen de bijbehorende metagegevens vast in de AWS Glue Data Catalog.
crawlers

  1. Wanneer de Laatste ronde statussen van beide crawlers worden weergegeven als Langs, bevestig dat twee tabellen (lambda en firehose) zijn gemaakt op de Tafels pagina.

De oplossing verdeelt de binnenkomende locatiegegevens op basis van de deviceid veld. Zolang er geen nieuwe apparaten of schemawijzigingen zijn, hoeven de crawlers daarom niet opnieuw te worden uitgevoerd. Als er echter nieuwe apparaten worden toegevoegd of een ander veld wordt gebruikt voor het partitioneren, moeten de crawlers opnieuw worden uitgevoerd.
Tafels

U bent nu klaar om de tabellen te bevragen met Athena.

De gegevens opvragen met Athena

Athena is een serverloze, interactieve analyseservice die is gebouwd om ongestructureerde, semi-gestructureerde en gestructureerde gegevens te analyseren waar deze worden gehost. Als dit de eerste keer is dat u de Athena-console gebruikt, Volg de instructies om een ​​locatie voor queryresultaten in Amazon S3 in te stellen. Om de gegevens op te vragen bij Athena, voert u de volgende stappen uit:

  1. Open de query-editor op de Athena-console.
  2. Voor Databron, kiezen AwsDataCatalog.
  3. Voor Database, kiezen location-analytics-glue-database.
  4. Kies in het optiemenu (drie verticale stippen). Voorbeeldtabel om de inhoud van beide tabellen op te vragen.
    Voorbeeldtabel

De query geeft 10 voorbeeldpositionele records weer die momenteel in de tabel zijn opgeslagen. De volgende schermafbeelding is een voorbeeld van een voorbeeld van het firehose tafel. De firehose tabel slaat onbewerkte, ongewijzigde gegevens op van de Amazon Location-tracker.
Zoekresultaten
U kunt nu experimenteren met georuimtelijke zoekopdrachten GeoJSON-bestand voor de ULEZ-uitbreiding in Londen in 2021 maakt deel uit van de repository en is al omgezet in een query die compatibel is met beide Athena-tabellen.

  1. Kopieer en plak de inhoud van het 1-firehose-athena-ulez-2021-create-view.sql bestand gevonden in de examples/firehose map naar de query-editor.

Deze query maakt gebruik van de ST_Within geospatiale functie om te bepalen of een geregistreerde positie zich binnen of buiten de ULEZ-zone bevindt die door de polygoon wordt gedefinieerd. Een nieuwe visie genaamd ulezvehicleanalysis_firehose wordt gemaakt met een nieuwe kolom, insidezone, waarmee wordt vastgelegd of de geregistreerde positie binnen de zone bestaat.

Een eenvoudige Python utility is beschikbaar, waarmee de polygoonfuncties uit het gedownloade GeoJSON-bestand worden omgezet naar ST_Polygon tekenreeksen gebaseerd op de bekende tekstvorm die rechtstreeks in een Athena-query kan worden gebruikt.

  1. Kies Voorbeeldweergave op de ulezvehicleanalysis_firehose bekijken om de inhoud ervan te verkennen.
    Voorbeeldweergave

U kunt nu query's uitvoeren op basis van deze weergave om overkoepelende inzichten te verkrijgen.

  1. Kopieer en plak de inhoud van het 2-firehose-athena-ulez-2021-query-dagen-in-zone.sql bestand gevonden in de examples/firehose map naar de query-editor.

Deze vraag stelt het totale aantal dagen vast dat elk voertuig ULEZ is binnengekomen, en wat de verwachte totale kosten zouden zijn. De query is geparametriseerd met behulp van de ? plaatsaanduiding karakter. Geparametriseerde zoekopdrachten kunt u dezelfde query opnieuw uitvoeren met verschillende parameterwaarden.

  1. Voer het dagelijkse tarief in voor parameter 1en voer vervolgens de query uit.
    Query-editor

De resultaten tonen elk voertuig, het totale aantal doorgebrachte dagen in de voorgestelde ULEZ en de totale kosten op basis van het dagelijkse tarief dat u heeft ingevoerd.
Zoekresultaten
Je kunt deze oefening herhalen met behulp van de lambda tafel. Gegevens in de lambda De tabel wordt aangevuld met aanvullende voertuiggegevens die aanwezig zijn in de DynamoDB-tabel voor voertuigonderhoud op het moment dat deze door de Lambda-functie wordt verwerkt. De oplossing ondersteunt de volgende velden:

  • MeetsEmissionStandards (Booleaans)
  • Mileage (Nummer)
  • PurchaseDate (String, in YYYY-MM-DD formaat)

U kunt de nieuwe gegevens ook verrijken zodra deze binnenkomen.

  1. Op de DynamoDB-console vindt u de voertuigonderhoudstabel hieronder Tafels. De tabelnaam wordt opgegeven als uitvoer VehicleMaintenanceDynamoTable in de geïmplementeerde CloudFormation-stack.
  2. Kies Verken tafelitems om de inhoud van de tabel te bekijken.
  3. Kies Maak een item om een ​​nieuw record voor een voertuig aan te maken.
    Maak een item
  4. Enter DeviceId (Zoals vehicle1 als een tekenreeks), PurchaseDate (Zoals 2005-10-01 als een tekenreeks), Mileage (Zoals 10000 als een getal), en MeetsEmissionStandards (met een waarde zoals False als Booleaans).
  5. Kies Maak een item om het record te maken.
    Maak een item
  6. Dupliceer het nieuw gemaakte record met aanvullende vermeldingen voor andere voertuigen (zoals for vehicle2 or vehicle3), waarbij de waarden van de attributen elke keer enigszins worden gewijzigd.
  7. Voer de . opnieuw uit location-analytics-glue-crawler-lambda AWS Glue-crawler nadat nieuwe gegevens zijn gegenereerd om te bevestigen dat de update van het schema met nieuwe velden is geregistreerd.
  8. Kopieer en plak de inhoud van het 1-lambda-athena-ulez-2021-create-view.sql bestand gevonden in de examples/lambda map naar de query-editor.
  9. Bekijk een voorbeeld van de ulezvehicleanalysis_lambda weergave om te bevestigen dat de nieuwe kolommen zijn gemaakt.

Als er fouten optreden zoals Column 'mileage' cannot be resolved worden weergegeven, de gegevensverrijking vindt niet plaats of de AWS Glue-crawler heeft nog geen updates voor het schema gedetecteerd.

Indien de Voorbeeldtabeloptie retourneert alleen resultaten van voordat u records in de DynamoDB-tabel hebt gemaakt, retourneert u de queryresultaten in aflopende volgorde met behulp van sampletime (bijvoorbeeld, order by sampletime desc limit 100;).
Zoekresultaten
Nu concentreren we ons op de voertuigen die momenteel niet aan de emissienormen voldoen, en rangschikken we de voertuigen in aflopende volgorde op basis van de kilometerstand per jaar (berekend op basis van de laatste kilometerstand/leeftijd van het voertuig in jaren).

  1. Kopieer en plak de inhoud van het 2-lambda-athena-ulez-2021-query-dagen-in-zone.sql bestand gevonden in de examples/lambda map naar de query-editor.
    Zoekresultaten

In dit voorbeeld kunnen we zien dat vijf van ons wagenpark naar verluidt niet aan de emissienormen voldoen. We kunnen ook de voertuigen zien die per jaar veel kilometers hebben afgelegd, en het aantal dagen dat ze in de voorgestelde ULEZ hebben doorgebracht. De wagenparkbeheerder kan nu besluiten om voorrang te geven aan vervanging van deze voertuigen. Omdat locatiegegevens worden verrijkt met de meest actuele voertuigonderhoudsgegevens op het moment dat ze worden opgenomen, kunt u deze zoekopdrachten verder ontwikkelen zodat ze binnen een bepaald tijdsvenster worden uitgevoerd. U kunt bijvoorbeeld rekening houden met kilometerwijzigingen in het afgelopen jaar.

Vanwege de dynamische aard van de gegevensverrijking zullen alle nieuwe gegevens die worden vastgelegd in Amazon S3, samen met de queryresultaten, worden gewijzigd naarmate en wanneer records worden bijgewerkt in de DynamoDB-voertuigonderhoudstabel.

Opruimen

Raadpleeg de instructies in de README bestand om de bronnen op te schonen die voor deze oplossing zijn ingericht.

Conclusie

Dit bericht demonstreerde hoe je Amazon Location, EventBridge, Lambda, Amazon Data Firehose en Amazon S3 kunt gebruiken om een ​​locatiebewuste datapijplijn op te bouwen, en de verzamelde apparaatpositiegegevens kunt gebruiken om analytische inzichten te genereren met behulp van AWS Glue en Athena. Door deze activa in realtime te volgen en de resultaten op te slaan, kunnen bedrijven waardevolle inzichten verkrijgen over hoe effectief hun wagenpark wordt gebruikt en beter reageren op veranderingen in de toekomst. U kunt nu onderzoeken of u deze voorbeeldcode kunt uitbreiden met uw eigen apparaattrackinggegevens en analysevereisten.


Over de auteurs

Alan Peaty is een Senior Partner Solutions Architect bij AWS. Alan helpt Global Systems Integrators (GSI's) en Global Independent Software Vendors (GISV's) bij het oplossen van complexe klantuitdagingen met behulp van AWS-services. Voordat hij bij AWS kwam, werkte Alan als architect bij systeemintegrators om zakelijke vereisten te vertalen naar technische oplossingen. Buiten zijn werk is Alan een IoT-liefhebber en een fervent hardloper die graag over de modderige paden van het Engelse platteland gaat.

Parag Srivastava is een Solutions Architect bij AWS en helpt zakelijke klanten met succesvolle cloudadoptie en -migratie. Tijdens zijn professionele carrière is hij uitgebreid betrokken geweest bij complexe digitale transformatieprojecten. Hij is ook gepassioneerd door het bouwen van innovatieve oplossingen rond geospatiale aspecten van adressen.

spot_img

Laatste intelligentie

spot_img