Del via


Tutorial: Byg realtids arbejdsordre-routing med Fabric Maps

Microsoft Fabric Maps tilbyder geospatial visualisering og analyse for at levere handlingsorienterede indsigter fra realtids- og historiske rumlige data.

I denne vejledning bruger en feltdispatcher i elforsyningsselskabet Microsoft Fabric Maps til at oprette og administrere reparationsarbejdsordrer, når der rapporteres om strømafbrydelser eller fejl i aktiverne. Scenariet fokuserer på at lokalisere berørte kunder, visualisere aktive arbejdsordrer i realtid og effektivt sende hold ud for at genoprette servicen.

Denne vejledning demonstrerer, hvordan kundernes placeringer kortlægges, live arbejdsordrer vises på kortet, og en optimal rute beregnes ved hjælp af Azure Maps Route Directions API. Tutorialen afsluttes med en optimeret rute, der vises på kortet.

Fabric Maps kører inden for Fabric Real-Time Intelligence og indsamler streaming-telemetri ved hjælp af Eventstream og Eventhouse til realtidsovervågning. Færdiggørelser af arbejdsordrer og driftsresultater gemmes i OneLake, hvor de kan bruges til ruteoptimering og analyser, som vises på kortet.

I denne vejledning vil du:

  • Opret et søhus og upload eksempler på arbejdsordredata.
  • Opsæt en eventstream til at skrive arbejdsordredata til et eventhouse.
  • Opret et KQL-forespørgselssæt for at udtrække kundekoordinater fra de importerede arbejdsordredata.
  • Opret et kort og tilføj forespørgselssættet som et kortlag.
  • Beregn en optimal rute ved hjælp af Azure Maps Route Directions API.
  • Tilføj den optimerede rute til kortet som et lag.
  • Konfigurer kort- og lagindstillinger.

Forudsætninger

Før du starter denne tutorial, er det nyttigt at gennemgå Real-Time Intelligence-tutorials for at blive fortrolig med kernekoncepterne og workflows.

Opret et søhus og upload eksempler på arbejdsordredata

For at simulere en realtids streamingkilde bruger notesbogen i de følgende trin eksempeldata uploadet til et søhus. I produktion ville disse data blive streamet i stedet for statiske.

Opret arbejdsordredatafilen

Arbejdsordredatafilen indeholder eksempler på arbejdsordreposter, der bruges i denne vejledning til at simulere en realtids streamingkilde. Efter at have oprettet filen, importerer du den til et sommerhus ved søen i næste trin.

Kopier og indsæt følgende indhold i en tekstfil, og gem det derefter som WorkorderLocations.csv. Du vil bruge denne fil i næste trin.

WorkorderID,Latitude,Longitude
100,48.22610712,16.32977412
101,48.23519063,16.37364699
102,48.19785896,16.38669028
103,48.18125837,16.37068261
107,48.15151126,16.41766590
108,48.20290349,16.32492121
104,48.23400591,16.4563533
105,48.18145603,16.40506946
106,48.16366378,16.36001083

Opret et lakehouse og importer arbejdsordredatafilen

Opret et nyt lakehouse til indkommende arbejdsordredata og importer den tidligere oprettede arbejdsordre-lokationsfil.

  1. Fra dit arbejdsområde vælger du Nyt element, og indtast lakehouse i søgefeltet og vælg det for at oprette et nyt lakehouse.
  2. Indtast et navn WorkorderLocationsLakehouse og vælg Opret dem.
  3. I det nye søhus vælger du Upload filer og uploader den WorkorderLocations.csv fil, der blev oprettet i det forrige trin.
  4. I det nye søhus skal du vælge Explorer-panelet i venstre side af skærmen.
  5. I Filer-sektionen i Stifinder skal du vælge WorkorderLocations.csv for at se den fil, du har uploadet.
  6. I Visningsindstillingerne vælger du første række som header.
  7. (Valgfrit) I rullemenuen for visning, vælg Table View.

Skærmbillede af WorkorderLocations.csv-filen efter import til et sommerhus ved søen.

Opret en eventstream og skriv data til et eventhouse

I dette afsnit designer du et eventstream-flow ved hjælp af et brugerdefineret endpoint og sender data via en notebook for at simulere realtidsstreaming.

Microsoft Fabric Eventstream er en realtids datastreamingtjeneste, der gør det muligt for brugere at indlæse, behandle og rute hændelsesdata inden for Microsoft Fabric-økosystemet. Det giver en no-code-oplevelse til at opbygge hændelsesdrevne arbejdsgange, hvilket muliggør problemfri integration af realtidsdata fra forskellige kilder og dirigering til flere destinationer. For mere information om understøttede datakilder eller hvordan man forbinder til et brugerdefineret endpoint, se Oversigt over Microsoft Fabric eventstreams.

Ved at indlæse eventstream-data i et eventhouse gør du streaming-events tilgængelige for behandling med Kusto Query Language (KQL). Dette giver dig mulighed for at forespørge, transformere og analysere dataene, efterhånden som de ankommer. Du kan få flere oplysninger under Oversigt over Eventhouse.

