Jaa


Opetusohjelma: Päivittäisen kapasiteettiraportin luominen

Power Platform -ohjelmointirajapinnan avulla voidaan poimia erilaisia tietoja ja metatietoja Microsoft Power Platform -ympäristöistä, joissa on tai ei ole Microsoft Dataverse -tietokantaa. Ohjelmointirajapintaa käyttävät nykyisin useat saatavilla olevat asiakasohjelmat, kuten PowerShell.

Tässä opetusohjelmassa opit:

  • Luo tai Power Automate -tai Logic Apps -työnkulku (Azure) tai PowerShell-komentosarja, joka todennetaan Power Platform -ohjelmointirajapinnan avulla.
  • Kutsu ympäristöjen luetteloimisen päätepistettä, jos haluat hakea Microsoft Power Platform -ympäristön tiedot.
  • Iteroi kapasiteettiobjektin kautta ja hae todellinen kulutus.
  • Tallenna kulutustiedot taulukkoon näytettäväksi.

Esimerkki tästä skenaariosta on asiakas, joka haluaa tietää kapasiteetin kulutuksen ja näin ymmärtää paremmin vuokraajan kokonaiskapasiteetin kohdentamista osaston mukaan. Tämä auttaa asiakasta suorittamaan joitakin sisäisiä kustannuslaskentatoimintoja ja takaisinveloituksia sen perusteella, kuinka paljon kukin osasto kuluttaa käytettävissä olevasta kokonaiskapasiteetista. Tämä asiakas käyttää ympäristön kuvausta kutsuakseen kunkin ympäristön omistavaa osastoa.

Yhteyden muodostaminen ja muuttujien määrittäminen

Käytä seuraavia tietoja muodostaaksesi yhteyden Power Platform ohjelmallisesti. Voit valita Azure-kokemuksen tai PowerShell-skriptin.

Työnkulun luominen ja muuttujien määrittäminen

Aluksi tässä opetusohjelmassa käytämme Logic Apps työnkulkua. Power Automate -työnkulku on myös hyväksyttävä – tai mikä tahansa muu orkestrointimoduuli, jota yritys haluaa käyttää automatisointiin. Kaikki tietojen hakukutsut käyttävät RESTful-ohjelmointirajapintoja, joten kaikki RESTiä tukevat työkalut toimivat tämän opetusohjelman kanssa.

Siirry Azure-portaaliin ja luo sitten uusi logiikkasovellus ja anna sille nimi seuraavasti:

Logiikkasovelluksen luominen

Kun valmistelu on tehty, muokkaa työnkulkua suunnitteluohjelman avulla ja määritä toistuva käynnistin suoritettavaksi päivittäin seuraavasti:

Toistuvan käynnistimen määrittäminen

Seuraavaksi meidän on alustettava viisi muuttujaa:

  • SPN-Id – Tämä on palvelun päänimen asiakastunnus. Sitä käytetään myöhemmin todennuksen suorittamiseen palvelun päänimen kontekstissa. Jos käytät käyttäjätunnus/salasana-kontekstia, voit ohittaa tämän muuttujan.
  • DBCapacity - Tämä on Float-muuttuja kulutetulle tietokantakapasiteetille megatavuina.
  • FileCapacity - Tämä on Float-muuttuja kulutetulle tiedostokapasiteetille megatavuina.
  • LogCapacity– Tämä on kulutetun log-kapasiteetin liukulukumuuttuja megatavuina.
  • SimplifiedEnvironmentArray-Init - Tämä on matriisimuuttuja, jonka täytämme muutamalla ympäristön ominaisuudella. Tämä yksinkertaistaa merkittävästi lopullisen HTML-taulukon tulosta.

Viiden muuttujan luominen

Seuraavaksi todennamme Microsoft Entra ja haemme tunnuksen API:n Power Platform kutsumista varten. Jos et ole suorittanut Microsoft Entra -asennusta loppuun, katso kohta Todennus – vanha.

Tässä opetusohjelmassa käytetään avainsäilöä palvelun päänimen salaisuuden arvoja varten. Näin IT:n järjestelmänvalvoja voi ottaa tämän arvon turvallisesti käyttöön työnkulkua varten. Tämä täytetään sitten POST-kutsussa tunnuksen Microsoft Entra noutamista varten.

