Dela via


Självstudie: Skapa en daglig kapacitetsrapport

Power Platform API kan användas för att extrahera olika detaljer och metadata från Microsoft Power Platform miljöer med eller utan en Microsoft Dataverse databas. API används internt av olika klienter som är tillgängliga i dag, till exempel PowerShell.

I den här självstudien lär du dig att:

  • Skapa ett Power Automate eller Logic Apps arbetsflöde (Azure) eller PowerShell-skript (Logic Apps) som autentiseras med Power Platform API.
  • Anropa listmiljöerna om slutpunkt hämta din Microsoft Power Platform-miljöinformationen.
  • Bläddra igenom kapacitetsobjektet och hämta den faktiska åtgången.
  • Spara dina användningsdata i en tabell för visning.

Som ett exempel på detta scenario vill en kund ta hand om sin kapacitetsanvändning så att de förstår hur deras totala kapacitet i klientorganisationen fördelas efter avdelning. Detta hjälper kunden att utföra vissa interna kostnadsredovisningsfunktioner och chargebacks baserat på hur mycket varje avdelning förbrukar av den totala tillgängliga kapaciteten. Den här kunden använder miljöbeskrivningen och anropar den avdelning som äger varje miljö.

Anslutning och konfiguration med variabel

Använd följande information om hur du ansluter till programmatiskt Power Platform . Du kan välja mellan en Azure-upplevelse eller PowerShell skript.

Skapa arbetsflödet och konfigurera variablerna

Till att börja med använder vi i den här handledningen ett Logic Apps arbetsflöde. Ett Power Automate flöde kan också accepteras, och alla andra flöden som ditt företag föredrar att använda som automatisering. Alla anrop för att hämta data använder RESTful-API:er, så alla verktyg som stöder REST fungerar med den här självstudien.

Besök Azure-portalen och skapa sedan en ny logikapp och ge den ett namn:

Skapa en logikapp.

När etableringen är klar redigerar du arbetsflödet med hjälp av Designer och ställer in en återkommande utlösare som ska köras dagligen:

Konfigurera en återkommande utlösare.

Därefter måste vi initiera fem variabler:

  • SPN-Id – Det här är ditt klient-ID för tjänstens huvudnamn. Den används senare för att utföra autentiseringen i en kontext för tjänstens huvudnamn. Om du använder användarnamn/lösenordskontext kan du hoppa över denna variabel.
  • DBCapacity – Detta är en floatvariabel för den förbrukade databaskapaciteten i megabyte.
  • FileCapacity – Detta är en floatvariabel för den förbrukade filkapaciteten i megabyte.
  • LogCapacity – Detta är en floatvariabel för den förbrukade loggkapaciteten i megabyte.
  • SimplifiedEnvironmentArray-Init – Det här är en arrayvariabel som vi fyller i med några miljöegenskaper. Detta förenklar den slutliga HTML-tabellens rapportutdata.

Skapa fem variabler.

Därefter autentiserar vi med Microsoft Entra och hämtar en token för att anropa API:et Power Platform . Om du inte har slutfört installationen går Microsoft Entra du till Autentisering – äldre.

I den här självstudien använder vi ett nyckel vault för att lagra tjänstens huvudvärde. På så sätt kan en IT-Administratör göra det här värdet säkert tillgängligt för arbetsflödet. Detta fylls sedan i i POST-anropet för att Microsoft Entra hämta token.

Sedan parsar vi Microsoft Entra tokensvaret i ett typat objekt med hjälp av det här JSON-schemat i åtgärden Parse JSON:

{
    "properties": {
        "access_token": {
            "type": "string"
        },
        "expires_in": {
            "type": "integer"
        },
        "ext_expires_in": {
            "type": "integer"
        },
        "token_type": {
            "type": "string"
        }
    },
    "type": "object"
}

Parsa svaret på Microsoft Entra token till ett typifierat objekt.

Hämta miljöer

I det här avsnittet hämtar vi den miljölista som du administrerar. Det kan du göra via API och PowerShell.

Anropa listmiljöerna slutpunkt