Opret en eventstream og eventhouse

  1. Fra dit arbejdsområde vælger du Nyt element, og indtast eventstream i søgefeltet.

  2. Vælg Eventstream.

  3. I dialogen Ny Eventstream indtaster du et Navn: "WorkordersEventstream", og vælg derefter Create.

  4. I skærmen Design et flow til at indlæse, transformere og rute streamingbegivenheder , vælg Brug brugerdefineret endpoint

    Skærmbillede af skærmen Design et flow til at indlæse, transformere og rute streamingbegivenheder i Fabric, der viser muligheden for at bruge brugerdefineret endpoint.

  5. I dialogen for brugerdefineret endpoint Tilføj kilde, vælg Tilføje.

    Et screenshot af dialogen Tilføj kildekode for Custom endpoint i Microsoft Fabric, der viser en breadcrumb-navigation med Custom endpoint-pilen WorkordersEventstream øverst. Dialogen indeholder et kildenavn-felt med en rød stjerne markeret som påkrævet, der indeholder teksten CustomEndpoint-Source. En turkis tilføje-knap er fremhævet i nederste højre hjørne af dialogen, hvilket indikerer, at den skal vælges uden yderligere handling.

    Eventstrømmen er nu oprettet. Dernæst tilføjer du et Eventhouse som destination.

  6. I WorkordersEventstream-noden i eventstream-designeren vælg Eventhouse fra Transform-events eller tilføj destinationsdropdown-listen.

    Et screenshot af Microsoft Fabric eventstream-designeren, der viser et flowdiagram med CustomEndpoint-Source forbundet til WorkordersEventstream-noden. En dropdown-menu udvides fra Transformér begivenheder eller tilføj destinationsflise i højre side, hvor sektionen Destinationer nederst vises med flere muligheder, herunder Eventhouse, som er fremhævet med et rødt rektangel, der angiver, at den skal vælges.

  7. Eventhouse-destinationskonfigurationspanelet vises på højre side af skærmen. Udfyld de ønskede oplysninger som følger, og vælg derefter Gem:

    1. Dataindlæsningstilstand: Sæt til hændelsesbehandling før indlæsning.
    2. Destinationsnavn: Sæt til arbejdsordrerEventhouse.
    3. Arbejdsområde: En dropdown-menu, der viser navnet på dit arbejdsområde.
    4. Eventhouse: Vælg Opret nyt og opret et eventhouse kaldet WorkordersEventhouse.
    5. KQL-database: Vælg arbejdsordrerEventhouse.
    6. KQL Destinationstabell: Vælg Opret nyt link og opret en ny tabel kaldet WorkordersEventhouse.
    7. Inputdataformat: Vælg Json.
    8. Aktiver indtagelse efter tilføjelse af datakilden: sæt kryds i boksen.

    Et screenshot, der viser Eventhouse destinationskonfigurationspanel, der viser dataindlæsningstilstand med hændelsesbehandling før indtastning valgt, destinationsnavn sat til WorkordersEventhouse, arbejdsområde-dropdown, der viser Mit arbejdsområde, Eventhouse-dropdown, der viser WorkordersEventhouse med Opret nyt link, KQL-databasedropdown, der viser WorkordersEventhouse, KQL destinationstabel dropdown, der viser nye arbejdsordrerEventhouse med Opret nyt link, Aktiver indtagelse efter tilføjelse af datakilde-afkrydsningsboksen tjekket, og en grøn Gem-knap nederst.

  8. Når eventhouset er tilføjet som destination, vælger du Publish for at offentliggøre din nye eventstream.

    Et screenshot, der viser Eventstream-designeren, der viser et flow med CustomEndpoint-Workorders kilde forbundet til en Workorders-stream-node, som igen forbinder til WorkordersEventhouse-destinationen. Publicer-knappen er fremhævet i øverste højre hjørne af værktøjslinjen. Et banner i redigeringstilstand angiver, at ændringer går live, når de er offentliggjort.

Få de nødvendige SAS-nøgle-autentificeringsnøgler

Du skal bruge Event Hub-navnet og Connection string-primærnøgleværdierne fra SAS Key autentificeringssektionen i din notesbogskode.

  1. Vælg den brugerdefinerede endpoint-kildeflise, du lige har tilføjet.

  2. I Details-panelet vælger du SAS Key Authentication.

  3. Kopier følgende to værdier og gem dem til brug i din notesbogskode:

    • Event hub-navn: Bruges til variablen EVENT_HUB_NAME.
    • Forbindelsesstreng-primærnøgle: Bruges til CONNECTION_STR-variabelen .

    Et screenshot, der viser Eventstream-designeren med SAS Key Authentication-muligheden valgt i detaljepanelet, hvor Event hub-navnet og Connection-streng-primærnøglen fremhæves, som bruges i notesbogskoden i et senere trin i denne vejledning.

Simulér realtidsindtagelse ved hjælp af en notesbog

