Power Platform inventory -ohjelmointirajapinta

Varaston ohjelmointirajapinnan avulla voit suorittaa jäsennettyjä kyselyitä Azure Resource Graphia vastaan käyttämällä POST-pyyntöä, jonka pyynnön leipätekstissä on kyselymääritys. Ohjelmointirajapinta muuntaa kyselymäärityksesi Kusto Query Languageksi (KQL), joka suoritetaan Azure Resource Graphia vastaan. Resurssien varaston ohjelmointirajapinta on osa Power Platform -ohjelmointirajapinnan viitedokumentaatiota. Täydellinen luettelo resurssityypeistä ja kyselykelpoisista kentistä on kohdassa Power Platform -varastorakenteen viittaus.

Todennus

Varaston ohjelmointirajapinta tukee tällä hetkellä vain delegoitua käyttäjien todentamista. Hanki kirjautuneen käyttäjän haltijatunnus, ennen kuin kutsut ohjelmointirajapintaa.

Tärkeää

Ohjelmointirajapinta ei tue sovelluksen todennusta palvelun päänimen tai hallitun käyttäjätiedon kautta. Näitä käyttäjätietoja käyttävät pyynnöt palauttavat arvon HTTP 403 Kielletty.

Lisätietoja tunnuksen määrittämisestä on kohdassa Delegoidun käyttäjätyönkulun todentaminen ja käyttäminen. Tässä artikkelissa kuvattu palvelun päänimen työnkulku ei koske varaston ohjelmointirajapintaa.

Power Platform CLI:n käyttäminen (esikatselu)

Voit suorittaa varaston resurssikyselyjä päätteestä käyttämällä esikatselukomentoa pac resource-query query-resources . Komento ottaa JSON-kyselypyynnön rungon suoraan tai tiedostosta.

Ohjelmointirajapinnan päätepiste


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

Pyynnön teksti

Pyynnön rungon on sisällettävä kyselymääritys, jossa on seuraava rakenne:

Kyselyn pyynnön rakenne

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

Ominaisuudet

Attribuutti Kirjoita Pakollinen Description
TableName merkkijono Kyllä Kyselyn kohdetaulukko/resurssityyppi (eli "PowerPlatformResources")
Clauses matriisi Kyllä Suoritettavat toiminnot määrittävien kyselylausekkeiden matriisi
Options objekti No Azure Resource Graph -kyselyasetukset sivutusta ja tuloksen hallintaa varten

Kyselyasetukset

Options-objekti tukee Azure Resource Graph kyselyparametreja sivutusta ja tulosohjausta varten. Lisätietoja ResourceQueryRequestOptions on ohjeissa .

Tuetut kyselylausekkeet

-ohjelmointirajapinta tukee tässä osiossa korostettuja lauseketyyppejä polymorfisen JSON-sarjoituksen kautta. Jokainen lauseketyyppi vastaa KQL-operaattoreita KQL-viittauksessa kuvatulla tavalla:

Where-lauseke

Suodattaa tiedot kentän ehtojen perusteella. Tarkoittaa KQL-operaattoriawhere.

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

Tuetut operaattorit: Ohjelmointirajapinta tukee kaikkia tavallisia KQL-vertailu- ja merkkijono-operaattoreita. Täydellinen luettelo käytettävissä olevista operaattoreista on KQL-merkkijono-operaattorien ja numeeristen operaattoreiden dokumentaatiossa.

Esimerkki:

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

Käännetään KQL:ään:| where type in~ ('microsoft.powerapps/canvasapps', 'microsoft.copilotstudio/agents')

Projektilauseke

Valitsee tuloksista tietyt kentät. Tarkoittaa KQL-operaattoriaproject.

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

Esimerkki:

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

Käännetään KQL:ään:| project name, properties.displayName, environmentId = tostring(properties.environmentId), createdDate = properties.createdAt

Ota-lause

Rajoittaa palautettujen tulosten määrää. Tarkoittaa KQL-operaattoriatake.

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

Käännetään KQL:ään:| take 50

Järjestysperuste-lause

Lajittelee tulokset määritettyjen kenttien mukaan. Tarkoittaa KQL-operaattoriasort.


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

Esimerkki:

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

Käännetään KQL:ään:| sort by tostring(properties.createdAt) desc, properties.displayName asc

Distinct-lauseke

Palauttaa yksilöllisiä arvoja määritetyille kentille. Tarkoittaa KQL-operaattoriadistinct.


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

Käännetään KQL:ään:| distinct field1, field2

Laske-lause

Palauttaa vastaavien tietueiden määrän. Tarkoittaa KQL-operaattoriacount.

{
  "$type": "count"
}

Käännetään KQL:ään:| count

Tiivistelmälauseke

Koostaa tiedot käyttäen count- tai argmax-toimintoja. Tarkoittaa KQL-operaattoriasummarize.

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

Tuetut operaattorit:

  • count count() → – Laske tietueet ryhmiteltynä määritettyjen kenttien mukaan.
  • argmax arg_max() →: hae tietueet, joiden enimmäisarvo on määritetyssä kentässä.

Esimerkkimäärä:

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

Käännetään KQL:ään:| summarize resourceCount = count() by resourceGroup, type

ArgMax-esimerkki:

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

Käännetään KQL:ään:| summarize arg_max(createdTime, *) by resourceGroup

Laajennuslauseke

Lisää laskettuja sarakkeita tuloksiin. Tarkoittaa KQL-operaattoriaextend.

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

Esimerkki:

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

Tarkoittaa KQL:ää:| extend environmentId = tostring(properties.environmentId)https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/scalarfunctions) käytettävissä olevista funktioista.

Liitos-lause

Liittää toisen taulukon tai alikyselyn kanssa. Tarkoittaa KQL-operaattoriajoin.


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

Tuetut liitoslajit: Ohjelmointirajapinta tukee kaikkia KQL-liitostyyppejä. Täydellinen luettelo käytettävissä olevista liitostyypeistä ja niiden toiminnasta on KQL-liitosoperaattorin ohjeissa.

Esimerkki (Power Platform -resursseihin yhdistäminen ympäristötietojen avulla):

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

Käännetään KQL:ään:| 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

Täydet kyselyesimerkit

Esimerkki: Power Platform -perusresurssikysely (Power Platform -hallintakeskuksen oletusmalli)

Hae kaikki Power Platform -resurssit ympäristön tiedoilla – tämä on Power Platform -hallintakeskuksen käyttämä oletuskysely.

{
  "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'",
        "'microsoft.powerapps/apps'"
      ]
    },
    {
      "$type": "orderby",
      "FieldNamesAscDesc": {
        "tostring(properties.createdAt)": "desc"
      }
    }
  ]
}

Vastaava 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', 'microsoft.powerapps/apps')
| order by tostring(properties.createdAt) desc

Esimerkki: Laske Power Platform -resurssit tyypin ja sijainnin mukaan

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

Vastaava KQL:

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

Esimerkki: Yksinkertainen pohjaan perustuvien sovellusten kysely

Hanki pohjaan perustuvia sovelluksia, joissa on perussuodatus ja projektio:

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

Vastaava KQL:

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

Esimerkki: Suodata resursseja ympäristön ja päivämääräalueen mukaan

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

Kääntyy KQL:ksi

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

Vastauksen muoto

Ohjelmointirajapinta palauttaa ResourceQueryResult-objektin Azure Resource Graph SDK:sta. Tämä objekti sisältää kyselyn tulokset ja metatiedot kyselyn suorittamisesta.

Vastausrakenne:

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