Power Platform-lager-API

Lager-API'en giver dig mulighed for at udføre strukturerede forespørgsler mod Azure Resource Graph ved hjælp af en POST-anmodning med en forespørgselsspecifikation i anmodningens brødtekst. API'en oversætter din forespørgselsspecifikation til Kusto Query Language (KQL) til udførelse i forhold til Azure Resource Graph. Lager-API'en for Ressourcer er en del af referencedokumentationen til Power Platform API. Du kan se en komplet liste over ressourcetyper og felter, der kan forespørges på, under Reference til Power Platform-lagerskema.

API-slutpunkt


POST {PowerPlatformAPI url}/resourcequery/resources/query?api-version=2024-10-01

Anmodningstekst

Anmodningens brødtekst skal indeholde en forespørgselsspecifikation med følgende struktur:

Struktur for forespørgselsanmodning

{
  "TableName": "string",
  "Clauses": [
    {
      "$type": "clause_type",
      // clause-specific properties
    }
  ],
  "Options": {
    "Top": 100,
    "Skip": 0,
    "SkipToken": "string"
  }
}

Egenskaber

Egenskab Type Obligatorisk Beskrivelse
TableName streng Ja Den destinationstabel/ressourcetype, der skal forespørges om (f.eks. "PowerPlatformResources")
Clauses matrix Ja Matrix af forespørgselsklausuler, der definerer de handlinger, der skal udføres
Options objekt Nej Forespørgselsindstillinger for Azure Resource Graph til sideinddeling og resultatkontrol

Forespørgselsindstillinger

Objektet Options understøtter Azure Resource Graph forespørgselsparametre for sideinddeling og resultatkontrol. Se ResourceQueryRequestOptions dokumentationen for at få mere at vide.

Understøttede forespørgselsklausuler

API'en understøtter de delsætningstyper, der er fremhævet i dette afsnit, via polymorf JSON-serialisering. Hver delsætningstype svarer til KQL-operatorer som dokumenteret i KQL-referencen:

Where-delsætning

Filtrerer data baseret på feltbetingelser. Oversætter til KQL-operatorenwhere.

{
  "$type": "where",
  "FieldName": "string",
  "Operator": "string",
  "Values": ["string1", "string2"]
}

Understøttede operatorer: API'en understøtter alle KQL-standardsammenlignings- og strengoperatorer. Du kan se en komplet liste over tilgængelige operatorer i dokumentationen til KQL-strengoperatorer og numeriske operatorer .

Eksempel:

{
  "$type": "where",
  "FieldName": "type",
  "Operator": "in~",
  "Values": ["'microsoft.powerapps/canvasapps'", "'microsoft.copilotstudio/agents'"]
}

Oversætter til KQL:| where type in~ ('microsoft.powerapps/canvasapps', 'microsoft.copilotstudio/agents')

Projektdelsætning

Vælger bestemte felter fra resultaterne. Oversætter til KQL-operatorenproject.

{
  "$type": "project",
  "FieldList": ["field1", "field2", "field3"]
}

Eksempel:

{
  "$type": "project",
  "FieldList": [
    "name", 
    "properties.displayName", 
    "environmentId = tostring(properties.environmentId)",
    "createdDate = properties.createdAt"
  ]
}

Oversætter til KQL:| project name, properties.displayName, environmentId = tostring(properties.environmentId), createdDate = properties.createdAt

Udtagningsklausul

Begrænser antallet af returnerede resultater. Oversætter til KQL-operatorentake.

{
  "$type": "take",
  "TakeCount": 50
}

Oversætter til KQL:| take 50

ORDER BY-klausul

Sorterer resultater efter angivne felter. Oversætter til KQL-operatorensort.


{
  "$type": "orderby",
  "FieldNamesAscDesc": {
    "field1": "asc",
    "field2": "desc"
  }
}

Eksempel:

{
  "$type": "orderby",
  "FieldNamesAscDesc": {
    "tostring(properties.createdAt)": "desc",
    "properties.displayName": "asc"
  }
}

Oversætter til KQL:| sort by tostring(properties.createdAt) desc, properties.displayName asc

Distinct klausul

Returnerer entydige værdier for angivne felter. Oversætter til KQL-operatorendistinct.


{
  "$type": "distinct",
  "FieldList": ["field1", "field2"]
}

Oversætter til KQL:| distinct field1, field2

Tæl betingelse

Returnerer antallet af samsvarende poster. Oversætter til KQL-operatorencount.

{
  "$type": "count"
}

Oversætter til KQL:| count

Opsummer delsætning

