Бөлісу құралы:


Оқулық: Күнделікті сыйымдылық есебін жасау

Power Platform API бағдарламасын Microsoft Dataverse дерекқорымен немесе дерекқорынсыз Microsoft Power Platform орталарынан әртүрлі мәліметтер мен метадеректерді шығару үшін пайдалануға болады. API интерфейсі бүгінде қолжетімді PowerShell сияқты әртүрлі клиенттермен іштей пайдаланылады.

Бұл оқулықта мыналар бойынша мәліметтер беріледі:

  • Түпнұсқалығы Power Platform API интерфейсімен расталатын Power Automate немесе Logic Apps жұмыс ағыны (Azure) немесе PowerShell сценарийін жасаңыз.
  • Microsoft Power Platform ортаның мәліметтерін шығару үшін орталарды тізімдеу соңғы нүктесін шақырыңыз.
  • Нақты тұтынуды алу үшін сыйымдылық нысаны арқылы қайталаңыз.
  • Тұтыну деректерін көрсету үшін кестеге сақтаңыз.

Осы сценарийдің мысалы ретінде тұтынушы олардың қатысушылардың жалпы сыйымдылығын бөлім бойынша бөлуді жақсы түсіну үшін олардың тұтыну қабілеттілігін анықтауға тырысады. Бұл тұтынушыға кейбір ішкі шығындарды есепке алу функцияларын орындауға көмектеседі және әрбір бөлім қол жетімді жалпы сыйымдылықты қаншалықты тұтынатынына негізделген өтемақыларды қайтарады. Бұл тұтынушы әр ортаға иелік ететін бөлімді шақыру үшін орта сипаттамасын қолданады.

Қосылу және айнымалыны орнату

Power Platform бағдарламалық түрде қосылу үшін келесі мәліметтерді пайдаланыңыз. Azure тәжірибесі немесе PowerShell сценарийлерінің бірін таңдауға болады.

Жұмыс ағынын жасау және айнымалыларды орнату

Бастау үшін бұл оқулықта біз Logic Apps жұмыс процесін қолданамыз. Сондай-ақ сіздің компанияңыз автоматтандыру үшін пайдаланғысы келетін кез келген басқа өзара қатынасу механизмі сияқты Power Automate ағыны да қолайлы. Деректерді шығарып алуға арналған барлық қоңыраулар RESTful API интерфейстерін пайдаланады, сондықтан REST қолдайтын кез келген құрал осы оқулықпен жұмыс істейді.

Azure порталына кіріп, жаңа логикалық бағдарлама жасап, оған ат беріңіз:

Логикалық қолданба жасаңыз.

Осыдан кейін жабдықтау аяқталғаннан кейін, құрастырушының көмегімен жұмыс ағынын өңдеңіз және күнделікті іске қосылатын қайталану триггерін орнатыңыз:

Қайталану триггерін орнатыңыз.

Содан кейін бізге бес айнымалыны инициализациялау керек:

  • SPN-идентификаторы – Бұл сіздің қызмет көрсетуші ClientID коды. Ол кейінірек қызметтің негізгі контекстінде аутентификацияны орындау үшін пайдаланылады. Егер сіз пайдаланушы аты/құпиясөз мәнмәтінін қолдансаңыз, бұл айнымалыны өткізіп жібере аласыз.
  • DBCapacity – бұл мегабайттағы тұтынылатын дерекқор сыйымдылығы үшін Float айнымалысы.
  • FileCapacity – бұл мегабайттағы тұтынылатын файл сыйымдылығы үшін Float айнымалысы.
  • LogCapacity – бұл мегабайттағы тұтынылатын журнал сыйымдылығы үшін Float айнымалысы.
  • SimplifiedEnvironmentArray-Init – Бұл біз бірнеше орта сипаттарымен толтыратын массив айнымалысы. Бұл HTML кестесінің соңғы есебін шығаруды айтарлықтай жеңілдетеді.

Бес айнымалыны жасаңыз.

Содан кейін біз Microsoft Entra мен аутентификация жасаймыз және Power Platform API-ге қоңырау шалу үшін таңбалауышты аламыз. Егер Microsoft Entra орнатуды аяқтамаған болсаңыз, Түпнұсқалық растама - бұрынғы бөлімін қараңыз.

Бұл оқулықта біз қызмет негізінің құпия мәнін сақтау үшін кілт қоймасын қолданамыз. Осылайша АТ әкімшісі бұл мәнді сіздің жұмыс ағынының үшін қауіпсіз түрде қолжетімді ете алады. Бұл таңбалауышты шығарып алу үшін Microsoft Entra POST шақыруында толтырылады.

Содан кейін Microsoft Entra токен жауап терілген нысанға "JSON талдауы" әрекетінде осы JSON схемасын қолданып талдаймыз:

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

 Microsoft Entra жауап таңбалауышын терілген нысанға талдаңыз.

Орталарды алу

Бұл бөлімде біз сіз басқаратын орта тізімін аламыз. Мұны API және PowerShell арқылы жасауға болады.

Орталарды тізімдеу соңғы нүктесін шақыру

Енді Power Platform API бағдарламасын шақыратын уақыт келді. Барлық орталарымызды және олардың метадеректерін, әсіресе сыйымдылыққа арналған $expand параметрімен шығарып алу үшін Тізім орталарының соңғы нүктесін пайдаланыңыз. Бұл сонымен қатар алдыңғы бөлімде Microsoft Entra ID алған Тасымалдаушы таңбалауышы бар Авторизация тақырыбын пайдаланады. Егер сіз пайдаланушы аты/құпиясөз мәнмәтінін қолданған болсаңыз, осы қадамда сол тасушы таңбалауышын да енгізе аласыз.

Барлық орталарды және олардың метадеректерін шығарып алу үшін Тізім орталарының соңғы нүктесін пайдаланыңыз.

Содан кейін Power Platform API жауап файлын терілген нысанға осы JSON схемасын "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"
}

 Power Platform API жауап терілген нысанға талдау жасаңыз.

Сыйымдылық нысаны арқылы қайталау

Бұл оқулықтың ең күрделі бөлігі. Мұнда біз жауап тізім ортасындағы әрбір ортаны қайталау үшін цикл ішіндегі циклды пайдаланамыз және әрбір ортада біз қайталайтын сыйымдылық мәліметтерінің жиыны бар. Бұл сыйымдылық есеп кестесіндегі әрбір орта жолына қажетті ақпаратты алуға мүмкіндік береді.

Әрқайсысы үшін және талдау

Мұны біртіндеп жасайық. Алдымен, талдау тізімі-жауап шығысының «мәні» арқылы For Every басқару элементін қолданамыз:

Талдау-тізім-жауап шығысының мәнін пайдаланып, Әрбір үшін басқару элементін пайдаланыңыз.

Содан кейін біз осы жалғыз ортаны осы JSON схемасын пайдаланып терілген нысанға талдаймыз:

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

Әрі қарай, біз Parse-CurrentItem шығысының «сыйымдылығын» пайдалана отырып, әрбір үшін басқа басқару элементін қолданамыз. Содан кейін біз оны JSON схемасын пайдаланып терілген нысанға талдаймыз:

Parse-CurrentItem шығысының сыйымдылығын пайдаланатын әрбір басқару элементі үшін.

Енді біз талдау-сыйымдылық нәтижесіндегі CapacityType сипатындағы ауыстыру басқару элементін қолдана аламыз. Бұл «Дерекқор», «Файл» немесе «Журнал» мәні. Әр ауыстыру жағдайында қатысты "actualConsumption" сипатын қатысты айнымалыға түсіріңіз. Келесі жағдайда біз Дерекқор сыйымдылығын жинап жатқанымызды көресіз:

Талдау сыйымдылығы шығысындағы CapacityType сипатындағы Switch басқару элементін пайдаланыңыз.

"Әр орта үшін" циклінің соңғы қадамы ретінде біз қазір есептегі осы жол үшін ортаның мәліметтерін түсіре аламыз. Жиымның айнымалы басқару элементіне үстеу көмегімен келесі JSON схемасын қолданыңыз:

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

Қоршаған орта туралы мәліметтерді түсіріңіз.

Есеп кестесін құру

Құттықтаймыз, сіз енді жеңіл бөлімге жеттіңіз! Енді бізде толығымен толтырылған және жеңілдетілген орта сыйымдылығы жиымы болғандықтан, біз оны кестелік пішімде көрсете аламыз.

HTML кесте қосқышын пайдалану

Мәнді HTML кестесін жасау қосқышына жіберіңіз.

Логикалық бағдарламаны іске қосқанда HTML кестесі есебінің нәтижесін көре аламыз:

HTML кестесінің есебін шығару.

Шығын есебі мақсатында осы мысалда есепті пай иелеріне қажет болса электрондық пошта арқылы жіберуге болады немесе деректерді қосымша талдау және тарихи үрдістер үшін дерекқорға сақтауға болады.