Det är dags att anropa Power Platform API:et. Använd slutpunkt List Environments för att hämta alla våra miljöer och deras metadata, särskilt med $expand parameter för kapacitet. Detta använder också autentiseringshuvudet med ägartoken som vi fick i det föregående avsnittet från Microsoft Entra ID. Om du använde användarnamn/lösenordskontext kan du även ange ägartoken i det här steget också.

Använd listmiljöerna om slutpunkt hämta alla miljöer och deras metadata.

Sedan parsar Power Platform vi API-svaret till ett typifierat objekt med hjälp av det här JSON-schemat med åtgärden "Parsa JSON":

{
    "properties": {
        "value": {
            "items": {
                "properties": {
                    "description": {
                        "type": "string"
                    },
                    "id": {
                        "type": "string"
                    },
                    "location": {
                        "type": "string"
                    },
                    "name": {
                        "type": "string"
                    },
                    "properties": {
                        "properties": {
                            "addons": {
                                "type": "array"
                            },
                            "azureRegion": {
                                "type": "string"
                            },
                            "capacity": {
                                "items": {
                                    "properties": {
                                        "actualConsumption": {
                                            "type": "number"
                                        },
                                        "capacityType": {
                                            "type": "string"
                                        },
                                        "capacityUnit": {
                                            "type": "string"
                                        },
                                        "ratedConsumption": {
                                            "type": "number"
                                        },
                                        "updatedOn": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "capacityType",
                                        "actualConsumption",
                                        "ratedConsumption",
                                        "capacityUnit",
                                        "updatedOn"
                                    ],
                                    "type": "object"
                                },
                                "type": "array"
                            },
                            "clientUris": {
                                "properties": {
                                    "admin": {
                                        "type": "string"
                                    },
                                    "maker": {
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            },
                            "cluster": {
                                "properties": {
                                    "category": {
                                        "type": "string"
                                    },
                                    "number": {
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            },
                            "connectedGroups": {
                                "type": "array"
                            },
                            "createdBy": {
                                "properties": {
                                    "displayName": {
                                        "type": "string"
                                    },
                                    "id": {
                                        "type": "string"
                                    },
                                    "type": {
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            },
                            "createdTime": {
                                "type": "string"
                            },
                            "creationType": {
                                "type": "string"
                            },
                            "databaseType": {
                                "type": "string"
                            },
                            "displayName": {
                                "type": "string"
                            },
                            "environmentSku": {
                                "type": "string"
                            },
                            "isDefault": {
                                "type": "boolean"
                            },
                            "linkedEnvironmentMetadata": {
                                "properties": {
                                    "backgroundOperationsState": {
                                        "type": "string"
                                    },
                                    "baseLanguage": {
                                        "type": "number"
                                    },
                                    "createdTime": {
                                        "type": "string"
                                    },
                                    "domainName": {
                                        "type": "string"
                                    },
                                    "friendlyName": {
                                        "type": "string"
                                    },
                                    "instanceApiUrl": {
                                        "type": "string"
                                    },
                                    "instanceState": {
                                        "type": "string"
                                    },
                                    "instanceUrl": {
                                        "type": "string"
                                    },
                                    "platformSku": {
                                        "type": "string"
                                    },
                                    "resourceId": {
                                        "type": "string"
                                    },
                                    "scaleGroup": {
                                        "type": "string"
                                    },
                                    "uniqueName": {
                                        "type": "string"
                                    },
                                    "version": {
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            },
                            "protectionStatus": {
                                "properties": {
                                    "keyManagedBy": {
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            },
                            "provisioningState": {
                                "type": "string"
                            },
                            "retentionDetails": {
                                "properties": {
                                    "backupsAvailableFromDateTime": {
                                        "type": "string"
                                    },
                                    "retentionPeriod": {
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            },
                            "retentionPeriod": {
                                "type": "string"
                            },
                            "runtimeEndpoints": {
                                "properties": {
                                    "microsoft.ApiManagement": {
                                        "type": "string"
                                    },
                                    "microsoft.BusinessAppPlatform": {
                                        "type": "string"
                                    },
                                    "microsoft.CommonDataModel": {
                                        "type": "string"
                                    },
                                    "microsoft.Flow": {
                                        "type": "string"
                                    },
                                    "microsoft.PowerApps": {
                                        "type": "string"
                                    },
                                    "microsoft.PowerAppsAdvisor": {
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            },
                            "states": {
                                "properties": {
                                    "management": {
                                        "properties": {
                                            "id": {
                                                "type": "string"
                                            }
                                        },
                                        "type": "object"
                                    },
                                    "runtime": {
                                        "properties": {
                                            "id": {
                                                "type": "string"
                                            }
                                        },
                                        "type": "object"
                                    }
                                },
                                "type": "object"
                            },
                            "updateCadence": {
                                "properties": {
                                    "id": {
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        },
                        "type": "object"
                    },
                    "type": {
                        "type": "string"
                    }
                },
                "required": [
                    "id",
                    "type",
                    "location",
                    "name",
                    "properties"
                ],
                "type": "object"
            },
            "type": "array"
        }
    },
    "type": "object"
}

Parsa Power Platform API-svaret till ett typifierat objekt.

Iterera genom kapacitetsobjektet

Det här är den mest komplexa delen av självstudien. Hit använder vi en loop inuti en loop för att iterera varje miljö i List Environment-svaret, och varje miljö har en matris med kapacitetsinformation som vi också itererar. På så sätt kan vi samla in nödvändig information för varje miljörad i vår kapacitetsrapporttabell.

För varje och parsning

Vi tar det här steget för steg. Först använder vi en For Each kontroll med hjälp av "värdet" för Parse-List-Response utdata:

Använd en For Each-kontroll med hjälp av

Sedan parsar vi den här enskilda miljön till ett typifierat objekt med hjälp av det här JSON-schemat:

{
    "properties": {
        "description": {
            "type": "string"
        },
        "id": {
            "type": "string"
        },
        "location": {
            "type": "string"
        },
        "name": {
            "type": "string"
        },
        "properties": {
            "properties": {
                "addons": {
                    "type": "array"
                },
                "azureRegion": {
                    "type": "string"
                },
                "capacity": {
                    "items": {
                        "properties": {
                            "actualConsumption": {
                                "type": "number"
                            },
                            "capacityType": {
                                "type": "string"
                            },
                            "capacityUnit": {
                                "type": "string"
                            },
                            "ratedConsumption": {
                                "type": "number"
                            },
                            "updatedOn": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "capacityType",
                            "actualConsumption",
                            "ratedConsumption",
                            "capacityUnit",
                            "updatedOn"
                        ],
                        "type": "object"
                    },
                    "type": "array"
                },
                "clientUris": {
                    "properties": {
                        "admin": {
                            "type": "string"
                        },
                        "maker": {
                            "type": "string"
                        }
                    },
                    "type": "object"
                },
                "cluster": {
                    "properties": {
                        "number": {
                            "type": "string"
                        }
                    },
                    "type": "object"
                },
                "connectedGroups": {
                    "type": "array"
                },
                "createdBy": {
                    "properties": {
                        "displayName": {
                            "type": "string"
                        },
                        "id": {
                            "type": "string"
                        },
                        "type": {
                            "type": "string"
                        }
                    },
                    "type": "object"
                },
                "createdTime": {
                    "type": "string"
                },
                "creationType": {
                    "type": "string"
                },
                "databaseType": {
                    "type": "string"
                },
                "displayName": {
                    "type": "string"
                },
                "environmentSku": {
                    "type": "string"
                },
                "isDefault": {
                    "type": "boolean"
                },
                "linkedEnvironmentMetadata": {
                    "properties": {
                        "backgroundOperationsState": {
                            "type": "string"
                        },
                        "baseLanguage": {
                            "type": "integer"
                        },
                        "createdTime": {
                            "type": "string"
                        },
                        "domainName": {
                            "type": "string"
                        },
                        "friendlyName": {
                            "type": "string"
                        },
                        "instanceApiUrl": {
                            "type": "string"
                        },
                        "instanceState": {
                            "type": "string"
                        },
                        "instanceUrl": {
                            "type": "string"
                        },
                        "resourceId": {
                            "type": "string"
                        },
                        "scaleGroup": {
                            "type": "string"
                        },
                        "uniqueName": {
                            "type": "string"
                        },
                        "version": {
                            "type": "string"
                        }
                    },
                    "type": "object"
                },
                "protectionStatus": {
                    "properties": {
                        "keyManagedBy": {
                            "type": "string"
                        }
                    },
                    "type": "object"
                },
                "provisioningState": {
                    "type": "string"
                },
                "retentionDetails": {
                    "properties": {
                        "backupsAvailableFromDateTime": {
                            "type": "string"
                        },
                        "retentionPeriod": {
                            "type": "string"
                        }
                    },
                    "type": "object"
                },
                "retentionPeriod": {
                    "type": "string"
                },
                "runtimeEndpoints": {
                    "properties": {
                        "microsoft.ApiManagement": {
                            "type": "string"
                        },
                        "microsoft.BusinessAppPlatform": {
                            "type": "string"
                        },
                        "microsoft.CommonDataModel": {
                            "type": "string"
                        },
                        "microsoft.Flow": {
                            "type": "string"
                        },
                        "microsoft.PowerApps": {
                            "type": "string"
                        },
                        "microsoft.PowerAppsAdvisor": {
                            "type": "string"
                        }
                    },
                    "type": "object"
                },
                "states": {
                    "properties": {
                        "management": {
                            "properties": {
                                "id": {
                                    "type": "string"
                                }
                            },
                            "type": "object"
                        },
                        "runtime": {
                            "properties": {
                                "id": {
                                    "type": "string"
                                }
                            },
                            "type": "object"
                        }
                    },
                    "type": "object"
                },
                "updateCadence": {
                    "properties": {
                        "id": {
                            "type": "string"
                        }
                    },
                    "type": "object"
                }
            },
            "type": "object"
        },
        "type": {
            "type": "string"
        }
    },
    "type": "object"
}

Därefter använder vi en annan For Each kontroll med hjälp av "capacity" för Parse-CurrentItem utdata. Sedan parsar vi detta till ett typifierat objekt med hjälp av det här JSON-schemat:

For Each-kontroll med hjälp av kapaciteten för parsa-aktuellt objekt-utgången.

Nu kan vi använda växlingskontrollen på CapacityType-egenskapen från parsa-kapacitet-utgången. Detta är antingen värdet för "Databas", "Fil" eller "Logg". Under varje växlingsärende samlar du in den relaterade egenskapen actualConsumption i den relaterade variabeln. I följande fall ser du att vi samlar in databaskapacitet:

Använda växlingskontrollen på CapacityType-egenskapen från parsa-kapacitet-utgången.

Som det sista steget i loopen För varje miljö kan vi nu samla in miljöinformationen för den här raden i rapporten. Använd följande JSON-schema med hjälp av Tillägg till matris variabelkontroll:

{
    "properties": {
        "actualConsumption": {
            "type": "number"
        },
        "capacityType": {
            "type": "string"
        },
        "capacityUnit": {
            "type": "string"
        },
        "ratedConsumption": {
            "type": "number"
        },
        "updatedOn": {
            "type": "string"
        }
    },
    "type": "object"
}

Samla in miljöinformation.

Skapa rapporttabell

Grattis, nu har du tagit dig till det enkla! Nu när vi har vår fullständiga och förenklade kapacitetsmatris för miljön kan vi visa den i tabellformat.

Använd HTML-tabellanslutaren

Skicka värde till kopplingen för skapa HTML-tabell.

När vi kör logikprogrammet kan vi nu se utdata från HTML-tabellrapporten:

Utdata från HTML-tabellrapporten.

Rapporten kan eventuellt skickas med e-post till intressenter i det här exemplet för kostnadsberäkningssyften, eller också kan informationen sparas i en databas för ytterligare analys och historisk trending.