Aggregerer data ved hjælp af handlingerne count eller argmax. Oversætter til KQL-operatorensummarize.

{
  "$type": "summarize",
  "SummarizeClauseExpression": {
    "OperatorName": "count|argmax",
    "OperatorFieldName": "string",
    "FieldList": ["field1", "field2"]
  }
}

Understøttede operatorer:

  • count count() → – Antal poster, der er grupperet efter angivne felter.
  • argmaxarg_max() – Hent poster med maksimum værdi i det angivne felt.

Eksempel på antal:

{
  "$type": "summarize",
  "SummarizeClauseExpression": {
    "OperatorName": "count",
    "OperatorFieldName": "resourceCount",
    "FieldList": ["resourceGroup", "type"]
  }
}

Oversætter til KQL:| summarize resourceCount = count() by resourceGroup, type

ArgMax-eksempel:

{
  "$type": "summarize",
  "SummarizeClauseExpression": {
    "OperatorName": "argmax",
    "OperatorFieldName": "createdTime",
    "FieldList": ["resourceGroup"]
  }
}

Oversætter til KQL:| summarize arg_max(createdTime, *) by resourceGroup

Udvid delsætning

Føjer beregnede kolonner til resultaterne. Oversætter til KQL-operatorenextend.

{
  "$type": "extend",
  "FieldName": "newFieldName",
  "Expression": "KQL_EXPRESSION"
}

Eksempel:

{
  "$type": "extend",
  "FieldName": "environmentId",
  "Expression": "tostring(properties.environmentId)"
}

Oversætter til KQL:| extend environmentId = tostring(properties.environmentId)https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/scalarfunctions) til tilgængelige funktioner.

Joindelsætning

Forener med en anden tabel eller underforespørgsel. Oversætter til KQL-operatorenjoin.


{
  "$type": "join",
  "RightTable": {
    "TableName": "string",
    "Clauses": []
  },
  "JoinKind": "string",
    "LeftColumnName": "string",
  "RightColumnName": "string"
}

Understøttede joinforbindelser: API'en understøtter alle KQL-joinforbindelser. Du kan se en komplet liste over tilgængelige jointyper og deres funktionsmåde i dokumentationen til KQL-joinoperatoren.

Eksempel (sammenføjning af Power Platform-ressourcer med miljøoplysninger):

{
  "$type": "join",
  "JoinKind": "leftouter",
  "RightTable": {
    "TableName": "PowerPlatformResources",
    "Clauses": [
      {
        "$type": "where",
        "FieldName": "type",
        "Operator": "==",
        "Values": ["'microsoft.powerplatform/environments'"]
      },
      {
        "$type": "project",
        "FieldList": [
          "environmentId = name",
          "environmentName = properties.displayName",
          "environmentRegion = location",
          "environmentType = properties.environmentType",
          "isManagedEnvironment = properties.isManaged"
        ]
      }
    ]
  },
  "LeftColumnName": "environmentId",
  "RightColumnName": "environmentId"
}

Oversætter til KQL:| join kind=leftouter (PowerPlatformResources | where type == 'microsoft.powerplatform/environments' | project environmentId = name, environmentName = properties.displayName, environmentRegion = location, environmentType = properties.environmentType, isManagedEnvironment = properties.isManaged) on $left.environmentId == $right.environmentId

Komplette forespørgselseksempler

Eksempel: Grundlæggende Power Platform-ressourceforespørgsel (Standardmønster for Power Platform Administration)

Hent alle Power Platform-ressourcer med miljøoplysninger – dette er den standardforespørgsel, der bruges af Power Platform Administration.

{
  "Options": {
    "Top": 1000,
    "Skip": 0,
    "SkipToken": ""
  },
  "TableName": "PowerPlatformResources",
  "Clauses": [
    {
      "$type": "extend",
      "FieldName": "joinKey",
      "Expression": "tolower(tostring(properties.environmentId))"
    },
    {
      "$type": "join",
      "JoinKind": "leftouter",
      "RightTable": {
        "TableName": "PowerPlatformResources",
        "Clauses": [
          {
            "$type": "where",
            "FieldName": "type",
            "Operator": "==",
            "Values": ["'microsoft.powerplatform/environments'"]
          },
            {
            "$type": "project",
            "FieldList": [
              "joinKey = tolower(name)",
              "environmentName = properties.displayName",
              "environmentRegion = location",
              "environmentType = properties.environmentType",
              "isManagedEnvironment = properties.isManaged"
            ]
          }
        ]
      },
      "LeftColumnName": "joinKey",
      "RightColumnName": "joinKey"
    },
    {
      "$type": "where",
      "FieldName": "type",
      "Operator": "in~",
      "Values": [
        "'microsoft.powerapps/canvasapps'",
        "'microsoft.powerapps/modeldrivenapps'",
        "'microsoft.powerautomate/cloudflows'",
        "'microsoft.copilotstudio/agents'",
        "'microsoft.powerautomate/agentflows'",
        "'microsoft.powerapps/codeapps'"
      ]
    },
    {
      "$type": "orderby",
      "FieldNamesAscDesc": {
        "tostring(properties.createdAt)": "desc"
      }
    }
  ]
}