I dette afsnit opretter du en notesbog, der er forbundet til det søhus, du oprettede tidligere, og bruger derefter den medfølgende kode til at læse CSV-dataene og sende begivenheder til eventstreamen. Dette simulerer realtids dataindlæsning; Til demoer kan du køre notesbogen manuelt eller planlægge den til at køre periodisk.

Opret en notesbog i dit Fabric-arbejdsområde

Opret en notesbog med kode til at importere opgaveplaceringsfilen fra dit lakehouse til den eventstream, du oprettede i forrige afsnit. Dette simulerer en realtids streamingkilde, som i et produktionsmiljø ville blive streamet i stedet for statisk.

  1. Fra dit arbejdsområde vælger du Nyt element, og indtast notesbog i søgefeltet.

  2. Vælg Notesbog.

    Et screenshot af Microsoft Fabric Nye element-dialogen med en søgeboks, der indeholder tekstnotesbogen. Søgeresultaterne viser en Notebook-flise med et dokumentikon, der viser beskrivelsen Opret en notesbog til at udforske data og bygge maskinlæringsmodeller. Notesbogsindstillingen er fremhævet, hvilket indikerer, at den kan vælges for at oprette et nyt notesbogselement.

  3. I dialogen Ny notesbog indtast WorkorderLocations i Navn-feltet , og vælg derefter Create.

  4. For at forbinde din notesbog til søhuset, vælg Fra OneLake-kataloget fra rullemenuen Tilføj dataelementer .

    Et screenshot af Microsoft Fabric Explorer-panelet, der viser fanen Dataobjekter valgt med beskeden Ingen datakilder tilføjet og et tomt mappeikon. Under beskeden er der en dropdown-knap Tilføj dataelementer, der udvides til at afsløre tre menuvalg: Fra OneLake-kataloget med et databaseikon, Fra Real-Time hub med et lynikon og Nyt søhus med et plustegn. From OneLake-katalogmuligheden er fremhævet med en mørk kant, der angiver valget.

  5. Vælg WorkorderLocationsLakehouse fra OneLake-kataloget og vælg Connect-knappen . Dette er søhuset, du tidligere har skabt.

  6. Efter at have oprettet notesbogen og forbundet den til dit lakehouse, indsæt følgende kode i den første celle og kør den for at installere Azure Event Hub SDK'en:

    # Install Azure Event Hub SDK (only needed once per environment)
    %pip install azure-eventhub
    
  7. Vælg + Kode for at oprette en ny celle i notesbogen.

    Et screenshot af Microsoft Fabric-notebook-grænsefladen, der viser en kodecelle med to linjer Python-kode. Linje 1 indeholder en kommentar, der lyder Installer Azure Event Hub SDK, kun nødvendig én gang pr. miljø. Linje 2 viser pip install command procent, pip install azure-eventhub. Under kodecellen viser et tooltip Tilføj kode-celle, der peger på en plus-kode-knap markeret med et rødt rektangel. En Plus-Markdown-knap vises til højre. Øverst til højre vises PySpark Python som den valgte kerne.

  8. Vælg den nye celle og indtast følgende kode i den:

    from azure.eventhub import EventHubProducerClient, EventData
    import pandas as pd
    import json
    import time
    
    # Replace with your actual connection string and Event Hub name
    CONNECTION_STR = "" # Connection string-primary key
    EVENT_HUB_NAME = "" # Event hub name
    producer = EventHubProducerClient.from_connection_string(conn_str=CONNECTION_STR, eventhub_name=EVENT_HUB_NAME)
    
    df = spark.read.csv("Files/WorkorderLocations.csv", header=True, inferSchema=True)
    pdf = df.toPandas()
    total_records = len(pdf)
    
    for index, row in pdf.iterrows():
        # Convert row to dictionary
        row_dict = row.to_dict()
    
        # Truncate coordinates to 5 decimal digits
        if 'lat' in row_dict:
            row_dict['Latitude'] = round(float(row_dict['Latitude']), 5)
        if 'lon' in row_dict:
            row_dict['Longitude'] = round(float(row_dict['Longitude']), 5)
    
        # Serialize to JSON
        payload = json.dumps(row_dict)
    
        # Send to Event Hub
        event_data = EventData(payload)
        with producer:
            producer.send_batch([event_data])
    
        # Wait 100ms
        time.sleep(0.1)
    
  9. Tilføj værdierne for variablerne CONNECTION_STR og EVENT_HUB_NAME opnået i det foregående afsnit med titlen Get required SAS key authentication keys.

  10. Kør notebook-koden. Dette skaber Workorder-tabellen i KQL-databasen i WorkordersEventhouse eventhouse.

Et screenshot af Microsoft Fabric Eventhouse-grænsefladen, der viser tabellen med en Data-forhåndsvisningsfane valgt. Venstre navigationspanel viser KQL-databasetræet med WorkordersEventhouse udvidet, som indeholder tabeller med arbejdsordretabellen valgt.

Opret et KQL-forespørgselssæt og tilføj det som et kortlag

