API απογραφής Power Platform

Το API απογραφής σάς επιτρέπει να εκτελείτε δομημένα ερωτήματα σε σχέση με Azure Resource Graph χρησιμοποιώντας μια αίτηση POST με μια προδιαγραφή ερωτήματος στο σώμα της αίτησης. Το API μεταφράζει την προδιαγραφή ερωτήματος σε Kusto Query Language (KQL) για εκτέλεση σε σχέση με Azure Resource Graph. Το API απογραφής για πόρους αποτελεί μέρος της τεκμηρίωσης αναφοράς του API Power Platform. Για μια πλήρη λίστα των τύπων πόρων και των πεδίων με δυνατότητα ερωτημάτων, ανατρέξτε στο θέμα Αναφορά σχήματος αποθέματος Power Platform.

Τελικό σημείο API


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

Σώμα αίτησης

Το σώμα αίτησης πρέπει να περιέχει μια προδιαγραφή ερωτήματος με την ακόλουθη δομή:

Δομή αίτησης ερωτήματος

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

Ιδιότητες

Property Τύπος Υποχρεωτικό Περιγραφή
TableName συμβολοσειρά Ναι Ο πίνακας προορισμού/τύπος πόρου προς ερώτημα (δηλ. "PowerPlatformResources")
Clauses πίνακας Ναι Πίνακας ρητρών ερωτημάτων που ορίζουν τις λειτουργίες που θα εκτελεστούν
Options αντικείμενο Αρ. Επιλογές ερωτημάτων του Azure Resource Graph για σελιδοποίηση και έλεγχο αποτελεσμάτων

Επιλογές ερωτήματος

Το Options αντικείμενο υποστηρίζει παραμέτρους ερωτήματος Azure Resource Graph για σελιδοποίηση και στοιχείο ελέγχου αποτελεσμάτων. Ανατρέξτε στην ResourceQueryRequestOptions τεκμηρίωση για να μάθετε περισσότερα.

Υποστηριζόμενοι όροι ερωτημάτων

Το API υποστηρίζει τους τύπους ρητρών που επισημαίνονται σε αυτή την ενότητα μέσω της πολυμορφικής σειριοποίησης JSON. Κάθε τύπος όρου αντιστοιχεί σε τελεστές KQL, όπως τεκμηριώνεται στην αναφορά KQL:

Όπου ο όρος

Φιλτράρει δεδομένα με βάση τις συνθήκες πεδίου. Μεταφράζεται στον τελεστή KQLwhere.

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

Υποστηριζόμενοι τελεστές: Το API υποστηρίζει όλους τους τυπικούς τελεστές σύγκρισης και συμβολοσειράς KQL. Για μια πλήρη λίστα των διαθέσιμων τελεστών, ανατρέξτε στην τεκμηρίωση για τους τελεστές συμβολοσειρών KQL και τους αριθμητικούς τελεστές .

Παράδειγμα:

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

Μεταφράζεται σε KQL:| where type in~ ('microsoft.powerapps/canvasapps', 'microsoft.copilotstudio/agents')

Όρος έργου

Επιλέγει συγκεκριμένα πεδία από τα αποτελέσματα. Μεταφράζεται στον τελεστή KQLproject.

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

Παράδειγμα:

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

Μεταφράζεται σε KQL:| project name, properties.displayName, environmentId = tostring(properties.environmentId), createdDate = properties.createdAt

Λήψη όρου

Περιορίζει τον αριθμό των αποτελεσμάτων που επιστρέφονται. Μεταφράζεται στον τελεστή KQLtake.

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

Μεταφράζεται σε KQL:| take 50

Σειρά κατά όρο

Ταξινομεί τα αποτελέσματα κατά καθορισμένα πεδία. Μεταφράζεται στον τελεστή KQLsort.


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

Παράδειγμα:

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

Μεταφράζεται σε KQL:| sort by tostring(properties.createdAt) desc, properties.displayName asc

Διακριτός όρος

Επιστρέφει μοναδικές τιμές για καθορισμένα πεδία. Μεταφράζεται στον τελεστή KQLdistinct.


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

Μεταφράζεται σε KQL:| distinct field1, field2

Όρος καταμέτρησης

Επιστρέφει το πλήθος των εγγραφών που αντιστοιχούν. Μεταφράζεται στον τελεστή KQLcount.

{
  "$type": "count"
}

Μεταφράζεται σε KQL:| count

Όρος σύνοψης

Συγκεντρώνει δεδομένα χρησιμοποιώντας λειτουργίες count ή argmax. Μεταφράζεται στον τελεστή KQLsummarize.

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

Υποστηριζόμενοι τελεστές:

  • count count() → - Πλήθος εγγραφών ομαδοποιημένων κατά καθορισμένα πεδία.
  • argmax arg_max() → - Λήψη εγγραφών με μέγιστη τιμή στο καθορισμένο πεδίο.

Παράδειγμα καταμέτρησης:

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

Μεταφράζεται σε KQL:| summarize resourceCount = count() by resourceGroup, type

Παράδειγμα ArgMax:

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

Μεταφράζεται σε KQL:| summarize arg_max(createdTime, *) by resourceGroup

Επέκταση όρου

Προσθέτει υπολογιζόμενες στήλες στα αποτελέσματα. Μεταφράζεται στον τελεστή KQLextend.

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

Παράδειγμα:

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

Μεταφράζεται σε KQL:| extend environmentId = tostring(properties.environmentId)https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/scalarfunctions) για τις διαθέσιμες συναρτήσεις.

Όρος σύνδεσης

Ενώνει με άλλον πίνακα/δευτερεύον ερώτημα. Μεταφράζεται στον τελεστή KQLjoin.


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

Υποστηριζόμενα είδη συνδέσμου: Το API υποστηρίζει όλα τα είδη ένωσης KQL. Για μια πλήρη λίστα των διαθέσιμων τύπων ένωσης και της συμπεριφοράς τους, ανατρέξτε στην τεκμηρίωση τελεστή σύνδεσης KQL.

Παράδειγμα (σύνδεση πόρων του Power Platform με πληροφορίες περιβάλλοντος):

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

Μεταφράζεται σε 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

Ολοκλήρωση παραδειγμάτων ερωτημάτων

Παράδειγμα: Βασικό ερώτημα πόρου Power Platform (προεπιλεγμένο μοτίβο κέντρου διαχείρισης Power Platform)

Λήψη όλων των πόρων του Power Platform με πληροφορίες περιβάλλοντος - αυτό είναι το προεπιλεγμένο ερώτημα που χρησιμοποιείται από το κέντρο διαχείρισης του 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"
      }
    }
  ]
}

Ισοδύναμο 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

Παράδειγμα: Μέτρηση πόρων του Power Platform κατά τύπο και τοποθεσία

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

Ισοδύναμο KQL:

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

Παράδειγμα: Απλό ερώτημα εφαρμογών καμβά

Αποκτήστε εφαρμογές καμβά με βασικό φιλτράρισμα και προβολή.

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

Ισοδύναμο KQL:

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

Παράδειγμα: Φιλτράρισμα πόρων κατά περιβάλλον και εύρος ημερομηνιών

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

Μεταφράζεται σε 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

Μορφή απάντησης

Το API επιστρέφει ένα αντικείμενο ResourceQueryResult από το Azure Resource Graph SDK. Αυτό το αντικείμενο περιέχει τα αποτελέσματα ερωτήματος και τα μετα-δεδομένα σχετικά με την εκτέλεση του ερωτήματος.

Δομή απόκρισης:

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