Tilsvarende KQL:

PowerPlatformResources
| extend joinKey = tolower(tostring(properties.environmentId))
| join kind=leftouter (
    PowerPlatformResources
    | where type == 'microsoft.powerplatform/environments'
    | project joinKey = tolower(name), environmentName = properties.displayName, environmentRegion = location, environmentType = properties.environmentType, isManagedEnvironment = properties.isManaged
  ) on $left.joinKey == $right.joinKey
| where type in~ ('microsoft.powerapps/canvasapps', 'microsoft.powerapps/modeldrivenapps', 'microsoft.powerautomate/cloudflows', 'microsoft.copilotstudio/agents', 'microsoft.powerautomate/agentflows', 'microsoft.powerapps/codeapps')
| order by tostring(properties.createdAt) desc

Eksempel: Tæl Power Platform-ressourcer efter type og placering

{
  "TableName": "PowerPlatformResources",
  "Clauses": [
    {
      "$type": "summarize",
      "SummarizeClauseExpression": {
        "OperatorName": "count",
        "OperatorFieldName": "resourceCount",
        "FieldList": ["type", "location"]
      }
    },
    {
      "$type": "orderby",
      "FieldNamesAscDesc": {
        "resourceCount": "desc"
      }
    }
  ]
}

Tilsvarende KQL:

PowerPlatformResources
| summarize resourceCount = count() by type, location
| sort by resourceCount desc

Eksempel: Simpel forespørgsel efter canvas-apper

Hent lærredsapps med grundlæggende filtrering og projektion:

{
  "TableName": "PowerPlatformResources",
  "Clauses": [
    {
      "$type": "where",
      "FieldName": "type",
      "Operator": "==",
      "Values": ["'microsoft.powerapps/canvasapps'"]
    },
    {
      "$type": "project",
      "FieldList": [
        "name",
        "location",
        "properties.displayName",
        "properties.createdAt",
        "properties.environmentId"
      ]
    },
    {
      "$type": "take",
      "TakeCount": 100
    }
  ]
}

Tilsvarende KQL:

PowerPlatformResources
| where type == 'microsoft.powerapps/canvasapps'
| project name, location, properties.displayName, properties.createdAt, properties.environmentId
| take 100

Eksempel: Filtrer ressourcer efter miljø og datointerval

{
  "TableName": "PowerPlatformResources",
  "Clauses": [
    {
      "$type": "where",
      "FieldName": "type",
      "Operator": "==",
      "Values": ["'microsoft.powerapps/canvasapps'"]
    },
    {
      "$type": "where",
      "FieldName": "properties.environmentId",
      "Operator": "==",
      "Values": ["your-environment-id"]
    },
    {
      "$type": "extend",
      "FieldName": "createdDate",
      "Expression": "todatetime(properties.createdAt)"
    },
    {
      "$type": "where",
      "FieldName": "createdDate",
      "Operator": ">=",
      "Values": ["datetime(2024-01-01)"]
    },
    {
      "$type": "project",
      "FieldList": [
        "name",
        "properties.displayName",
        "properties.createdAt",
        "properties.createdBy",
        "properties.ownerId"
      ]
    },
    {
      "$type": "orderby",
      "FieldNamesAscDesc": {
        "createdDate": "desc"
      }
    }
  ]
}

Oversætter til KQL:

PowerPlatformResources
| where type == 'microsoft.powerapps/canvasapps'
| where properties.environmentId == "your-environment-id"
| extend createdDate = todatetime(properties.createdAt)
| where createdDate >= datetime(2024-01-01)
| project name, properties.displayName, properties.createdAt, properties.createdBy, properties.ownerId
| sort by createdDate desc

Svarformat

API'en returnerer et ResourceQueryResult objekt fra Azure Resource Graph SDK. Dette objekt indeholder forespørgselsresultater og metadata om udførelse af forespørgslen.

Svarstruktur:

{
  "totalRecords": 1250,
  "count": 50,
  "resultTruncated": 1,
  "skipToken": "string_for_next_page",
  "data": [
    // Array of result objects based on your query
  ]
}