I dette afsnit opretter du et KQL-forespørgselssæt, der henter aktuelle data for arbejdsordreplacering fra arbejdsordretabellen i dit eventhouse, og derefter bruger dette forespørgselssæt som datakilde til et Fabric Maps-kort. Forespørgselssættet gør det muligt for kortet at vise aktive arbejdsordrer som et lag, hvilket giver et visuelt overblik over opgaver, der skal planlægges og tildeles felthold.

Opret et KQL-forespørgselssæt

Fra dit eventhouse (KQL-database):

  1. Vælg WorkordersEventhouse_queryset fra KQL-databasen.

  2. Vælg + fra menulinjen for forespørgsler for at oprette en ny forespørgsel.

  3. Når den nye forespørgsel oprettes, bliver den automatisk navngivet WorkordersEventhouse, vælg blyantikonet for at redigere navnet og omdøb det til WorkordersQuery.

  4. Indsæt følgende KQL-forespørgsel i editoren.

    Workorders
    | project Latitude, Longitude, WorkorderID 
    
  5. Vælg pencil-redigeringsikonet i fanen med titlen Tab og omdøb det til WorkordersQuery.

    Et screenshot af Microsoft Fabric KQL-queryset-grænsefladen, der viser WorkordersEventhouse-databasen, valgt i venstre Explorer-panel under KQL-databaser med WorkordersEventhouse_queryset udvidet til at afsløre tabellen for arbejdsordrer. Hovedforespørgselseditoren viser en ny fane fremhævet med et rødt rektangel med en forespørgsel. Et andet rødt rektangel fremhæver det WorkordersEventhouse_queryset element i venstre navigationspanel. Forespørgselsvinduet viser to linjer KQL-kode med arbejdsordrer på linje 1 og projekt-Latitude komma Longitude komma WorkorderID på linje 2.

  6. Vælg Kør for at verificere, at forespørgslen returnerer arbejdsordredataene med lokationsfelter.

Dette forespørgselssæt fungerer som en genanvendelig datakilde for et Fabric Maps-kortdatalag, hvilket demonstreres i næste afsnit.

Opret et kort og tilføj forespørgselssættet som et lag

I dette afsnit opretter du et Fabric Maps-kort og bruger det tidligere oprettede KQL-forespørgselssæt som datalag. Kortet er konfigureret med et opdateringsinterval, så streamingdata fra arbejdsordrer automatisk opdateres og giver et næsten realtids rumligt overblik over aktive arbejdsordrer. Du omdøber derefter laget og justerer dets indstillinger for at styre, hvordan dataene vises på kortet. Denne live geospatiale kontekst hjælper dispatchere med at overvåge feltaktivitet, vurdere efterspørgslen på tværs af serviceområder og træffe mere informerede rute- og tildelingsbeslutninger.

Opret et nyt kort

  1. Fra dit arbejdsområde vælger du Nyt element.
  2. I panelet Nye genstande indtaster du kort i søgefeltet og vælger Kort.
  3. I dialogen Nyt Kort indtast WorkordersMap i Navn-feltet og vælg Create.

Tilføj eventhouse til kortet

  1. I Explorer-panelet vælger du Eventhouse og derefter knappen Tilføj dataelementer .

    Et screenshot, der viser Microsoft Fabric Maps-grænsefladen med Explorer-panelet til venstre med fanerne Lakehouse og Eventhouse. Eventhouse-fanen er valgt og markeret med en rød boks. Under den er knappen Tilføj dataelementer også fremhævet med en rød boks. Hovedområdet viser standardverdenskortet i kortområdet.

  2. Fra OneLake-kataloget vælger du det eventhouse WorkordersEventhouse , du tidligere oprettede, og vælger derefter Connect.

Tips

Hvis du får en fejl som for eksempel KQL-databasen, har den en beskyttet etiket, der begrænser adgangen. Kontakt venligst din database-ejer for hjælp. Tjek følsomhedsetiketten på din KQL-database, da den kan begrænse adgangen. For mere information, se Påfør følsomhedsetiketter på tekstilvarer.

