Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La API de inventario permite ejecutar consultas estructuradas en Azure Resource Graph mediante una solicitud POST con una especificación de consulta en el cuerpo de la solicitud. La API traduce la especificación de consulta en Kusto Query Language (KQL) para su ejecución en Azure Resource Graph. La API de inventario para recursos forma parte de la documentación de referencia de Power Platform API. Para obtener una lista completa de los tipos de recursos y los campos consultables, consulte Referencia de esquema de inventario de Power Platform.
Punto de conexión de la API
POST {PowerPlatformAPI url}/resourcequery/resources/query?api-version=2024-10-01
Cuerpo de la solicitud
El cuerpo de la solicitud debe contener una especificación de consulta con la siguiente estructura:
Estructura de la solicitud de consulta
{
"TableName": "string",
"Clauses": [
{
"$type": "clause_type",
// clause-specific properties
}
],
"Options": {
"Top": 100,
"Skip": 0,
"SkipToken": "string"
}
}
Propiedades
| Propiedad | Tipo | Obligatorio | Descripción |
|---|---|---|---|
TableName |
string | Sí | Tipo de tabla o recurso de destino que se va a consultar (es decir, "PowerPlatformResources") |
Clauses |
array | Sí | Matriz de cláusulas de consulta que definen las operaciones que se van a realizar |
Options |
objeto | No | Opciones de consulta de Azure Resource Graph para la paginación y el control de resultados |
Opciones de consulta
El Options objeto admite parámetros de consulta de Azure Resource Graph para la paginación y el control de resultados. Consulte ResourceQueryRequestOptions la documentación para obtener más información.
Cláusulas de consulta compatibles
La API admite los tipos de cláusula resaltados en esta sección mediante la serialización JSON polimórfica. Cada tipo de cláusula corresponde a los operadores KQL como se documenta en la referencia de KQL:
Cláusula WHERE
Filtra los datos en función de las condiciones del campo. Se traduce en el operador KQLwhere.
{
"$type": "where",
"FieldName": "string",
"Operator": "string",
"Values": ["string1", "string2"]
}
Operadores admitidos: La API admite todos los operadores de cadena y comparación de KQL estándar. Para obtener una lista completa de los operadores disponibles, consulte la documentación sobre operadores de cadena y operadores numéricos de KQL.
Example:
{
"$type": "where",
"FieldName": "type",
"Operator": "in~",
"Values": ["'microsoft.powerapps/canvasapps'", "'microsoft.copilotstudio/agents'"]
}
Se traduce en KQL:| where type in~ ('microsoft.powerapps/canvasapps', 'microsoft.copilotstudio/agents')
Cláusula de Proyecto
Selecciona campos específicos en los resultados. Se traduce en el operador KQLproject.
{
"$type": "project",
"FieldList": ["field1", "field2", "field3"]
}
Example:
{
"$type": "project",
"FieldList": [
"name",
"properties.displayName",
"environmentId = tostring(properties.environmentId)",
"createdDate = properties.createdAt"
]
}
Se traduce en KQL:| project name, properties.displayName, environmentId = tostring(properties.environmentId), createdDate = properties.createdAt
Take (cláusula)
Limita el número de resultados devueltos. Se traduce en el operador KQLtake.
{
"$type": "take",
"TakeCount": 50
}
Se traduce en KQL:| take 50
Cláusula Order by
Ordena los resultados por campos especificados. Se traduce en el operador KQLsort.
{
"$type": "orderby",
"FieldNamesAscDesc": {
"field1": "asc",
"field2": "desc"
}
}
Example:
{
"$type": "orderby",
"FieldNamesAscDesc": {
"tostring(properties.createdAt)": "desc",
"properties.displayName": "asc"
}
}
Se traduce en KQL:| sort by tostring(properties.createdAt) desc, properties.displayName asc
Cláusula distinta
Devuelve valores únicos para los campos especificados. Se traduce en el operador KQLdistinct.
{
"$type": "distinct",
"FieldList": ["field1", "field2"]
}
Se traduce en KQL:| distinct field1, field2
Cláusula de Conteo
Devuelve el recuento de registros coincidentes. Se traduce en el operador KQLcount.
{
"$type": "count"
}
Se traduce en KQL:| count
Cláusula Resumir
Agrega datos mediante operaciones count o argmax. Se traduce en el operador KQLsummarize.
{
"$type": "summarize",
"SummarizeClauseExpression": {
"OperatorName": "count|argmax",
"OperatorFieldName": "string",
"FieldList": ["field1", "field2"]
}
}
Operadores de admitidos:
-
countcount()→: recuento de registros agrupados por campos especificados. -
argmaxarg_max()→: obtiene registros con el valor máximo en el campo especificado.
Ejemplo de recuento:
{
"$type": "summarize",
"SummarizeClauseExpression": {
"OperatorName": "count",
"OperatorFieldName": "resourceCount",
"FieldList": ["resourceGroup", "type"]
}
}
Se traduce en KQL:| summarize resourceCount = count() by resourceGroup, type
Ejemplo de ArgMax:
{
"$type": "summarize",
"SummarizeClauseExpression": {
"OperatorName": "argmax",
"OperatorFieldName": "createdTime",
"FieldList": ["resourceGroup"]
}
}
Se traduce en KQL:| summarize arg_max(createdTime, *) by resourceGroup
Cláusula de extensión
Agrega columnas calculadas a los resultados. Se traduce en el operador KQLextend.
{
"$type": "extend",
"FieldName": "newFieldName",
"Expression": "KQL_EXPRESSION"
}
Example:
{
"$type": "extend",
"FieldName": "environmentId",
"Expression": "tostring(properties.environmentId)"
}
Se traduce en KQL:| extend environmentId = tostring(properties.environmentId)https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/scalarfunctions) para funciones disponibles.
Cláusula de Unión
Se une con otra tabla/subconsulta. Se traduce en el operador KQLjoin.
{
"$type": "join",
"RightTable": {
"TableName": "string",
"Clauses": []
},
"JoinKind": "string",
"LeftColumnName": "string",
"RightColumnName": "string"
}
Tipos de combinación admitidos: La API admite todos los tipos de combinación KQL. Para obtener una lista completa de los tipos de combinación disponibles y su comportamiento, consulte la documentación del operador KQL join.
Ejemplo (unión de recursos de Power Platform con información del entorno):
{
"$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"
}
Se traduce en 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
Ejemplos de consultas completos
Ejemplo: Consulta básica de recursos de Power Platform (patrón predeterminado del Centro de administración de Power Platform)
Obtenga todos los recursos de Power Platform con información del entorno; esta es la consulta predeterminada que usa el Centro de administración de 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 equivalente:
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
Ejemplo: Recuento de recursos de Power Platform por tipo y ubicación
{
"TableName": "PowerPlatformResources",
"Clauses": [
{
"$type": "summarize",
"SummarizeClauseExpression": {
"OperatorName": "count",
"OperatorFieldName": "resourceCount",
"FieldList": ["type", "location"]
}
},
{
"$type": "orderby",
"FieldNamesAscDesc": {
"resourceCount": "desc"
}
}
]
}
KQL equivalente:
PowerPlatformResources
| summarize resourceCount = count() by type, location
| sort by resourceCount desc
Ejemplo: Consulta de aplicaciones Canvas simples
Obtenga aplicaciones de lienzo con filtrado y proyección básicos:
{
"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 equivalente:
PowerPlatformResources
| where type == 'microsoft.powerapps/canvasapps'
| project name, location, properties.displayName, properties.createdAt, properties.environmentId
| take 100
Ejemplo: Filtrado de recursos por entorno y intervalo de fechas
{
"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"
}
}
]
}
Se traduce en 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
Formato de respuesta
La API devuelve un ResourceQueryResult objeto del SDK de Azure Resource Graph. Este objeto contiene los resultados y metadatos de la consulta sobre la ejecución de la consulta.
Estructura de respuesta:
{
"totalRecords": 1250,
"count": 50,
"resultTruncated": 1,
"skipToken": "string_for_next_page",
"data": [
// Array of result objects based on your query
]
}