API hàng tồn kho Power Platform

API khoảng không quảng cáo cho phép bạn thực hiện các truy vấn có cấu trúc đối với Azure Resource Graph bằng cách sử dụng yêu cầu POST với đặc tả truy vấn trong nội dung yêu cầu. API dịch đặc tả truy vấn của bạn thành Ngôn ngữ truy vấn Kusto (KQL) để thực thi đối với Azure Resource Graph. API hàng tồn kho cho Tài nguyên là một phần của tài liệu tham khảo API Power Platform. Để biết danh sách đầy đủ các loại tài nguyên và trường có thể truy vấn, hãy xem Tham khảo lược đồ hàng tồn kho Power Platform.

Điểm cuối API


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

Nội dung yêu cầu

Nội dung yêu cầu phải chứa đặc tả truy vấn với cấu trúc sau:

Cấu trúc yêu cầu truy vấn

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

Thuộc tính

Property Loại Required Description
TableName chuỗi Loại bảng/tài nguyên đích để truy vấn (tức là "PowerPlatformResources")
Clauses mảng Mảng mệnh đề truy vấn xác định các hoạt động cần thực hiện
Options đối tượng Không Tùy chọn truy vấn Azure Resource Graph để phân trang và kiểm soát kết quả

Tùy chọn truy vấn

Đối tượng Options hỗ trợ Azure Resource Graph tham số truy vấn để phân trang và kiểm soát kết quả. Xem ResourceQueryRequestOptions tài liệu để tìm hiểu thêm.

Các mệnh đề truy vấn được hỗ trợ

API hỗ trợ các loại mệnh đề được đánh dấu trong phần này thông qua tuần tự hóa JSON đa hình. Mỗi loại mệnh đề tương ứng với các toán tử KQL như được ghi lại trong tài liệu tham khảo KQL:

Điều khoản trong đó

Lọc dữ liệu dựa trên điều kiện trường. Dịch thành toán tử KQLwhere.

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

Các nhà khai thác được hỗ trợ: API hỗ trợ tất cả các toán tử chuỗi và so sánh KQL tiêu chuẩn. Để biết danh sách đầy đủ các toán tử có sẵn, hãy xem tài liệu về toán tử chuỗi vàtoán tử số KQL.

Ví dụ:

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

Dịch sang KQL:| where type in~ ('microsoft.powerapps/canvasapps', 'microsoft.copilotstudio/agents')

Điều khoản dự án

Chọn các trường cụ thể từ kết quả. Dịch thành toán tử KQLproject.

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

Ví dụ:

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

Dịch sang KQL:| project name, properties.displayName, environmentId = tostring(properties.environmentId), createdDate = properties.createdAt

Lấy mệnh đề

Giới hạn số lượng kết quả được trả về. Dịch thành toán tử KQLtake.

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

Dịch sang KQL:| take 50

Thứ tự theo điều khoản

Sắp xếp kết quả theo các trường được chỉ định. Dịch thành toán tử KQLsort.


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

Ví dụ:

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

Dịch sang KQL:| sort by tostring(properties.createdAt) desc, properties.displayName asc

Điều khoản riêng biệt

Trả về các giá trị duy nhất cho các trường được chỉ định. Dịch thành toán tử KQLdistinct.


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

Dịch sang KQL:| distinct field1, field2

Mệnh đề đếm

Trả về số lượng bản ghi phù hợp. Dịch thành toán tử KQLcount.

{
  "$type": "count"
}

Dịch sang KQL:| count

Tóm tắt điều khoản

Tổng hợp dữ liệu bằng cách sử dụng các phép toán đếm hoặc argmax. Dịch thành toán tử KQLsummarize.

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

Các nhà khai thác được hỗ trợ:

  • countcount() - Đếm các bản ghi được nhóm theo các trường được chỉ định.
  • argmaxarg_max() - Nhận bản ghi có giá trị lớn nhất trong trường được chỉ định.

Ví dụ về số lượng:

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

Dịch sang KQL:| summarize resourceCount = count() by resourceGroup, type

Ví dụ về ArgMax:

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

Dịch sang KQL:| summarize arg_max(createdTime, *) by resourceGroup

Điều khoản gia hạn

Thêm các cột được tính toán vào kết quả. Dịch thành toán tử KQLextend.

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

Ví dụ:

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

Dịch sang KQL:| extend environmentId = tostring(properties.environmentId)https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/scalarfunctions) cho các chức năng có sẵn.

Mệnh đề tham gia

Tham gia với một bảng/truy vấn con khác. Dịch thành toán tử KQLjoin.


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

Các loại tham gia được hỗ trợ: API hỗ trợ tất cả các loại tham gia KQL. Để biết danh sách đầy đủ các loại liên kết có sẵn và hành vi của chúng, hãy xem tài liệu về toán tử tham gia KQL.

Ví dụ (kết hợp tài nguyên Power Platform với thông tin môi trường):

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

Dịch sang 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

Hoàn thành các ví dụ về truy vấn

Ví dụ: Truy vấn tài nguyên Power Platform cơ bản (mẫu mặc định của trung tâm quản trị Power Platform)

Nhận tất cả tài nguyên Power Platform với thông tin môi trường—đây là truy vấn mặc định được trung tâm quản trị Power Platform sử dụng.

{
  "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 tương đương:

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

Ví dụ: Đếm tài nguyên Power Platform theo loại và vị trí

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

KQL tương đương:

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

Ví dụ: Truy vấn ứng dụng canvas đơn giản

Tải ứng dụng canvas với tính năng lọc và chiếu cơ bản:

{
  "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 tương đương:

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

Ví dụ: Lọc tài nguyên theo môi trường và phạm vi ngày

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

Dịch sang 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

Định dạng phản hồi

API trả về đối tượng ResourceQueryResult từ SDK Azure Resource Graph. Đối tượng này chứa kết quả truy vấn và siêu dữ liệu về việc thực thi truy vấn.

Cấu trúc phản hồi:

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