Vis forespørgselssæt på kortet

  1. I Explorer-panelet på dit nye kort vælger du eventhouse WorkordersEventhouse , som du tilføjede i det forrige trin.

  2. Navigér til KQL-forespørgslen WorkordersQuery, og vælg ellipsen (...) for at vise pop-up-menuen.

  3. Vælg Vis på kort fra pop-up-menuen.

    Et screenshot af Microsoft Fabric Maps Explorer-panelet, der viser en hierarkisk træstruktur med KQL-databasesektionen udvidet. Træet viser WorkordersEventhouse, der indeholder Workorders-Event tabel og WorkordersQuery-forespørgselssæt. En ellipsemenu er åben ved siden af WorkordersQuery, hvilket afslører muligheder, herunder Vis på kortet markeret med en rød rektangel kant.

  4. Visningen af Eventhouse-data i kortdialogen vises med Forhåndsvisningsdata valgt. Ingen ændringer er nødvendige. Sørg for, at det er korrekt, og vælg derefter Næste

    Et screenshot af View Eventhouse-data på kort-dialogen i Microsoft Fabric, der viser tre trin til venstre: Forhåndsvis data med et grønt flueben, Sæt geometri og dataopdateringsinterval, og Gennemgå og tilføj til kortet. Hovedpanelet viser Visualiser rumlige data over tid på et kort med en dropdown-menu til Vælg en KQL-forespørgsel at visualisere sat til WorkordersQuery. Nedenfor er en forespørgselsresultat-forhåndsvisningstabel med kolonner for Latitude, Longitude og WorkorderID, der viser ni arbejdsordreposter med koordinater i Wien, Østrig-området. Tilbage og Næste-knapperne vises nederst til højre.

  5. I trinnet Set geometri og dataopdateringsinterval skal du sætte felterne som følger, og derefter vælge Næste:

    • Datalagsnavn: WorkordersQuery

    • Geometri-kolonneplacering: Bredde- og længdegradsdata placeres i separate kolonner

    • Breddegradskolonne: Breddegrad

    • Længdegradskolonne: Længdegrad

    • Dataopdateringsinterval: 5 minutter

      Et screenshot af Microsoft Fabric-dialogen med titlen View Eventhouse data på kortet, der viser konfigurationstrinnet for Set geometri og dataopdateringsintervallet. En venstre sidebjælke viser tre arbejdsgangstrin med flueben for at angive Forhåndsvisningsdata er færdig, og at Set-geometri og dataopdateringsinterval aktuelt er aktivt. Hovedpanelet indeholder en Datalagssektion med et Navn-felt, der indeholder WorkordersQuery, efterfulgt af en Geometri-datakolonnesektion med tre dropdowns: Geometri-kolonneplacering sat til Breddegrad og længdegradsdata placeret i separate kolonner, Breddegrad-kolonne sat til Breddegrad og Længdegrad sat til Længdegrad. Nedenfor er en dataopdateringssektion med en dropdown for dataopdateringsinterval sat til 5 minutter. Tilbage og Næste-knapperne vises nederst til højre.

  6. I trinnet Gennemgå og tilføj til kort, gennemgå indstillinger og vælg Tilføj til kort.

    Et screenshot af Microsoft Fabric View Eventhouse-dataene i kortdialogen, der viser trinnet Gennemgang og tilføj til kortet. Venstre sidebjælke viser tre arbejdsgangstrin med grønne flueben ved siden af Forhåndsvisning af data og Set geometri og dataopdateringsinterval, samt en blå prik, der angiver, at Gennemgang og tilføj til kortet, er aktivt i øjeblikket. Hovedpanelet viser overskriften Vis Eventhouse-data på kortet med underteksten Visualiser rumlige data over tid på et kort. Datakilde-sektionen viser KQL-databasen sat til WorkordersEventhouse, KQL-queryset sat til WorkordersEventhouse_queryset, og fanen Queryset sat til WorkordersQuery. Datalagssektionen viser Navn-feltet med en rød stjerne sat til WorkordersQuery. Geometri-datakolonnesektionen viser Geometri-kolonneplacering med rød stjerne sat til breddegrad og længdegradsdata placeret i separate kolonner, breddegradskolonne med rød stjerne sat til breddegrad og længdegrad med rød stjerne sat til længdegrad. Dataopdateringssektionen viser dataopdateringsintervallet med rød stjerne sat til 5 minutter. Tilbage og Tilføj til kort-knapperne vises i nederste højre hjørne.

Resultaterne af forespørgselssættet vises nu på det opdaterede kort.

Et screenshot, der viser Microsoft Fabric Maps-grænsefladen og viser et kort over Wien, Østrig, med røde cirkulære markører, der angiver arbejdsordreplaceringer. Explorer-panelet til venstre viser fanerne Lakehouse og Eventhouse med fanen Eventhouse valgt, hvilket afslører et KQL-databasetræ med WorkordersEventhouse og WorkordersQuery-poster. Datalagspanelet øverst til venstre på kortet viser WorkordersQuery-laget med en synlighedsknap og indstillingsmenu.

Generer en optimeret rute med flere stop med Azure Maps Route Directions API

I dette afsnit opretter du en ny notesbog, der henter koordinater til arbejdsordrer fra KQL-databasen og kalder Azure Maps Route Directions REST API. Du aktiverer tjenestens multistop-optimeringsfunktion for at bestemme den mest effektive rækkefølge for hvert besøg og returnerer rutegeometrien i den optimerede rækkefølge. Denne output bruges senere til at visualisere en anbefalet teknikerrute på kortet.

For at fuldføre denne sektion skal du have en Azure-konto med en Azure Maps-konto og abonnementsnøgle. Hvis du ikke har en Azure-konto, skal du oprette en gratis konto , før du begynder. For mere information om oprettelse af en Azure Maps-konto, se Opret en Azure Maps-konto. For mere information om at få en Azure Maps-abonnementsnøgle, se Få abonnementsnøglen til din konto i Azure Maps-quickstart.