Tämän jälkeen Microsoft Entra -tunnuksen vastaus jäsennetään tyypitettyyn objektiin käyttämällä JSON-rakennetta Jäsennä JSON -toiminnossa:

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

Jäsennä Microsoft Entra tunnus vastaus kirjoitetuksi objektiksi.

Nouda ympäristöt

Tässä osiossa haemme hallinnoimasi ympäristöluettelon. Tämä voidaan tehdä ohjelmointirajapinnan sekä PowerShellin kautta.

Ympäristöjen luetteloimisen päätepisteen kutsuminen

Nyt on aika kutsua Power Platformin ohjelmointirajapintaa. Käytä Luetteloympäristöt-päätepiste noutaaksesi kaikki ympäristömme ja niiden metatiedot, erityisesti kapasiteetin $expand-parametrilla. Tämä käyttää myös Valtuutus-otsikkoa yhdessä edellisessä osassa Microsoft Entra ID:stä vastaanotetun haltijatunnuksen kanssa. Jos käytit käyttäjänimeä ja salasanaa, voit syöttää myös tämän haltijatunnuksen tässä vaiheessa.

Luettelon ympäristöjen päätepisteen käyttäminen kaikkien ympäristöjen ja niiden metatietojen noutaminen

Sitten jäsennämme Power Platform API-vastaus kirjoitetuksi objektiksi käyttämällä tätä JSON-mallia Parse JSON -toiminnolla:

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

Jäsennä ohjelmointirajapinnan Power Platform vastaus kirjoitetuksi objektiksi.

Iteroi Kapasiteetti-objektin kautta

Tämä on opasohjelman monimutkaisin osa. Tässä käytämme silmukan sisällä olevaa silmukkaa kunkin luetteloympäristön vastaus ympäristön iterointiin, ja jokaisella ympäristöllä on joukko kapasiteettitietoja, joita myös toistamme. Näin voimme tallentaa kapasiteettiraporttitaulukon kunkin ympäristörivin tarvittavat tiedot.

Kullekin ja jäsennys

Tehdään tämä vaihe vaiheelta. Ensinnäkin käytämme For each -ohjausobjektia käyttämällä Parse-List-Response -lähdön arvoa:

Jokaiseen-ohjausobjektin käyttäminen Parse-List-Response-tuloksen arvon avulla

Sitten jäsennämme tämän yksittäisen ympäristön kirjoitetuksi objektiksi käyttämällä tätä JSON-mallia:

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

Seuraavaksi käytämme toista For Every -ohjausobjektia käyttämällä Parse-CurrentItem-lähdön kapasiteettia. Sitten jäsennämme tämän kirjoitetuksi objektiksi käyttämällä tätä JSON-mallia:

Jokaiseen-ohjausobjekti, joka käyttää Parse-CurrentItem-tuloksen kapasiteettia

Nyt voidaan käyttää vaihto-ohjausobjektia CapacityType-ominaisuudessa Parse-Capacity-tuloksesta. Tämä on joko 'Tietokanta', 'Tiedosto' tai 'Loki'. Sieppaa jokaisen vaihtotapaukseen liittyvä actualConsumption-ominaisuus liittyvään muuttujaan. Seuraavassa tapauksessa näet, että sieppaamme tietokantakapasiteettia:

Vaihto-ohjausobjektin käyttäminen Parse-Capacity-tuloksen CapacityType-ominaisuudessa

Viimeisenä vaiheena Jokaiseen ympäristöön -silmukassa siepataan nyt tämän rivin ympäristön tiedot raporttiin. Käytä seuraavaa JSON-rakennetta Lisää matriisimuuttujaan -ohjausobjektin avulla:

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

Ympäristön tietojen sieppaaminen

Luo raporttitaulukko

Onnittelut, olet nyt saavuttanut helpon osuuden. Kun ympäristön kapasiteettimatriisi on täytetty ja yksinkertaistettu, se voidaan näyttää taulukkomuodossa.

HTML-taulukkoliittimen käyttö

Arvon välittäminen Luo HTML-taulukko -yhdistimeen

Suorittamalla logiikkasovellus nähdään nyt HTML-taulukon raportin tulos seuraavasti:

HTML-taulukon raportin tulos

Raportti voidaan lähettää sähköpostitse sidosryhmän jäsenille tässä kustannuslaskennan merkitysten esimerkissä. Tiedot voidaan myös tallentaa tietokantaan lisäanalyysiä ja aiempia suosituksia varten.