Eventstream REST API

Microsoft Fabric REST API'er gør det muligt for dig at automatisere Fabric-procedurer og -processer, hvilket hjælper din organisation med at udføre opgaver mere effektivt og præcist. Ved at automatisere disse arbejdsprocesser kan du reducere fejl, forbedre produktiviteten og opnå omkostningsbesparelser på tværs af dine handlinger.

I Fabric repræsenterer et element et sæt funktioner i en bestemt oplevelse. Eventstream er f.eks. et element under realtidsintelligensoplevelsen. Hvert element i Fabric er defineret af en elementdefinition – et objekt, der skitserer den struktur, det format og de nøglekomponenter, der udgør elementet.

Denne artikel indeholder en omfattende vejledning i, hvordan du bruger Rest API'er til Microsoft Fabric til at oprette og administrere Eventstream-elementer i dit Fabric-arbejdsområde. Du finder detaljerede specifikationer for hver Eventstream API-handling sammen med instruktioner til konfiguration af dine API-kald.

Hvis du vil have en komplet oversigt over Microsoft Fabric REST API'er, skal du gå til: Brug af REST API'erne til Microsoft Fabric

Understøttede Eventstream-API'er

Eventstream understøtter i øjeblikket følgende definitionsbaserede API'er:

API'er Beskrivelse
Opret Eventstream-element med definition Bruges til at oprette et Eventstream-element i arbejdsområdet med detaljerede oplysninger om topologien, herunder kilde, destinationer, operatorer og streams.
Hent hændelsesstreamelementdefinition Bruges til at hente en Eventstream-elementdefinition med detaljerede oplysninger om topologien, herunder kilde, destinationer, operatorer og streams.
Opdater definitionen af Eventstream-element Bruges til at opdatere eller redigere definitionen af et Eventstream-element, herunder kilde, destinationer, operatorer og streams.

Hvis du vil administrere dine Eventstream-elementer ved hjælp af CRUD-handlinger, skal du gå til Fabric REST API'er – Eventstream. Disse API'er understøtter følgende handlinger:

  • Opret eventstream
  • Slet hændelsesstream
  • Hent hændelsesstream
  • Vis hændelsesstreams
  • Opdater Eventstream

Sådan kalder du Eventstream API?

Trin 1: Godkend til Fabric

Hvis du vil arbejde med Fabric-API'er, skal du først hente et Microsoft Entra-token til Fabric-tjenesten og derefter bruge dette token i godkendelsesheaderen for API-kaldet. Der er to muligheder for at hente Microsoft Entra-token.

mulighed 1: Hent token ved hjælp af MSAL.NET

Hvis dit program skal have adgang til Fabric-API'er ved hjælp af en tjenesteprincipal, kan du bruge biblioteket MSAL.NET til at hente et adgangstoken. Følg Fabric API quickstart for at oprette en C#-konsolapp, som opsamler et Azure AD-token ved hjælp MSAL.Net bibliotek, og brug derefter C# HttpClient til at kalde List workspaces API.

mulighed 2: Hent token ved hjælp af Fabric Portal

Du kan bruge dit Azure AD-token til at godkende og teste Fabric-API'erne. Log på Fabric Portal for den lejer, du vil teste, og tryk på F12 for at gå til browserens udviklertilstand. Kør følgende i konsollen:

powerBIAccessToken

Kopiér tokenet, og indsæt det i dit program.

Notat

Hvis den eventstream, du opretter, indeholder kilder, der bruger en cloud-forbindelse, så sørg for, at den identitet, du bruger til at få tokenet, har tilladelse til at få adgang til den cloud-forbindelse, uanset om det er en serviceprincipal eller en bruger.

Trin 2: Forbered dig på en Eventstream-brødtekst i JSON

Opret en JSON-nyttedata, der konverteres til base64 i API-anmodningen. Definitionen af Eventstream-elementet følger en graflignende struktur og består af følgende komponenter:

Felt Beskrivelse
Kilder Datakilder, der kan overføres til Eventstream til behandling. Understøttede datakilder omfatter Azure-streamingkilder, tredjepartsstreamingkilder, CDC-database (ændring af datahentning), Azure Blob Storage-hændelser og Fabric-systemhændelser.
Destinationer Slutpunkter i Fabric, hvor behandlede data kan dirigeres til, herunder Lakehouse, Eventhouse, Activator og andre.
Operatører Hændelsesprocessorer, der håndterer datastrømme i realtid, f.eks. Filter, Aggregate, Group By og Join.
Streams Datastrømme, der er tilgængelige for abonnement og analyse i realtidshubben. Der er to typer streams: standardstreams og afledte streams.