Opret en notesbog i dit Fabric-arbejdsområde, der henter den optimale rute

  1. Fra dit arbejdsområde åbner du det eventhouse WorkordersEventhouse, som du tidligere har oprettet.

  2. I venstre navigationspanel under KQL-databaser skal du vælge WorkordersEventhouse.

  3. Den øverste menulinje burde nu vise en mulighed for Notebook. Vælg den for at oprette en ny notesbog.

    Et screenshot af Microsoft Fabric Eventhouse-grænsefladen, der viser WorkordersEventhouse-databasen, valgt i venstre navigationspanel under KQL-databaser. Den øverste menulinje viser flere muligheder, herunder Notesbog, som er markeret med en rød boks, der angiver, at det er det element, der skal vælges. Hovedpanelet viser Data Activity Tracker med indlæsnings- og forespørgselsstatistikker.

  4. I den nye notesbog gemmer du værdierne for kustoQuery, kustoUri og databasevariabler . Du bruger disse værdier i den nye notesbogskode, du opretter i trin 6.

  5. Forbind din notesbog til WorkorderLocationsLakehouse ved at vælge Fra OneLake-kataloget i dropdown-listen Tilføj dataelementer .

    Et screenshot af en Microsoft Fabric-notebook-grænseflade, der viser en kodecelle med PySpark Python-kode. Venstre panel viser Ingen datakilder tilføjet med en knap Tilføj dataelementer, der er markeret af en rød boks. Hovedkodeområdet viser et eksempel på forespørgsel til læsning af data fra Kusto med variablerne kustoQuery sat til Workorders, kustoUri med en Fabric Microsoft URL, og databasen sat til WorkordersEventhouse, alle fremhævet med røde felter for at angive værdier, der skal kopieres og bruges i notesbogskoden i denne vejledning.

  6. Når din nye notesbog er oprettet og forbundet til dit søhus, indtaster du følgende kode i den anden celle i din notesbog, erstatter standardkoden, og tilføjer derefter de variabelværdier, der er gemt i det foregående trin:

    import os, json, requests
    from pyspark.sql import types as T
    from pyspark.sql.functions import col
    
    # ---- Configuration ----
    AZMAPS_SUBSCRIPTION_KEY = os.environ.get(
        'AZMAPS_SUBSCRIPTION_KEY',
        '<Your Azure Maps subscription key>'
    )
    API_VERSION = '2025-01-01'
    BASE_URL    = 'https://atlas.microsoft.com'
    
    kustoQuery = "['Workorders']" # Your Kusto query name
    kustoUri = "" # Your Kusto URI
    database = "WorkordersEventhouse" # Your KQL database name
    
    # The access credentials.
    accessToken = mssparkutils.credentials.getToken(kustoUri)
    kustoDf  = spark.read\
        .format("com.microsoft.kusto.spark.synapse.datasource")\
        .option("accessToken", accessToken)\
        .option("kustoCluster", kustoUri)\
        .option("kustoDatabase", database)\
        .option("kustoQuery", kustoQuery).load()
    
    # Write transformed response to a new file so the raw output is preserved
    OUTPUT_GEOJSON_PATH_TRANSFORMED = (
        'Files/OptimizedRoute.geojson' # GeoJSON output file 
    )
    
    # ---- Read Stores from KQL database table ----
    stores_df  = spark.read\
        .format("com.microsoft.kusto.spark.synapse.datasource")\
        .option("accessToken", accessToken)\
        .option("kustoCluster", kustoUri)\
        .option("kustoDatabase", database)\
        .option("kustoQuery", kustoQuery).load()\
        .select(
                    col("WorkorderID").alias("workorder_id"),
                    col("Latitude").alias("lat"),
                    col("Longitude").alias("lon")
                )
    
    # Ordered waypoints: origin first, then the rest by workorder_id
    # (API will re-order when optimizeWaypointOrder=True)
    stores_pd = stores_df.orderBy('workorder_id').toPandas()
    waypoints_lonlat = [[float(r['lon']), float(r['lat'])] for _, r in stores_pd.iterrows()]
    
    # ---- Build Directions request body (GeoJSON) ----
    features = []
    for idx, (lon, lat) in enumerate(waypoints_lonlat):
        features.append({
            "type": "Feature",
            "geometry": {"type": "Point", "coordinates": [lon, lat]},
            "properties": {"pointIndex": idx, "pointType": "waypoint"}
        })
    
    dir_body = {
        "type": "FeatureCollection",
        "features": features,
        "optimizeRoute": "fastestWithTraffic",
        "routeOutputOptions": ["routePath"],  # ensures route path geometry in response
        "travelMode": "truck",
        "optimizeWaypointOrder": True
    }
    
    # ---- Call Azure Maps Directions (POST) ----
    url     = f"{BASE_URL}/route/directions"
    params  = {"api-version": API_VERSION}
    headers = {
        "Accept": "application/geo+json",
        "Content-Type": "application/geo+json",
        "subscription-key": AZMAPS_SUBSCRIPTION_KEY
    }
    
    resp = requests.post(url, params=params, data=json.dumps(dir_body), headers=headers)
    resp.raise_for_status()
    resp_json = resp.json()  # exact payload as returned by the API
    
    # ---- Transform: move order.optimizedIndex -> properties.optimizedIndex for all Waypoint features to add as a data label in the map----
    for feat in resp_json.get("features", []):
        props = feat.get("properties") or {}
        if props.get("type") == "Waypoint":
            order = props.get("order") or {}
            opt_idx = order.pop("optimizedIndex", None)
            if opt_idx is not None:
                props["optimizedIndex"] = opt_idx + 1
            # reassign possibly-updated order (still contains inputIndex if present)
            props["order"] = order
            feat["properties"] = props
    
    # ---- Write transformed GeoJSON ----
    from notebookutils import mssparkutils
    mssparkutils.fs.put(OUTPUT_GEOJSON_PATH_TRANSFORMED, json.dumps(resp_json), True)
    
    print(f"Transformed Directions GeoJSON (waypoints carry properties.optimizedIndex) written to {OUTPUT_GEOJSON_PATH_TRANSFORMED}")
    
  7. Indtast Din Azure Maps-abonnementsnøgle i notesbogskoden for den AZMAPS_SUBSCRIPTION_KEY variabel ved at erstatte "<Din Azure Maps-abonnementsnøgle>" med Din Azure Maps-abonnementsnøgle.

    Vigtig

    Dette eksempel hardkoder Azure Maps-abonnementsnøglen for enkelhedens skyld. Kod ikke hemmeligheder i produktionsmiljøer. Gem og administrer hemmeligheder sikkert ved at bruge Azure Key Vault og referer til dem under kørsel. For mere information, se Bedste praksis for beskyttelse af hemmeligheder.

  8. Vælg knappen Gem som i menuen og gem notesbogen som OptimizeRoute.

  9. Kør notebooken for at oprette OptimizedRoute.geojson-filen i Files-mappen på dit lakehouse.

    Et screenshot af Microsoft Fabric-grænsefladen, der viser en notesbogskodecelle på højre side med Python-kode, der henter rutedata og skriver en GeoJSON-fil. Explorer-panelet til venstre viser OneLake med WorkorderLocation udvidet, der viser mapperne Tables and Files. Filer-mappen indeholder WorkorderLocations.csv og OptimizedRoute.geojson fremhævet med en rød boks, der angiver den nyoprettede outputfil. Panelet i midten af Filer viser begge filer med OptimizedRoute.geojson også markeret. Notebook-outputtet nederst viser en succesbesked med angivelsen Transformed Directions GeoJSON-waypoints bærer egenskaber.

