इसके माध्यम से साझा किया गया


ट्यूटोरियल: एक दैनिक क्षमता रिपोर्ट बनाएं

Power Platform API का उपयोग Microsoft Dataverse डेटाबेस के साथ या उसके बिना आपके Microsoft Power Platform परिवेश से विभिन्न विवरण और मेटाडेटा निकालने के लिए किया जा सकता है. API का इस्तेमाल आज उपलब्ध विभिन्न क्लाइंट जैसे PowerShell द्वारा आंतरिक रूप से किया जाता है.

इस ट्यूटोरियल में, आप निम्न कार्य करना सीखते हैं:

  • एक Power Automate या Logic Apps कायेप्रवाह (Azure) या PowerShell स्क्रिप्ट बनाएँ जो Power Platform API से प्रमाणित हो.
  • अपने Microsoft Power Platform परिवेश एंडपॉइंट विवरण पुनः प्राप्त करने के लिए सूची परिवेश को कॉल करें.
  • वास्तविक उपभोग को पुनः प्राप्त करने के लिए क्षमता ऑब्जेक्ट के माध्यम से दोहराएँ.
  • उपयोग डेटा को प्रदर्शन के लिए तालिका में सहेजें.

इस परिदृश्य के एक उदाहरण के रूप में, एक ग्राहक अपनी क्षमता उपभोग पर एक हैंडल पाना चाह रहा है ताकि वे विभाग द्वारा अपनी कुल टैनेंट क्षमता के आवंटन को बेहतर ढंग से समझ सकें. इससे ग्राहक को कुछ आंतरिक लागत लेखांकन कार्य करने और प्रत्येक विभाग द्वारा कुल उपलब्ध क्षमता में से कितनी खपत की जा रही है, उसके आधार पर चार्ज बैक करने में सहायता मिलती है। यह ग्राहक परिवेश विवरण का उपयोग उस विभाग को बाहर करने के लिए कर रहा है जो प्रत्येक परिवेश का मालिक है.

कनेक्ट और चर सेटअप

प्रोग्रामेटिक रूप से कनेक्ट होने के लिए निम्नलिखित विवरण का उपयोग करें। Power Platform आप Azure अनुभव या PowerShell स्क्रिप्ट के बीच चयन कर सकते हैं।

कार्यप्रवाह बनाएँ और चर सेट करें

आरंभ करने के लिए, इस ट्यूटोरियल में हम Logic Apps वर्कफ़्लो का उपयोग करते हैं। Power Automate प्रवाह भी स्वीकार्य है, और किसी भी अन्य ऑर्केस्ट्रेशन इंजिन जो आपकी कंपनी स्वचालन के लिए उपयोग करना पसंद करती है. डेटा पुनः प्राप्त करने के लिए सभी कॉल RESTful API का उपयोग करते हैं, इसलिए REST का समर्थन करने वाला कोई भी टूल इस ट्यूटोरियल के साथ काम करता है।

Azure पोर्टल पर जाएं, और फिर एक नया लॉजिक ऐप बनाएं और उसे एक नाम दें:

एक तर्क ऐप बनाएं.

प्रोविज़निंग समाप्त होने के बाद, डिज़ाइनर का उपयोग करके कार्यप्रवाह को संपादित करें और दैनिक रूप से चलाने के लिए एक पुनरावृत्ति ट्रिगर सेट करें:

पुनरावृत्ति ट्रिगर सेट करें.

इसके बाद, हमें पांच चरों को आरंभीकृत करना होगा:

  • SPN-Id – यह आपकी सेवा प्रिंसिपल क्लाइंटआईडी है। इसका उपयोग बाद में सेवा प्रिंसिपल संदर्भ में प्रमाणीकरण करने के लिए किया जाता है। यदि आप उपयोगकर्ता नाम/पासवर्ड संदर्भ का उपयोग कर रहे हैं, तो आप इस चर को छोड़ सकते हैं.
  • DBCapacity – यह मेगाबाइट में उपभोग की गई डेटाबेस क्षमता के लिए एक फ़्लोट चर है।
  • FileCapacity – यह मेगाबाइट में उपभोग की गई फ़ाइल क्षमता के लिए एक फ़्लोट चर है।
  • LogCapacity – यह मेगाबाइट में उपभोग की गई लॉग क्षमता के लिए एक फ़्लोट चर है।
  • SimplifiedEnvironmentArray-Init – यह एक सरणी चर है जिसे हम कुछ पर्यावरण गुणों के साथ पॉप्युलेट करते हैं। यह अंतिम HTML तालिका रिपोर्ट आउटपुट को बहुत सरल करता है.

पाँच चर बनाएँ.

इसके बाद, हम Microsoft Entra API के साथ प्रमाणीकरण करते हैं और Power Platform API को कॉल करने के लिए टोकन प्राप्त करते हैं। यदि आपने अपना Microsoft Entra सेटअप पूरा नहीं किया है, तो प्रमाणीकरण - विरासत देखें।

इस ट्यूटोरियल में, हम अपनी सेवा प्रिंसिपल गुप्त मान को स्टोर करने के लिए एक महत्वपूर्ण वॉल्ट का उपयोग कर रहे हैं. इस तरह, एक IT व्यवस्थापक आपके कार्यप्रवाह के लिए इस मान को सुरक्षित रूप से उपलब्ध करा सकता है. इसके बाद इसे टोकन प्राप्त करने के लिए POST कॉल में डाला जाता है। Microsoft Entra

फिर हम 'पार्स JSON' क्रिया में इस JSON स्कीमा का उपयोग करके Microsoft Entra टोकन प्रत्युत्तर को टाइप किए गए ऑब्जेक्ट में पार्स करते हैं:

{
    "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 से प्राप्त बियरर टोकन के साथ प्राधिकरण हेडर का भी उपयोग करता है। यदि आपने उपयोगकर्ता नाम/पासवर्ड संदर्भ का उपयोग किया है, तो आप इस चरण पर भी उस बियर टोकन को दर्ज कर सकते हैं.

सभी वातावरणों और उनके मेटाडेटा को पुनः प्राप्त करने के लिए सूची वातावरण एंडपॉइंट का उपयोग करें।

फिर हम 'Parse JSON' क्रिया के साथ इस JSON स्कीमा का उपयोग करके Power Platform API प्रत्युत्तर को एक टाइप किए गए ऑब्जेक्ट में पार्स करते हैं:

{
    "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 प्रत्युत्तर को टाइप किए गए ऑब्जेक्ट में पार्स करें।

क्षमता ऑब्जेक्ट के माध्यम से पुनरावृत्त करें

यह ट्यूटोरियल का सबसे जटिल हिस्सा है. यहां हम सूची पर्यावरण प्रत्युत्तर में प्रत्येक पर्यावरण को पुनरावृत्त करने के लिए एक लूप के अंदर एक लूप का उपयोग करते हैं, और प्रत्येक पर्यावरण में क्षमता विवरणों की एक सरणी होती है जिसे हम पुनरावृत्त भी करते हैं। इससे हम अपनी क्षमता रिपोर्ट तालिका में प्रत्येक परिवेश पंक्ति के लिए आवश्यक जानकारी प्राप्त कर सकते हैं।

प्रत्येक के लिए तथा पार्सिंग

चलिए इसे चरण दर चरण करते हैं. सबसे पहले, हम Parse-List-Response आउटपुट के 'value' का उपयोग करके For Each नियंत्रण का उपयोग करते हैं:

Parse-List-Response आउटपुट के मान का उपयोग करके For Each नियंत्रण का उपयोग करें।

फिर हम इस एकल वातावरण को इस 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 आउटपुट की 'क्षमता' का उपयोग करके एक अन्य For Each नियंत्रण का उपयोग करते हैं। फिर हम इस JSON स्कीमा का उपयोग करके इसे एक टाइप्ड ऑब्जेक्ट में पार्स करते हैं:

प्रत्येक नियंत्रण के लिए Parse-CurrentItem आउटपुट की क्षमता का उपयोग करना।

अब हम पार्स-कैपेसिटी आउटपुट से कैपेसिटी टाइप परिसंपत्ति पर स्विच कंट्रोल का उपयोग कर सकते हैं. यह या तो 'डेटाबेस', 'फ़ाइल' या 'लॉग' का मान है। प्रत्येक स्विच केस के अंतर्गत, संबंधित चर में संबंधित 'वास्तविक धन परिसंपत्ति' कैप्चर करें. निम्नलिखित मामले में, आप देखेंगे कि हम डेटाबेस क्षमता को कैप्चर कर रहे हैं:

Parse-Capacity आउटपुट से CapacityType गुण पर स्विच नियंत्रण का उपयोग करें।

’प्रत्येक परिवेश के लिए’ लूप में अंतिम चरण के रूप में, अब हम रिपोर्ट में इस पंक्ति के लिए परिवेश विवरण को कैप्चर कर सकते हैं. चर नियंत्रण के लिए अपैंड का उपयोग करते हुए, निम्नलिखित JSON स्कीमा का उपयोग करें:

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

पर्यावरण विवरण कैप्चर करें.

रिपोर्ट तालिका बनाएं

बधाई हो, आपने अब इसे आसान हिस्से में कर दिया है! अब जब हमारे पास हमारी पूरी तरह से पॉपुलेटेड और सरलीकृत परिवेश क्षमता ऐरे है, तो हम इसे सारणीबद्ध प्रारूप में प्रदर्शित कर सकते हैं.

HTML तालिका कनेक्टर का इस्तेमाल करें

HTML तालिका बनाएं कनेक्टर को मान पास करें.

लॉजिक ऐप चलाने पर, हम अब HTML टेबल रिपोर्ट का आउटपुट देख सकते हैं:

HTML तालिका रिपोर्ट का आउटपुट.

लागत लेखांकन के प्रयोजनों के लिए इस उदाहरण में हितधारकों को रिपोर्ट को वैकल्पिक रूप से ईमेल किया जा सकता है, या डेटा को आगे के विश्लेषण और ऐतिहासिक रुझान के लिए डेटाबेस में सहेजा जा सकता है.