Brug API-skabelonerne i GitHub- til at definere brødteksten i eventstreamen.

Du kan se dette Swagger-dokument for at få oplysninger om hver API-egenskab, og det hjælper dig også med at definere en Eventstream API-nyttedata.

Eventhouse direkte indlæsningstilstand

Når du bruger Eventhouse direkte indtastningstilstand som destination i din Eventstream API-payload, skal du sørge for at angive de Eventhouse-specifikke egenskaber i destinationsdefinitionen, såsom connectionName og mappingRuleName.

For hele opsætningsflowet, inklusive hvordan du:

  • skabe Eventhouse,
  • få KQL-databaseegenskaberne,
  • Opret tabellen og JSON-mapping-reglen, og
  • Opret Eventstreamen i DirectIngestion-tilstand ved hjælp af API'er,

se Create an Eventstream med en Eventhouse DirectIngestion destination ved brug af API'er.

Du kan finde flere oplysninger om, hvordan du definerer et Eventstream-element, i afsnittet Eventstream-elementdefinition.

eksempel på Eventstream-definition i JSON:

{
  "sources": [
    {
      "name": "SqlServerOnVmDbCdc",
      "type": "SQLServerOnVMDBCDC",
      "properties":
      {
        "dataConnectionId": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
        "tableName": ""
      }
    }
  ],
  "destinations": [
    {
      "name": "Lakehouse",
      "type": "Lakehouse",
      "properties":
      {
        "workspaceId": "bbbb1111-cc22-3333-44dd-555555eeeeee",
        "itemId": "cccc2222-dd33-4444-55ee-666666ffffff",
        "schema": "",
        "deltaTable": "newTable",
        "minimumRows": 100000,
        "maximumDurationInSeconds": 120,
        "inputSerialization":
        {
          "type": "Json",
          "properties":
          {
            "encoding": "UTF8"
          }
        }
      },
      "inputNodes": [{"name": "derivedStream"}]
    }
  ],
  "streams": [
    {
      "name": "myEventstream-stream",
      "type": "DefaultStream",
      "properties":
      {},
      "inputNodes": [{"name": "SqlServerOnVmDbCdc"}]
    },
    {
      "name": "derivedStream",
      "type": "DerivedStream",
      "properties":
      {
        "inputSerialization":
        {
          "type": "Json",
          "properties":
          {
            "encoding": "UTF8"
          }
        }
      },
      "inputNodes": [{"name": "GroupBy"}]
    }
  ],
  "operators": [
    {
      "name": "GroupBy",
      "type": "GroupBy",
      "inputNodes": [{"name": "myEventstream-stream"}],
      "properties":
      {
        "aggregations": [
          {
            "aggregateFunction": "Average",
            "column":
            {
              "expressionType": "ColumnReference",
              "node": null,
              "columnName": "payload",
              "columnPathSegments": [{"field": "ts_ms"}]
            },
            "alias": "AVG_ts_ms"
          }
        ],
        "groupBy": [],
        "window":
        {
          "type": "Tumbling",
          "properties":
          {
            "duration":
            {
              "value": 5,
              "unit": "Minute"
            },
            "offset":
            {
              "value": 1,
              "unit": "Minute"
            }
          }
        }
      }
    }
  ],
  "compatibilityLevel": "1.1"
}

Trin 3: Opret en base64-streng af Eventstream JSON

Brug et værktøj som Base64 Encode og Decode til at konvertere Eventstream JSON til base64-streng.

Et skærmbillede af kodning af Eventstream JSON til base64-streng.

Trin 4: Opret API-anmodningsteksten

Brug Base64-kodet Eventstream JSON i det forrige trin som indhold for API-anmodningsteksten.

Her er et eksempel på en nyttedata med den Base64-kodede streng:

{
 "definition": {
  "parts": [
   {
    "path": "eventstream.json",
    "payload": "ewogICJzb3VyY2VzIjogWwogICAgewogICAgICAibmFtZSI6ICJTcWxTZXJ2ZXJPblZtRGJDZGMiLAogICAgICAidHlwZSI6ICJTUUxTZXJ2ZXJPblZNREJDREMiLAogICAgICAicHJvcGVydGllcyI6CiAgICAgIHsKICAgICAgICAiZGF0YUNvbm5lY3Rpb25JZCI6ICJhYWFhYWFhYS0wMDAwLTExMTEtMjIyMi1iYmJiYmJiYmJiYmIiLAogICAgICAgICJ0YWJsZU5hbWUiOiAiIgogICAgICB9CiAgICB9CiAgXSwKICAiZGVzdGluYXRpb25zIjogWwogICAgewogICAgICAibmFtZSI6ICJMYWtlaG91c2UiLAogICAgICAidHlwZSI6ICJMYWtlaG91c2UiLAogICAgICAicHJvcGVydGllcyI6CiAgICAgIHsKICAgICAgICAid29ya3NwYWNlSWQiOiAiYmJiYjExMTEtY2MyMi0zMzMzLTQ0ZGQtNTU1NTU1ZWVlZWVlIiwKICAgICAgICAiaXRlbUlkIjogImNjY2MyMjIyLWRkMzMtNDQ0NC01NWVlLTY2NjY2NmZmZmZmZiIsCiAgICAgICAgInNjaGVtYSI6ICIiLAogICAgICAgICJkZWx0YVRhYmxlIjogIm5ld1RhYmxlIiwKICAgICAgICAibWluaW11bVJvd3MiOiAxMDAwMDAsCiAgICAgICAgIm1heGltdW1EdXJhdGlvbkluU2Vjb25kcyI6IDEyMCwKICAgICAgICAiaW5wdXRTZXJpYWxpemF0aW9uIjoKICAgICAgICB7CiAgICAgICAgICAidHlwZSI6ICJKc29uIiwKICAgICAgICAgICJwcm9wZXJ0aWVzIjoKICAgICAgICAgIHsKICAgICAgICAgICAgImVuY29kaW5nIjogIlVURjgiCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9LAogICAgICAiaW5wdXROb2RlcyI6IFt7Im5hbWUiOiAiZGVyaXZlZFN0cmVhbSJ9XQogICAgfQogIF0sCiAgInN0cmVhbXMiOiBbCiAgICB7CiAgICAgICJuYW1lIjogIm15RXZlbnRzdHJlYW0tc3RyZWFtIiwKICAgICAgInR5cGUiOiAiRGVmYXVsdFN0cmVhbSIsCiAgICAgICJwcm9wZXJ0aWVzIjoKICAgICAge30sCiAgICAgICJpbnB1dE5vZGVzIjogW3sibmFtZSI6ICJTcWxTZXJ2ZXJPblZtRGJDZGMifV0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogImRlcml2ZWRTdHJlYW0iLAogICAgICAidHlwZSI6ICJEZXJpdmVkU3RyZWFtIiwKICAgICAgInByb3BlcnRpZXMiOgogICAgICB7CiAgICAgICAgImlucHV0U2VyaWFsaXphdGlvbiI6CiAgICAgICAgewogICAgICAgICAgInR5cGUiOiAiSnNvbiIsCiAgICAgICAgICAicHJvcGVydGllcyI6CiAgICAgICAgICB7CiAgICAgICAgICAgICJlbmNvZGluZyI6ICJVVEY4IgogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSwKICAgICAgImlucHV0Tm9kZXMiOiBbeyJuYW1lIjogIkdyb3VwQnkifV0KICAgIH0KICBdLAogICJvcGVyYXRvcnMiOiBbCiAgICB7CiAgICAgICJuYW1lIjogIkdyb3VwQnkiLAogICAgICAidHlwZSI6ICJHcm91cEJ5IiwKICAgICAgImlucHV0Tm9kZXMiOiBbeyJuYW1lIjogIm15RXZlbnRzdHJlYW0tc3RyZWFtIn1dLAogICAgICAicHJvcGVydGllcyI6CiAgICAgIHsKICAgICAgICAiYWdncmVnYXRpb25zIjogWwogICAgICAgICAgewogICAgICAgICAgICAiYWdncmVnYXRlRnVuY3Rpb24iOiAiQXZlcmFnZSIsCiAgICAgICAgICAgICJjb2x1bW4iOgogICAgICAgICAgICB7CiAgICAgICAgICAgICAgImV4cHJlc3Npb25UeXBlIjogIkNvbHVtblJlZmVyZW5jZSIsCiAgICAgICAgICAgICAgIm5vZGUiOiBudWxsLAogICAgICAgICAgICAgICJjb2x1bW5OYW1lIjogInBheWxvYWQiLAogICAgICAgICAgICAgICJjb2x1bW5QYXRoU2VnbWVudHMiOiBbeyJmaWVsZCI6ICJ0c19tcyJ9XQogICAgICAgICAgICB9LAogICAgICAgICAgICAiYWxpYXMiOiAiQVZHX3RzX21zIgogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImdyb3VwQnkiOiBbXSwKICAgICAgICAid2luZG93IjoKICAgICAgICB7CiAgICAgICAgICAidHlwZSI6ICJUdW1ibGluZyIsCiAgICAgICAgICAicHJvcGVydGllcyI6CiAgICAgICAgICB7CiAgICAgICAgICAgICJkdXJhdGlvbiI6CiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidmFsdWUiOiA1LAogICAgICAgICAgICAgICJ1bml0IjogIk1pbnV0ZSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm9mZnNldCI6CiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidmFsdWUiOiAxLAogICAgICAgICAgICAgICJ1bml0IjogIk1pbnV0ZSIKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQogIF0sCiAgImNvbXBhdGliaWxpdHlMZXZlbCI6ICIxLjEiCn0=",
    "payloadType": "InlineBase64"
   },
   {
    "path": ".platform",
    "payload": "ewogICIkc2NoZW1hIjogImh0dHBzOi8vZGV2ZWxvcGVyLm1pY3Jvc29mdC5jb20vanNvbi1zY2hlbWFzL2ZhYnJpYy9naXRJbnRlZ3JhdGlvbi9wbGF0Zm9ybVByb3BlcnRpZXMvMi4wLjAvc2NoZW1hLmpzb24iLAogICJtZXRhZGF0YSI6IHsKICAgICJ0eXBlIjogIkV2ZW50c3RyZWFtIiwKICAgICJkaXNwbGF5TmFtZSI6ICJhbGV4LWVzMSIKICB9LAogICJjb25maWciOiB7CiAgICAidmVyc2lvbiI6ICIyLjAiLAogICAgImxvZ2ljYWxJZCI6ICIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiCiAgfQp9",
    "payloadType": "InlineBase64"
   }
  ]
 }
}

Trin 5: Opret et Eventstream-element ved hjælp af API

I dit program skal du sende en anmodning om at oprette et Eventstream-element med den Base64-kodede streng i nyttedataene.

PowerShell-eksempel:

$evenstreamAPI = "https://api.fabric.microsoft.com/v1/workspaces/$workspaceId/items" 

## Invoke the API to create the Eventstream
Invoke-RestMethod -Headers $headerParams -Method POST -Uri $evenstreamAPI -Body ($body) -ContentType "application/json"

Definition af hændelsesstreamelement

Definitionen af Eventstream-elementet har en graflignende struktur, der består af fire komponenter: kilder, destinationer, operatorer og streams.

Kilder

Hvis du vil definere en Eventstream-kilde i API-brødteksten, skal du sørge for, at hvert felt og hver egenskab er angivet korrekt i henhold til tabellen.

Felt Skriv Beskrivelse Krav Tilladte værdier/format
id Streng (UUID) Det entydige id for kilden, der genereres af systemet. Valgfrit i CREATE, påkrævet i UPDATE UUID-format
name Streng Et entydigt navn til kilden, der bruges til at identificere den i Eventstream. Obligatorisk En hvilken som helst gyldig streng
type Streng (optæller) Angiver kildetypen. Skal matche en af de foruddefinerede værdier. Obligatorisk AmazonKinesis, AmazonMSKKafka, ApacheKafka, AzureCosmosDBCDC,AzureBlobStorageEventsAzureEventHub , , AzureIoTHubAzureSQLDBCDC, , AzureSQLMIDBCDCConfluentCloud, CustomEndpoint, FabricCapacityUtilizationEventsGooglePubSub, MySQLCDC, PostgreSQLCDC, SampleData, , FabricWorkspaceItemEventsFabricJobEventsFabricOneLakeEvents
properties Objekt Andre indstillinger, der er specifikke for den valgte kildetype. Obligatorisk Eksempel på AzureEventHub type: dataConnectionId,consumerGroupName,inputSerialization

Eksempel på Eventstream-kilde i API-brødtekst:

{
  "sources": [
    {
      "id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
      "name": "AzureEventHubSource",
      "type": "AzureEventHub",
      "properties":
      {
        "dataConnectionId": "bbbbbbbb-1111-2222-3333-cccccccccccc",
        "consumerGroupName": "$Default",
        "inputSerialization":
        {
          "type": "Json",
          "properties":
          {
            "encoding": "UTF8"
          }
        }
      }
    }
  ]
}

Destinationer

Hvis du vil definere en Eventstream-destination i API-brødteksten, skal du sørge for, at hvert felt og hver egenskab er angivet korrekt i henhold til tabellen.

Felt Skriv Beskrivelse Krav Tilladte værdier/format
id Streng (UUID) Det entydige id for destinationen, der genereres af systemet. Valgfrit i CREATE, påkrævet i UPDATE UUID-format
name Streng Et entydigt navn til destinationen, der bruges til at identificere den i Eventstream. Obligatorisk En hvilken som helst gyldig streng
type Streng (optæller) Angiver destinationstypen. Skal matche en af de foruddefinerede værdier. Obligatorisk "Activator", "CustomEndpoint", "Eventhouse""Lakehouse"
properties Objekt Andre indstillinger, der er specifikke for den valgte destinationstype. Obligatorisk Eksempel på Eventhouse type: "dataIngestionMode", "workspaceId", "itemId", "databaseName"
inputNodes Matrix En reference til inputnoderne for destinationen, f.eks. dit Eventstream-navn eller et operatornavn. Obligatorisk Eksempel: eventstream-1

Hvis du bruger en Eventhouse Direct Ingestion mode-destination , skal du sikre dig, at connectionName og mappingRuleName er korrekt specificeret. For end-to-end opsætningstrin, se Opret en Eventstream med en Eventhouse DirectIngestion destination ved brug af API'er.


Eksempel på Eventstream-kilde i API-brødtekst:

{
  "destinations": [
    {
      "id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
      "name": "EventhouseDestination",
      "type": "Eventhouse",
      "properties":
      {
        "dataIngestionMode": "ProcessedIngestion",
        "workspaceId": "bbbbbbbb-1111-2222-3333-cccccccccccc",
        "itemId": "cccc2222-dd33-4444-55ee-666666ffffff",
        "databaseName": "myeventhouse",
        "tableName": "mytable",
        "inputSerialization":
        {
          "type": "Json",
          "properties":
          {
            "encoding": "UTF8"
          }
        }
      },
      "inputNodes": [{"name": "eventstream-1"}]
    }
  ]
}

Operatorer

Hvis du vil definere en Eventstream-operator i API-brødteksten, skal du sørge for, at hvert felt og hver egenskab er angivet korrekt i henhold til tabellen.

Felt Skriv Beskrivelse Krav Tilladte værdier/format
name Streng Et entydigt navn til operatoren. Obligatorisk En hvilken som helst gyldig streng
type Streng (optæller) Angiver operatortypen. Skal matche en af de foruddefinerede værdier. Obligatorisk "Filter", , "Join""ManageFields", "Aggregate", "GroupBy", , "Union","Expand"
properties Objekt Andre indstillinger, der er specifikke for den valgte operatortype. Obligatorisk Eksempel på Filter type: "conditions"
inputNodes Matrix En liste over referencer til inputnoderne for operatoren. Obligatorisk Eksempel: eventstream-1
inputSchemas Matrix En liste over referencer til inputnoderne for operatoren. Valgfrit Eksempel på Filter type: "schema"

Eksempel på hændelsesstreamoperator i API-brødtekst:

{
  "operators": [
    {
      "name": "FilterName",
      "type": "Filter",
      "inputNodes": [{"name": "eventstream-1"}],
      "properties":
      {
        "conditions": [
          {
            "column":
            {
              "node": "nodeName",
              "columnName": "columnName",
              "columnPath": ["path","to","column"]
            },
            "operator": "Equals",
            "value":
            {
              "dataType": "nvarchar(max)",
              "value": "stringValue"
            }
          }
        ]
      }
    }
  ]
}

Streams

Hvis du vil definere en stream i API-brødteksten, skal du sørge for, at hvert felt og hver egenskab er angivet korrekt i henhold til tabellen.

Felt Skriv Beskrivelse Krav Tilladte værdier/format
id Streng (UUID) Det entydige id for streamen, der genereres af systemet. Valgfrit UUID-format
name Streng Et entydigt navn til streamen. Obligatorisk En hvilken som helst gyldig streng
type Streng (optæller) Angiver streamtypen. Skal matche en af de foruddefinerede værdier. Obligatorisk "DefaultStream", "DerivedStream"
properties Objekt Andre indstillinger, der er specifikke for den valgte streamtype. Obligatorisk Eksempel på Filter type: "conditions"
inputNodes Matrix En liste over referencer til inputnoderne i streamen. Valgfrit Eksempel: [], "eventstream-1"

Eksempel på stream i API-brødtekst:

{
  "streams": [
    {
      "name": "myEventstream-stream",
      "type": "DefaultStream",
      "properties":
      {},
      "inputNodes": [{"name": "sourceName"}]
    },
    {
      "name": "DerivedStreamName",
      "type": "DerivedStream",
      "properties":
      {
        "inputSerialization":
        {
          "type": "Json",
          "properties":
          {
            "encoding": "UTF8"
          }
        }
      },
      "inputNodes": [{"name": "FilterName"}]
    }
  ]
}