Tilføj lakehouse til kortet

  1. I Explorer-panelet på dit kort WorkordersMap, vælg Lakehouse og derefter knappen Tilføj dataelementer .
  2. Fra OneLake-kataloget vælger du lakehouse WorkorderLocationsLakehouse, som du tidligere oprettede, og vælger derefter Connect.

Vis den optimerede rute på kortet

  1. I Explorer-panelet på dit nye kort vælger du lakehouse WorkorderLocationsLakehouse, som du tilføjede i det forrige trin.

  2. Gå til OptimizedRoute.geojson i mappen Filer i dit lakehouse og vælg ellipsen (...) for at vise pop-up-menuen.

  3. Vælg Vis på kort fra pop-up-menuen.

    Et screenshot af Microsoft Fabric Maps Explorer-panelet, der viser fanen Lakehouse valgt med WorkorderLocationsLakehouse udvidet. Filer-mappen indeholder OptimizedRoute.geojson og WorkorderLocations.csv filer. En kontekstmenu er åben ved siden af OptimizedRoute.geojson og viser muligheder, herunder Vis på kortet markeret med et rødt rektangel. Datalagspanelet viser WorkordersQuery som et eksisterende lag med en synligheds-toggle.

  4. I Datalagspaneletslår du synligheden fra for WorkordersQuery-laget .

Når det er færdigt, vises det nye kortlag på dit Fabric Maps-kort.

Et screenshot af Microsoft Fabric Maps, der viser et gadekort over Wien, Østrig, med en optimeret rute vist som blå linjer, der forbinder ni nummererede waypoints. Explorer-panelet til venstre viser fanen Lakehouse udvidet med WorkorderLocationsLakehouse, som indeholder en Files-mappe med OptimizedRoute.geojson og WorkorderLocations.csv filer. Datalagspanelet viser to lag: WorkordersQuery med synlighed slået fra, og OptimizedRoute, der viser den forbundne rutesti med nummererede stop fra 1 til 9, som angiver den optimerede besøgssekvens.

Indstillinger for kortlag

Fabric Maps tilbyder en række lagindstillinger, der lader dig kontrollere, hvordan data præsenteres på kortet. I dette afsnit tilpasser du laget, der er skabt fra ruteoptimeringsprocessen, ved at omdøbe laget, justere symbolstilen og konfigurere labels baseret på feltværdier. Disse indstillinger hjælper med at forbedre læsbarheden og gør det lettere at fortolke arbejdsordredata med et hurtigt blik.

