API for Power Platform-beholdning

Med lager-API-en kan du kjøre strukturerte spørringer mot Azure Resource Graph ved hjelp av en POST-forespørsel med en spørringsspesifikasjon i forespørselsteksten. API-en oversetter spørringsspesifikasjonen til Kusto Query Language (KQL) for kjøring mot Azure Resource Graph. Lager-API-en for ressurser er en del av referansedokumentasjonen for Power Platform API. Hvis du vil ha en fullstendig liste over ressurstyper og spørringsfelt, kan du se Referanse for Power Platform-lagerskjema.

API-endepunkt


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

Forespørselstekst

Forespørselsteksten må inneholde en spørringsspesifikasjon med følgende struktur:

Spørringsforespørselsstruktur

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

Egenskaper

Egenskap Type Obligatorisk Beskrivelse
TableName streng Ja Måltabellen/ressurstypen som skal spørres (dvs. PowerPlatformResources»)
Clauses matrise Ja Matrise med spørringssetninger som definerer operasjonene som skal utføres
Options objekt Nei Azure Resource Graph spørringsalternativer for paginering og resultatkontroll

Spørringsalternativer

Objektet Options støtter Azure Resource Graph-spørringsparametere for paginering og resultatkontroll. Se ResourceQueryRequestOptions dokumentasjon for å finne ut mer.

Støttede spørringssetninger

API-en støtter setningstypene som er uthevet i denne delen gjennom polymorf JSON-serialisering. Hver setningstype tilsvarer KQL-operatorer som dokumentert i KQL-referansen:

Where-setningsdel

Filtrerer data basert på feltbetingelser. Oversettes til KQL-operatorenwhere.

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

Støttede operatorer: API-en støtter alle standard KQL-sammenlignings- og strengoperatorer. Hvis du vil ha en fullstendig liste over tilgjengelige operatorer, kan du se dokumentasjonen for KQL-strengoperatorer og numeriske operatorer .

Eksempel:

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

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

Prosjektsetning

Velger bestemte felt fra resultatene. Oversettes til KQL-operatorenproject.

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

Eksempel:

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

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

Take-setningsdel

Begrenser antall returnerte resultater. Oversettes til KQL-operatorentake.

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

Oversettes til KQL:| take 50

Rekkefølge etter setningsdel

Sorterer resultater etter angitte felt. Oversettes til KQL-operatorensort.


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

Eksempel:

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

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

Distinkt setning

Returnerer unike verdier for definerte felt. Oversettes til KQL-operatorendistinct.


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

Oversettes til KQL:| distinct field1, field2

Count-setningsdel

Returnerer antall samsvarende poster. Oversettes til KQL-operatorencount.

{
  "$type": "count"
}

Oversettes til KQL:| count

Oppsummer setning

Aggregerer data ved hjelp av antall- eller argmax-operasjoner. Oversettes til KQL-operatorensummarize.

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

Støttede operatorer:

  • countcount() - Tell opp poster gruppert etter angitte felt.
  • argmaxarg_max() - Hent oppføringer med maksimumsverdi i det angitte feltet.

Eksempel på antall:

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

Oversettes til KQL:| summarize resourceCount = count() by resourceGroup, type

Eksempel på ArgMax:

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

Oversettes til KQL:| summarize arg_max(createdTime, *) by resourceGroup

Utvid klausul

Legger til beregnede kolonner i resultatene. Oversettes til KQL-operatorenextend.

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

Eksempel:

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

Oversettes til KQL:| extend environmentId = tostring(properties.environmentId)https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/scalarfunctions) for tilgjengelige funksjoner.

Sammenføyningssetning

Sammenføyninger med en annen tabell/delspørring. Oversettes til KQL-operatorenjoin.


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

Støttede sammenføyningstyper: API-en støtter alle KQL-sammenføyningstyper. Hvis du vil ha en fullstendig liste over tilgjengelige sammenføyningstyper og virkemåte, kan du se dokumentasjonen for KQL-sammenføyningsoperatoren.

Eksempel (sammenføyning av Power Platform-ressurser med miljøinformasjon):

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

Oversettes 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

Fullføre spørringseksempler

Eksempel: Grunnleggende ressursspørring for Power Platform (standardmønster for administrasjonssenteret for Power Platform)

Få alle Power Platform-ressurser med miljøinformasjon – dette er standardspørringen som brukes av administrasjonssenteret for Power Platform.

{
  "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: Telle Power Platform-ressurser etter type og plassering

{
  "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: Spørring for enkle lerretsapper

Få lerretsapper med grunnleggende filtrering og projeksjon:

{
  "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: Filtrere ressurser etter miljø og datointervall

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

Oversettes 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 objektet inneholder spørringsresultatene og metadataene om kjøringen av spørringen.

Responsstruktur:

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