हाँ बिल्कुल! जैसा कि @ डेविड ब्राउन ने अपनी प्रतिक्रिया में कहा, यह वेब ब्राउज़र में कुछ लोड करने की बात है। आम तौर पर, इससे कोई फ़र्क नहीं पड़ता कि आपके डेटा स्रोत क्या हैं - SQL सर्वर या फ़्लैट फ़ाइलें, यह सब समान है। आप देख सकते हैं कि यह Power BI एंबेडेड खेल के मैदान में कैसा दिखता है।
आपके पास Power BI रिपोर्ट एम्बेड करने के दो तरीके हैं (या डैशबोर्ड या टाइल, यह अनिवार्य रूप से एक ही है):
-
परिसर में स्थापित Power BI रिपोर्ट सर्वर का उपयोग करें। एक रिपोर्ट एम्बेड करने के लिए, बस एक
iframe
add जोड़ें एक वेब पेज में और इसके स्रोत को रिपोर्ट के URL पर सेट करें, लेकिन?rs:embed=true
जोड़ें इसके लिए। हालाँकि, Power BI रिपोर्टिंग सर्वर काफी महंगा है। आपको सॉफ़्टवेयर आश्वासन, या Power BI Premium सदस्यताओं के साथ SQL Server Enterprise के लिए लाइसेंस की आवश्यकता है। इस मामले में लाभ यह हो सकता है कि डेटा को आधार पर रखा जाता है, क्योंकि कुछ मामलों में क्लाउड पर डेटा प्रकाशित करने की अनुमति नहीं दी जा सकती है या डेटा गोपनीयता को प्रमाणित और गारंटी देना मुश्किल हो सकता है। -
Power BI सेवा पर अपनी रिपोर्ट प्रकाशित करें (अर्थात Power BI वेब साइट पर ऑनलाइन)। इस परिदृश्य का लाभ इसकी कीमत है। आप एकल Power BI Pro खाते के साथ समाधान लागू कर सकते हैं, अर्थात $10 प्रति माह। नुकसान यह हो सकता है कि आपका डेटा Power BI सेवा (अर्थात आपके आंतरिक नेटवर्क के बाहर) के लिए पहुंच योग्य होना चाहिए और इसे एम्बेड करना थोड़ा अधिक जटिल है।
जब आप Power BI को अपने एप्लिकेशन में एम्बेड करते हैं, तो चुनने के लिए दो परिदृश्य होते हैं - उपयोगकर्ता डेटा का स्वामी होता है और एप्लिकेशन डेटा का स्वामी होता है। पहले वाले के साथ प्रत्येक उपयोगकर्ता को अपने स्वयं के Power BI Pro खाते की आवश्यकता होती है और एम्बेडेड रिपोर्ट देखने के लिए इसका उपयोग करता है। दूसरे परिदृश्य के साथ आपको केवल एक "मास्टर" Power BI Pro खाते की आवश्यकता है (इसे सेवा प्रिंसिपल के साथ प्रमाणीकरण एम्बेड करना भी संभव है, लेकिन इसे अभी के लिए सरल रखें)।
आपने उल्लेख नहीं किया है कि आप vb.net एप्लिकेशन वेब ऐप या डेस्कटॉप हैं। यहाँ एक बहुत अच्छा डेमो है कि कैसे Power BI को WPF एप्लिकेशन में एम्बेड किया जाए और यहाँ Microsoft के आधिकारिक नमूने हैं कि इसे वेब ऐप में कैसे करें।
मैं अधिक विवरण में बताऊंगा कि इसे डेस्कटॉप एप्लिकेशन में कैसे एम्बेड किया जाए, लेकिन वेब ऐप्स के साथ अनिवार्य रूप से समान है।
सबसे पहले आपको अपनी रिपोर्ट Power BI सेवा में प्रकाशित करनी होगी। इसके लिए डेडिकेटेड वर्कस्पेस का इस्तेमाल करना बेहतर होगा। सुनिश्चित करें कि प्रो खाता, जिसे आप अपने ऐप में "मास्टर" खाते के रूप में उपयोग करेंगे, के पास इस कार्यक्षेत्र के अधिकार हैं। अपने (शायद व्यवस्थापक) खाते का उपयोग करना एक अच्छा विचार नहीं है, क्योंकि इसमें आवश्यकता से अधिक विशेषाधिकार हैं। आप कर सकते हैं, लेकिन यदि $10/माह कोई समस्या नहीं है, तो उन्हें एक समर्पित खाते के लिए खर्च करें (या सेवा मूलधन का उपयोग करें)।
फिर आपको एक आवेदन पंजीकृत करना होगा। कुछ वर्णनात्मक ऐप नाम दर्ज करें, एप्लिकेशन प्रकार को नेटिव ऐप के रूप में सेट करें। उन अनुमतियों का चयन करें जो आपके आवेदन के लिए आवश्यक होंगी, अर्थात यदि केवल डेटा पढ़ेगा, तो उसे "पढ़ने और लिखने" की अनुमति न दें। या उन सभी को अनुदान दें। यह तुम्हारा निर्णय है। आवेदन को पंजीकृत करें और आपको जो गाइड मिलेगा उसे कॉपी करें। इसे "ऐप आईडी" या "क्लाइंट आईडी" कहा जाता है। आपको बाद में इसकी आवश्यकता होगी।
अगला कदम Azure AD के विरुद्ध अपने ऐप को प्रमाणित करना है। इसके लिए Azure Active Directory Authentication Library (ADAL) का उपयोग करें। ADAL को अपने प्रोजेक्ट में जोड़ें (उदाहरण के लिए NuGet का उपयोग करके) और एक्सेस टोकन प्राप्त करने के लिए निम्नलिखित कोड का उपयोग करें (कोड C# में है, क्योंकि मैंने कई वर्षों तक vb में नहीं लिखा था, लेकिन आपको इसका अनुवाद करने में कोई समस्या नहीं होनी चाहिए), लेकिन असाइन करें वह मार्गदर्शिका जो आपको clientId
. पर मिली है और masterAccountName
. के लिए मान प्रदान करें और masterAccountPassword
:
using Microsoft.IdentityModel.Clients.ActiveDirectory;
private static string redirectUri = "https://login.live.com/oauth20_desktop.srf";
private static string resourceUri = "https://analysis.windows.net/powerbi/api";
private static string authorityUri = "https://login.windows.net/common/oauth2/authorize";
private static string clientId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
private static AuthenticationContext authContext = new AuthenticationContext(authorityUri, new TokenCache());
// First check is there token in the cache
try
{
authenticationResult = authContext.AcquireTokenSilentAsync(resourceUri, clientId).Result;
}
catch (AggregateException ex)
{
AdalException ex2 = ex.InnerException as AdalException;
if ((ex2 == null) || (ex2 != null && ex2.ErrorCode != "failed_to_acquire_token_silently"))
{
throw new ApplicationException(ex.Message);
}
}
if (authenticationResult == null)
{
var uc = new UserPasswordCredential(masterAccountName, masterAccountPassword);
authenticationResult = authContext.AcquireTokenAsync(resourceUri, clientId, uc).Result;
}
अंत में authenticationResult.AccessToken
इसमें एक्सेस टोकन होगा जिसकी आपको आवश्यकता होगी। यदि आप उत्सुक हैं कि इसके अंदर क्या है, तो https://jwt.io/ पर जाएं और इसे डीकोड करने के लिए पेस्ट करें।
रिपोर्ट का embedUrl
. प्राप्त करने के लिए समूह Power BI REST API में रिपोर्ट प्राप्त करें कॉल करें . वास्तविक groupId
providing प्रदान करते हुए इस तरह के कोड का उपयोग करें (यह Newtonsoft.Json का उपयोग करता है) (workspaceId), reportId
(आप उन्हें अपनी रिपोर्ट के URL से प्राप्त कर सकते हैं, जब यह वेब ब्राउज़र में दिखाया जाता है) और accessToken
:
string powerBIDatasetsApiUrl = $"https://api.powerbi.com/v1.0/myorg/groups/{groupId}/reports/{reportId}";
var request = WebRequest.Create(powerBIDatasetsApiUrl) as HttpWebRequest;
request.KeepAlive = true;
request.Method = "GET";
request.ContentLength = 0;
request.ContentType = "application/json";
request.Headers.Add("Authorization", $"Bearer {accessToken}");
using (HttpWebResponse httpResponse = request.GetResponse() as System.Net.HttpWebResponse)
{
using (StreamReader reader = new System.IO.StreamReader(httpResponse.GetResponseStream()))
{
string responseContent = reader.ReadToEnd();
var responseJson = JsonConvert.DeserializeObject<dynamic>(responseContent);
return responseJson["embedUrl"];
}
}
यहाँ मुश्किल हिस्सा आता है। आपको ऊपर दिए गए कोड के साथ प्राप्त url का उपयोग करने के लिए Power BI JavaScript क्लाइंट की आवश्यकता है। सबसे आसान तरीका है ReportLoader.html
. प्राप्त करना , ReportLoader.js
और powerbi.js
उपरोक्त डब्ल्यूपीएफ नमूने से। आप इन फ़ाइलों के बारे में विवरण यहाँ पढ़ सकते हैं, लेकिन सामान्य तौर पर HTML फ़ाइल में एक खाली <div>
. होता है , जहां रिपोर्ट लोड की जाएगी, और आप ReportLoader.js
में कोड को कॉल करते हैं , कुछ पैरामीटर (जो रिपोर्ट, एक्सेस टोकन, एक्सेस टोकन प्रकार, आदि) पास करते हैं, और यह आपके लिए हैवी लिफ्टिंग करने के लिए Power BI JavaScript क्लाइंट को कॉल करेगा।
पैरामीटर, जो आप लोडर कोड को पास करेंगे, इस तरह के कोड के साथ:
var parameters = new object[] { embedUrl, accessToken, reportId, "report" /* or "dashboard" or "tile"*/, 0 /* 0 - AAD, 1 - Embed */, string.Empty };
webBrowser.Document.InvokeScript("LoadEmbeddedObject", parameters);
webBrowser
एक वेब ब्राउज़र घटक है, जिसमें आप ReportLoader.html
load लोड करते हैं . embedUrl
और accessToken
वे मान हैं, जिन्हें आपने पहले हासिल किया था, रिपोर्ट की आईडी, एम्बेड तत्व प्रकार (क्या यह रिपोर्ट, टाइल या डैशबोर्ड है), एक्सेस टोकन प्रकार (क्या यह एएडी है, जिसे हमने इस मामले में उपयोग किया है, या एम्बेड करें) और अभी के लिए छोड़ दें अंतिम एक खाली (इसके बारे में अधिक जानकारी के लिए एम्बेड कॉन्फ़िगरेशन विवरण देखें)। AAD
. के बीच का अंतर और Embed
टोकन यह है कि एम्बेड टोकन विशेष तत्व (जैसे रिपोर्ट) के लिए मान्य हैं, जबकि एएडी टोकन का उपयोग कई अलग-अलग कॉलों में स्वयं को प्रमाणित करने के लिए किया जा सकता है। इसका मतलब है कि एम्बेड टोकन का उपयोग करना सुरक्षित है, क्योंकि उनका उपयोग केवल इस विशेष रिपोर्ट को एम्बेड करने के लिए किया जा सकता है और अन्य आरईएसटी एपीआई कॉल करने के लिए उपयोग नहीं किया जा सकता है। ध्यान रखें, कि यह एक्सेस टोकन क्लाइंट साइड पर दिखाई देता है (यह जावास्क्रिप्ट कोड में है)। यदि आप एम्बेड टोकन का उपयोग करना चाहते हैं, तो GenerateTokenInGroup को कॉल करने के लिए सर्वर साइड पर AAD टोकन का उपयोग करें, लेकिन इसके लिए इस कार्यक्षेत्र (अर्थात Power BI प्रीमियम या Power BI एम्बेडेड) को निर्दिष्ट एक समर्पित क्षमता की आवश्यकता होती है और क्षमता के बिना, आपका प्रो खाता सीमित है टोकन की संख्या, जिनका उपयोग आप केवल विकास के लिए कर सकते हैं।
उसके बाद, आपकी रिपोर्ट webBrowser
. में सफलतापूर्वक लोड हो जानी चाहिए ।
मैं आपको टेड पैटिसन के साथ पावर बीआई एंबेडिंग के साथ ऐप-ओनली ऑथेंटिकेशन का उपयोग करके यह वीडियो देखने की भी सलाह दूंगा।