Omdøb laget

  1. I panelet Data layers åbner du menuen OptimizedRoute-indstillinger ved at vælge ellipsen (...).

  2. Når du er i indstillingsmenuen, vælg Omdøb.

    Et screenshot af Microsoft Fabric Maps Data-lagpanelet, der viser to lag: WorkordersQuery og OptimizedRoute. Lagget OptimizedRoute har sin indstillingsmenu udvidet med et rødt rektangel, der fremhæver Rename-muligheden. Andre synlige menumuligheder inkluderer Zoom for at tilpasse, Dupliker og Slet. Panelet vises over en baggrund over gadekortet, der viser Wien, Østrig-området.

Fjern etiketter på kortniveauet

Når du slår Labels til eller fra på kortniveau, påvirker det basemap-tekstetiketter. Disse betegnelser stammer fra den underliggende kortstil og inkluderer:

  • By- og bynavne
  • Land- og regionsnavne
  • Vej- og vejnavne
  • Navne på vandfunktioner (floder, søer, oceaner)
  • Andre administrative eller geografiske stednavne

Når Labels ikke vises, fremstår basemap'et "renere" og mere minimalistisk, uden stednavnstekst gengivet på basemappen.

For at slå basemap-etiketter fra:

  1. Åbn dit kort i Fabric Maps.

  2. Vælg Kortindstillinger i menulinjen.

  3. Find afkrydsningsboksen Labels , og fjern markeringen.

    Et screenshot, der viser Microsoft Fabric Maps-grænsefladen, der viser et gadekort over Wien, Østrig med lilla rutelinjer, der forbinder flere waypoints. Venstre side viser Explorer-panelet med Datalag-panelet, der viser WorkordersQuery- og Optimized Route-lag. Den øverste værktøjslinje fremhæver knappen Kortindstillinger markeret med et rødt rektangel. Højre side viser Basemap-indstillingspanelet med afkrydsningsfeltet Labels uden markering og markeret med et rødt rektangel.

For mere information om kortindstillinger i Fabric Maps, se Ædr kortindstillinger

Tilføj datalabels til laget

Datalabels er datadrevne annoteringer, der stammer fra et eller flere felter i lagets datasæt. De er direkte knyttet til lagniveau-kortfunktioner, såsom punkterne på kortet, der repræsenterer arbejdsordreplaceringer. For mere information om Fabric Maps datalabels, se Data label-indstillinger.

  1. Vælg Optimeret rute i Datalagspanelet . Indstillingspanelet Optimeret rute vises i højre side af skærmen.

  2. I panelet Optimerede ruteindstillinger skal du vælge > Datalabel-indstillinger.

  3. Vælg knappen Aktiver dataetiketter for at slå dataetiketter til. Dette viser flere dataetiketter.

  4. Ændr følgende indstillinger for dataetiketter:

    • Dataetiketter: optimizedIndex
    • Tekstens farve: hvid
    • Tekststørrelsesskyder sat til 20
    • Tekststregfarve: Sort
    • Tekststregbredde-skyderen sat til 2

    Et screenshot af Microsoft Fabric Maps, der viser indstillingspanelet for dataetiketter, udvidet på højre side med Aktiver dataetiketter slået til, dataetiketter sat til optimeretIndex, tekstfarve med en hvid farveplukker, tekststørrelsesskyder sat til 20, tekststregfarve der viser sort og tekststregbredde-skyder sat til 2. Hovedkortområdet viser et gadekort over Wien, Østrig, med lilla rutelinjer, der forbinder nummererede vejpunkter mærket 1 til 9, som angiver den optimerede besøgsrækkefølge. Datalagspanelet til venstre viser WorkordersQuery med synlighed skjult og Optimeret rute som aktivt lag.

Resumé

Denne vejledning demonstrerede, hvordan man bygger et end-to-end, realtids arbejdsordre-routingscenarie ved hjælp af Microsoft Fabric Real-Time Intelligence og Fabric Maps. Streaming af arbejdsordredata indlæses, transformeres og forespørges ved hjælp af KQL, hvorefter de visualiseres på et kort for at skabe et dynamisk, kontinuerligt opdaterende overblik over arbejdsordreplaceringer. Ved at integrere routinglogik og optimale stiberegninger viser løsningen, hvordan realtids geospatial analyse kan hjælpe dispatchere og feltdriftsteams med at træffe hurtigere og bedre informerede beslutninger.

Dette mønster kan udvides til andre lokationsbaserede scenarier såsom flådesporing, aktivovervågning og hændelsesrespons. Ved at kombinere hændelsesdrevne data, KQL-baseret analyse og kortbaseret visualisering muliggør Microsoft Fabric en overgang fra rå streamingdata til handlingsorienterede geografiske indsigter i næsten realtid.

Næste trin

For mere information om emner til stofkort dækket i denne vejledning: